PDA

View Full Version : ماندن اطلاعات فیلد ها پس از Submit کردن و خطا



PHPOnline
چهارشنبه 20 خرداد 1394, 14:00 عصر
سلام
یک فرم ثبت نام مثل همین سایت برنامه نویس داریم ، و فیلد های نام و یوزر و ... رو پر می کنیم و در آخر کد کپچا رو اشتباه می زنیم .
صفحه دوباره لود میشه و خطا رو به ما میگه ، اما اطلاعاتی که وارد کرده بودیم هنوز هستند و پاک نشده فرم ما

این به چه شکل کار می کنه ؟؟

fatima-php
چهارشنبه 20 خرداد 1394, 14:06 عصر
<input name="username" type="text" value="<?php echo (isset($_POST['username']) ? htmlentities($_POST['username'], ENT_QUOTES, 'utf-8') : ''); ?>" />

m.esmaeilzadeh
چهارشنبه 20 خرداد 1394, 14:07 عصر
اتفاقا این یک مزیت است که مثلا اگر فرم شما 50 تا فیلد داره دوباره کاربر از ابتدا شروع به پر کردن فیلدها نکنه و صرفا اونهایی رو که خطا داده تصحیح کنه !!!

PHPOnline
چهارشنبه 20 خرداد 1394, 14:13 عصر
اتفاقا این یک مزیت است که مثلا اگر فرم شما 50 تا فیلد داره دوباره کاربر از ابتدا شروع به پر کردن فیلدها نکنه و صرفا اونهایی رو که خطا داده تصحیح کنه !!!
بله ، به خاطر همین مزیت می خوام استفاده کنم دوست عزیز

PHPOnline
چهارشنبه 20 خرداد 1394, 14:18 عصر
<input name="username" type="text" value="<?php echo (isset($_POST['username']) ? htmlentities($_POST['username'], ENT_QUOTES, 'utf-8') : ''); ?>" />
ممنون ، ولی نشد

fatima-php
چهارشنبه 20 خرداد 1394, 14:23 عصر
کد کامل فرمتون رو بگذارین. همچنین کد صفحه مقصد رو.

PHPOnline
چهارشنبه 20 خرداد 1394, 14:34 عصر
<form action="h.php" method="post" >
<div>
<label>نام</label>
<br><br>
<input type="text" name="fname" value="<?php echo (isset($_POST['fname']) ? htmlentities($_POST['fname'], ENT_QUOTES, 'utf-8') : ''); ?>" required />

</div>
<div>
<label>موبایل</label>
<br><br>
<input type="text" name="m" value="<?php echo (isset($_POST['m']) ? htmlentities($_POST['m'], ENT_QUOTES, 'utf-8') : ''); ?>" required/>




<input type="submit" name="submit" value="Save"/>
</form>








<?php
if(isset($_POST['fname'],$_POST['m'])) {


$fname = htmlspecialchars(mysql_real_escape_string($_POST['fname']));
$M = htmlspecialchars(mysql_real_escape_string($_POST['m']));
if(!is_numeric($M)) {
Redirect('index.php?e=mobile');
return;
}


$result = mysql_query("INSERT INTO `test` (`fName`, `Mo`)
VALUES ('$fname','$M');");
}
if($result) {
Redirect('index.php?s=sucs');

}

m.esmaeilzadeh
چهارشنبه 20 خرداد 1394, 14:51 عصر
من فکر کردم میخوای از کدی که داری حذفش کنی و دیگه نمایش نده !

بله مقادیر POST دوباره در اتریبیوت value اینپوت assign یا پرینت کنید ...

fatima-php
چهارشنبه 20 خرداد 1394, 14:51 عصر
خوب اینجا معلومه جواب نمیده چون شما دارین کاربر رو به یک صفحه دیگه میفرستین. بهترین کار اینه که توی صفحه h.php مقادیر دریافت شده از کاربر رو توی سشن بگذارین و توی صفحه فرم، بجای ['POST['fname_$ از ['SESSION['fname_$ و... استفاده کنید.

PHPOnline
چهارشنبه 20 خرداد 1394, 14:53 عصر
خوب اینجا معلومه جواب نمیده چون شما دارین کاربر رو به یک صفحه دیگه میفرستین. بهترین کار اینه که توی صفحه h.php مقادیر دریافت شده از کاربر رو توی سشن بگذارین و توی صفحه فرم، بجای ['POST['fname_$ از ['SESSION['fname_$ و... استفاده کنید.
کاربر رو به همون صفحه ای که فرم رو ارسال کرده می فرستم با استفاده از header
راه دیگری برای برگشت به اون صفحه هست ؟

fatima-php
چهارشنبه 20 خرداد 1394, 14:57 عصر
روشی که من گفتم برای وقتی هست که اطلاعات فرم برای همون صفحه ارسال میشه. برای مواردی که صفحه مقصد فرم فرق میکنه، با سشن کار کنید و بعد از ثبت موفقیت آمیز فرم، سشن رو خالی کنید. اینطوری اگه کاربر از صفحه خارج بشه ولی مرورگر رو نبنده و بعداً دوباره وارد صفحه بشه، باز هم فرم با آخرین مقادیری که ثبت کرده بوده پر میشه.

PHPOnline
چهارشنبه 20 خرداد 1394, 15:14 عصر
روشی که من گفتم برای وقتی هست که اطلاعات فرم برای همون صفحه ارسال میشه. برای مواردی که صفحه مقصد فرم فرق میکنه، با سشن کار کنید و بعد از ثبت موفقیت آمیز فرم، سشن رو خالی کنید. اینطوری اگه کاربر از صفحه خارج بشه ولی مرورگر رو نبنده و بعداً دوباره وارد صفحه بشه، باز هم فرم با آخرین مقادیری که ثبت کرده بوده پر میشه.

ممنون از شما ، به درستی کار کرد .
می خواستم بدونم که کدام روش بهتر هست ؟ پردازش فرم در یک صفحه دیگر یا در همان صفحه ؟

fatima-php
چهارشنبه 20 خرداد 1394, 15:21 عصر
بستگی به نیازتون داره. اگه توی یک صفحه کارتون راه میفته دلیلی نداره فایلهای متعدد درست کنید.