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

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

کد:
کد php:
<?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> 

پاسخ
ایجاد موضوع جدید   پاسخ به موضوع  

کاربرانِ درحال بازدید از این موضوع:   1 مهمان