PHP التحقق من صحة الأشكال المتعددة وإعادة التوجيه
-
09-06-2019 - |
سؤال
أملك buy.php
مع استمارة حيث تدخل العناصر والكمية وبيانات الشحن وما إلى ذلك.
عند النقر فوق زر الإرسال, ، فإنه ينشر مرة أخرى إلى buy.php
($_SERVER['PHP_SELF'])
ويقوم ببعض التحقق من صحة البيانات.
إذا كانت هناك حقول مفقودة أو أخطاء، فسيتم تمييزها.إذا كان كل شيء صحيحًا، فأنا أحفظه $_POST
إدخال المعلومات $_SESSION
المتغيرات، ثم قم بعمل header('Location: check.php')
, حيث أقوم بعرض البيانات حتى يتمكن المشتري من التحقق من المعلومات مرة أخيرة قبل الشراء فعليًا.
الآن، إذا أنا في check.php
واضغط على زر العودة إلى buy.php
حتى أتمكن من تغيير الأشياء، يسألني المتصفح عما إذا كنت أرغب في إعادة إرسال بيانات POST.أحاول تجنب ذلك.
هل لدى أي شخص أي نصيحة جيدة أو ممارسات جيدة للتحقق من صحة PHP Multiform؟
أيضًا، إذا كان لدي صفحات n ليملأها المستخدم، buy.php, buy2.php, ... buyn.php
قبل check.php هل ستظل نفس الأفكار قائمة؟
المحلول
يمكنك إجراء إعادة توجيه إلى buy.php بعد الحفظ في كائن الجلسة، والذي يقوم بعد ذلك بإعادة التوجيه إلى الخادم check.php، وهذا يعني أنه عندما ينقر المستخدم مرة أخرى، فإنه سيعود إلى طلب GET وليس طلب POST
نصائح أخرى
نعم - أتفق مع ما ورد أعلاه.أنا دائما أفعل redir
بعيدًا عن المشاركة الأخيرة، لذا فإن النقر مرة أخرى يؤدي إلى ارتدادها مرة أخرى دون حدوث هذا الخطأ أو إعادة الإرسال.كما أنه يتجنب المضاعفات.يمكنك دائمًا وضع علامة على redir
رابط الصفحة مع أ ?m
أو &m
(أي.: page.php?m
) ويكون هذا في أعلى الصفحة:(يستخدم elseif
هناك بعد)
if (isset($_GET['m'])) {
echo 'order placed.';
}
else {
//...
}
يمكنك الحصول على كل ذلك في صفحة واحدة أيضًا.فقط قم بتسمية أزرار الإرسال submit1
, submit2
, ، يحب:(ضع في اعتبارك أنه إذا كنت تستخدم صورة للإرسالات، فإنها تصبح $_POST['submit1_x']
:)
if (isset($_POST[submit1]) {
//validate + save session data from form1
//display form 2
} else if(isset($_POST[submit2])) {
//validate + save session data from form2
//display form 3
} else {
//display first form
//<input type="submit" name="submit1" value="Continue">
}