نمایش نتایج 1 تا 5 از 5

نام تاپیک: جلوگیری از اضافه شدن رکورد با هر رفرش

  1. #1

    Question جلوگیری از اضافه شدن رکورد با هر رفرش

    سلام،

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

    حالا من برای اینکه با هربار رفرش صفحه یک رکورد مجدد اضافه نشه مشکل دارم یعنی اینطوره که هربار صفحه رو رفرش میکنم با دکمه ی مثلاF5 مجددا به جدول رکورد اضافه میشه!

    من اینطوری کردم :
     

    if($row>0) {
    $_POST=array(); header('Location:adds.php'); echo "ثبت شد."; }
    }

    مشکل رفع شد ولی دستور echo نمایش داده نمیشه!
    (adds.php' منظور خود فایل هست.)

    من از unset($_POST); هم استفاده کردم ولی بازم مشکل اضافه شدن با هر رفرش حل نشد...

  2. #2
    کاربر دائمی آواتار Reza1607
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    يه جايي تو مشهد
    پست
    969

    نقل قول: جلوگیری از اضافه شدن رکورد با هر رفرش

    خوب مسلمه که دستور echo اجرا نشه آخه شما با استفاده از دستور header برنامه رو به یک فایل دیگه فرستادین

  3. #3

    نقل قول: جلوگیری از اضافه شدن رکورد با هر رفرش

    برنامه رو به یک فایل دیگه فرستادین
    یک فایل دیگه نیست خود فایل ه به خود همین فایل لینک دادم.
    خب به نظرشما باید چکار کنم کههم با هر رفرش رکورد اضافه نشه و هم من بتونم پیام ثبت شدند رو نمایش بدم؟


  4. #4

    نقل قول: جلوگیری از اضافه شدن رکورد با هر رفرش

    راههای زیادی برای رسیدن به خدا وجود داره: avoid php form resubmit
    یه راه ابتکاری این میتونه باشه: یک فیلد اجباری رو بگیرید مثل نام. آرایه POST_$ رو serialize کنید. حالا قبل از INSERT، با یه کوئری، سطرهایی که اون فیلد اجباری رو دارند بگیرید. دونه دونه serialize کنید و با فرم مقایسه کنید. میتونید Serialize نکنید و یه سری فیلدها رو مقایسه کنید. مثلا اینجوری:
    $name = mysql_real_escape_string($_POST['name']);
    $phone = mysql_real_escape_string($_POST['phone']);

    $select = mysql_query("SELECT * FROM table WHERE name='$name' OR phone='$phone'");
    if(mysql_num_rows($select) == 0) {
    // INSERT DATA
    } else {
    while($row = mysql_fetch_assoc($select)) {
    if($row['age'] == $_POST['age'] && $row['gender'] == $_POST['gender'] /* && .... */)
    break;
    else
    // INSERT DATA
    }
    }

    یک میلیون روش جورواجور واسه این کار وجود داره. مسلما با جاوااسکریپت راحتتر میتونید این کار رو بکنید.

  5. #5

    نقل قول: جلوگیری از اضافه شدن رکورد با هر رفرش

    اگه منظور شمارو خوب متوجه شده باشم ,باید از تابع isset() استفاده کنی
    <?php
    //اگه فرم ارسال شده کدها اجرا میشن
    if(isset($_POST['setform'])){
    cod........
    .....
    }
    ?>

    البته اگه یک فیلد مخفی بزاری بهتره برای اینکه اگه کاربر از اینتر استفاده کرد بازم کدت اجرا بشه


    کد HTML:
    <input type='hidden' name='setform' value=''>

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •