الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

اين الخطأ ؟

مغلق
بدأه apt في 21 أبريل 2005 · 5 رد · 434 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم،

لدي ملف step1.php :

<?php
session_start();
if ($send == 'ok')
{
	$_SESSION['user'] = $_POST['user'];
	$_SESSION['pass'] = $_POST['pass'];
	$_SESSION['cpass'] = $_POST['cpass'];
	$_SESSION['email'] = $_POST['email'];
	unset($_SESSION['step']);
                $step = '2';
	$_SESSION['step'] = $step;
	header('Location: register.php?s='.strip_tags($PHPSESSID));
	}
}
else
{?>
	<form method="POST" name="form"  action="<?=$_SERVER['PHP_SELF'];?>?s=<?=strip_tags($PHPSESSID);?>">
	<INPUT TYPE="hidden" NAME="send" value="ok">
	<table border="0" cellspacing="1" width="81%">
        <tr>
        <td width="45%">User (3-10 Car)</td>
        <td width="70%"><input type="text" name="user" size="20" value="<? if (isset($_POST['user'])) echo $_POST['user'];?>">
        </td>
        </tr>
	<input type="submit" value="الخطوة التالية" name="B1">
        </table>
	</form>
	<?
	}
?>

عند تحقق الشرط ($send == 'ok') اقوم بتسجيل الخطوة التالية step في الجلسة هكذا :

$_SESSION['step'] = $step;
header('Location: register.php?s='.strip_tags($PHPSESSID));

ولكن عند الرجوع الى ملف register.php :

<?php
session_start();
error_reporting(0);

if (isset($_SESSION['user'])&& !empty($_SESSION['user']) && !isset($_POST['step']) && empty($_POST['step']) && !isset($_SESSION['step']) && empty($_SESSION['step']))
{
	echo 'ليس لديك الصلاحية لدخول هذه الصفحة.'; 
	$_SESSION = array();
	session_unset();
	session_destroy();
	exit;
}
else 
{
	$step = isset($_SESSION['step']) ? isset($_SESSION['step']) : isset($_POST['step']);
	echo "step = ".$step."<br>";
	switch($step) {
	case '1': echo "step1 = ".$step.";<br>"; include_once 'step1.php'; break;
	case '2': echo "step2 = ".$step.";<br>"; include_once 'step2.php'; break;
	case '3': echo "step3 = ".$step.";<br>"; include_once 'step3.php'; break;
	default : echo "stepD = ".$step.";<br>"; include 'templates\default\agree.inc'; break;

	}

}

ولكن عند اخراج المتغيرة step :

احصل على القيمة : 1

عوضا عن 2 التي سجلتها في الجلسة من قبل.

ما اصل هذا الخطأ ؟


?>

تم تعديل هذه المشاركة بواسطة apt في 21 أبريل 2005 في 23:15

#2

السلام عليكم

لسهولة التحديد يرجى كتابة ما الخطأ الذى يظهر لك حتى نركز المراجعة فى جزء واحد أو نفهم طريقة سير البرنامج بسهولة

" وما توفيقى إلا بالله عليه توكلت وإليه أنيب "
-------------------------------------------------
قل : " لا حول ولا قوة إلا بالله "
-------------------------------------------------

#3

شكرا لك اخي الفاروق على الرد.

الخطأ لا يكمن في الكود وانما في النتائج.

المشكلة كانت تتمثل في انه عند الضغط على زر الإرسال فانه يتم التوجه الى الملف register.php

فتم تغيير الكود ليصبح كالتالي ويرجع الى نفس ملف step1.php :

<form method="POST" name="form"  action="step1.php?s=<?=strip_tags($PHPSESSID);?>">

وبالتالي يمر على الشرط "

if ($send == 'ok')

ولكن هناك مشكلة أخرى :

كيف استطيع استرجاع قيم النموذج FORM بطريقة $_POST لاعادة اظهارها في حقول الـ Form عند حصول خطأ في كتابة المعلومات ؟

شكراً.

#4

اخي العزيز قرأت موضوعك عدة مرات ولم استطع الوصول لمعرفة ماذا تريد فيا ليت تكتب فكرة السكربت ونحاول نضع لك حلول

بالنسبة لاسترجاع قيم النموذج عند كون المعلومات خاطئة ادرج نموذج واجعل القيمة value هكذا

<input type=text name=user value='<?echo $username?>'>

460.gif

#5

اخي المتميز،

شكرا لك على الرد.

ما نصحتني بالقيام به هو موجود في الكود المرفق في المشاركة وهذا مقتطف منه :

<td width="70%">
<input type="text" name="user" size="20" value="<? if (isset($_POST['user'])) echo $_POST['user'];?>">
</td>

ما اريد القيام به هو انجاز طريقة تسجيل من 3 مراحل بحيث لا يظهر في الرابط الا الملف register.php.

ولهذا ضمنت الملفات الثلاث :

step1.php - step2.php - step3.php

في الملف الرئيسي وهو كما اسلفت register.php والذي ينقصني فيه كود الزامية التاكد من عدم وجود جلسة مفتوحة وان كان ذلك فيجب اتلافها قبل استكمال التسجيل.

عند المرحلة الاولى ننادي الملف step1.php والذي يظهر لنا النموذج form.

عند الضغط على زر الإرسال يتوجه بنا المتصفح الى نفس الملف ويجب التاكد من عدم وجود الـ user والـ email في القاعدة والا تحصلنا على اخطاء ومن ثم يجب العودة الى الملف step1.php عبر الملف الرئيسي register.php كما اسلفت الذكر

وفي حالة تمام الامور ننتقل الى الخطوة التالية رقم 2

وهكذا الى ان يتم الانتهاء من عملية التسجيل.

تم تعديل هذه المشاركة بواسطة apt في 25 أبريل 2005 في 01:53

#6

أخي العزيز إذا كنت تود الاحتفاظ بالقيمة لعدة صفحات :

اعمل متغير مخفي وأدرج فيه القيمة ، مثلا في صفحة البداية لدي مربع نص اسمه username لكي تحتفظ فيه في الصفحة التالية ( التي طبعا فيها نموذج form ) داخل النموذج اكتب

<input type=hidden name=username value="<?echo $username?>">

وأيضاً في كل صفحة تنتقل إليها اعمل لها كذا ، وبالتالي تحتفظ بالمتغير في أكثر من صفحة ...

460.gif

هذا الموضوع مغلق.

مواضيع مشابهة