جلوگیری از ارسال دوباره داده های فرم

PHP

توسط mirbehnam در 4 سال پیش
0 482 1 4 سال پیش
mirbehnamreza-irdev
0

با سلام من یک فرم ساختم که یک متنو بعد از گلیک به پی اچ پی ارسال می کنه حالا مثلا کاربر وقتی که متنو ارسال کرد می تونه با reload صفحه متنو دوباره ارسال کنه حالا اگه هزار بار هم ری لود کنه .... حالا می خواستم ببینم ایا کدی هست داخل پی اچ پی که بررسی کنه ببینه ایا دکمه ای در فرم ارسال فشرده شده که مطالب را ثبت کند ممنون

0

سلام سوال خیلی خوبی پرسیدید و راه حل های زیادی هم داره مثلا وقتی کد مورد نظر اجرا شد کوکی بسازیم و متنی توش ذخیره کنیم و هنگام ارسال دوبارهکوکی ها رو چک کنیم اگر کوکی مرد نظر وجود داشت پس کد اجرا شده و از اجرای دوباره کد جلوگیری میشه. یا میشه بعد از ارسال فرم صفحه رو redirect کرد به صفحه دیگه

کد:

<?php
session_start();

//set form vars ahead of time so you can pre-populate the value attr on post
$form = array(
    'name' => '',
    'email' => ''
);

if(!empty($_POST))
{
    //do some kind of validation...
    $errors = array();
    if(trim($_POST['name']) == '')
        $errors[] = 'Please enter your name';

    if(empty($errors))
    {
        $_SESSION['message'] = 'Thank you for participating';
        header('location: /form.php'); // same file
        exit;
    }
    else
    {
        // set the form vars to the post vars so you don't lose the user's input
        $form['name'] = $_POST['name'];
        $form['email'] = $_POST['email'];

        $message = '<span style="color:red">';
        foreach($errors AS $error)
        {
            $message .= $error."<br />";
        }
        $message .= '</span>';
        $_SESSION['message'] = $message;
    }
}

if(isset($_SESSION['message']))
{
    echo $_SESSION['message'];
    unset($_SESSION['message']);
}
?>
<form id="some_form" action="form.php" method="post">
    <fieldset>
        <label for="name">Name</label> <input type="text" name="name" value="<?php echo $form['name']; ?>" />
        <br /><br />
        <label for="email">Email</label> <input type="text" name="email" value="<?php echo $form['email']; ?>" />
        <br /><br />
        <input type="submit" name="submit" value="Submit" />
    </fieldset>
</form>

خوش آمدید

برای طرح سوال، ایجاد بحث و فعالیت در سایت نیاز است ابتدا وارد حساب کاربری خود شوید. در صورتی که هنوز عضو سایت نیستید میتوانید در عرض تنها چند ثانیه ثبت نام کنید.

لطفا ابتدا لاگین کنید