أنا أكافح لفهم إجابة على SO . إنه حل يمنع معالجة النموذج مرتين (إذا نقر شخص ما على زر "إرسال" مرتين على التوالي).
يقوم بإنشاء رمز مميز فريد وتخزينه في النموذج. لذلك إذا تم النقر على زر الإرسال مرتين ، فسيتم تجاهل الإرسال المكرر.
الرمز هو
// form.php
<?php
// obviously this can be anything you want, as long as it is unique
$_SESSION['token'] = md5(session_id() . time());
?>
<form action="foo.php" method="post">
<input type="hidden" name="token" value="<?php echo $_SESSION['token'] ?>" />
<input type="text" name="bar" />
<input type="submit" value="Save" />
</form>
// foo.php
if (isset($_SESSION['token']))
{
if (isset($_POST['token']))
{
if ($_POST['token'] != $_SESSION['token'])
{
// double submit
}
}
}
يوافق الجميع على أنه الحل الصحيح ، لكنني لا أفهم لماذا يتغير $ _SESSION ['token'] في المرة الثانية التي نضغط فيها على زر الإرسال.
شكرا لك على مساعدتك