• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
حذف متغییرها از حافظه
#1
با سلام
من چند وقتی هست که نتونستم این مشکل رو حل کنم
وقتی عملیاتی مثل Insert تو دیتابیس رو انجام میدم و با استفاده از form اطلاعاتی رو ارسال میکنم بعد اینکه اطلاعات ذخیره میشه با f5 زدن که صفحه رفرش میشه دوباره اطلاعات ذخیره میشه من از unset استفاده کردم ولی تغییری حاصل نشده
کد پی‌اچ‌پی:
unset($_POST['btnSave']); 
لطفا اگر راهی داره که بعد از ذخیره کردن بدون اینکه از تابع header استفاده کنم که متغییر هام از بین برن بهم بگین تا مشکلم رو رفع کنم
ممنون
  پاسخ
تشکر شده توسط :
#2
در این مواقع مرورگر تائیده برای resubmit کردن میگیره.

راه حل ها:
1. ریدایرکت
2. توکن
3. ثبت اطلاعات از طریق ایجکس
به یـزدان که گر ما خرد داشتیم
کجـا این سر انجـام بد داشتیم؟
  پاسخ
تشکر شده توسط : Goback ضحاک
#3
4. form confirm قبل از submit کردن
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط : Goback ضحاک
#4
نقل قول:راه حل ها:
1. ریدایرکت
2. توکن
3. ثبت اطلاعات از طریق ایجکس
4. form confirm قبل از submit کردن
از همه اینها فکر کنم فقط ریدایرکت کردن رو بلد باشم که فکر کنم استفاده از header(); باشه
یه موضوعی میمونه اونم اینکه وقتی btn کلیک شد و یه سری دستورات انجام شد ، یه سری مقادیر تولید میشن که من نمیخوام با رفرش شدن یا ریدایرکت کردن اونها از بین برن ( از سشن هم برای نگه داری متغییرها نمیخوام استفاده کنم ) ، یعنی هدفم اینه که اینها با اتمام عملیات یه کاری کنیم که دیگه اون دستورات اجرا نشن از دوباره
من از روش زیر برای اجرای دستوراتم استفاده کردم ، لطفا هر کدوم از راه حل ها که به کار من میان رو یه راهنمایی کنید.
کد پی‌اچ‌پی:
<?php
if ( isset($_POST['btnSave']) ) {
 
دستورات
}
?>
<form action="" metod="post">
          <input type="text" name="txtText" />
          <input type="submit" name="btnSave" />
</form> 
  پاسخ
تشکر شده توسط :
#5
سلام،
من فک میکنم راحت‌ترین راه اینه که از سشن استفاده کنی.
دلیل خاصی داره که نمی‌خوای از سشن استفاده کنی ؟
غایب
  پاسخ
تشکر شده توسط :
#6
2. توکن
کد پی‌اچ‌پی:
<?php
session_start
();
if ( isset(
$_POST['btnSave'], $_POST['form_token'], $_SESSION['form_token']) ) {
    if( 
$_POST['form_token']== $_SESSION['form_token'] ){
         
دستورات
    
}
}
$form_token md5(session_id() . time());
$_SESSION['form_token'] = $form_token;
?>
<form action="" metod="post">
          <input type="text" name="txtText" />
          <input type="submit" name="btnSave" />
          <input type="hidden" name="form_token" value="<?php echo $form_token?>" />
</form> 

3. ثبت اطلاعات از طریق ایجکس
کد پی‌اچ‌پی:
<?php
if ( isset($_POST['btnSave']) ) {
 
دستورات
}
?>
<form action="" metod="post">
          <input type="text" name="txtText" />
          <input type="submit" name="btnSave" />
</form> 
<script>
$(document).ready(function() {
    $('form').submit(function(event) {
    event.preventDefault();
        var formData = $('form').serialize();
        $.ajax({
            type        : 'POST',
            url         : 'index.php',
            data        : formData
        })
    });
});
</script> 

4. form confirm قبل از submit کردن
کد پی‌اچ‌پی:
<form action="" metod="post" onsubmit="return confirm('Do you want to submit the form?');">
          <
input type="text" name="txtText" />
          <
input type="submit" name="btnSave" />
</
form
به یـزدان که گر ما خرد داشتیم
کجـا این سر انجـام بد داشتیم؟
  پاسخ
تشکر شده توسط : Y.P.Y moh3nmir ضحاک


پرش به انجمن:


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