PDA

View Full Version : جلوگيري ازپاك شدن اطلاعات



bps20590
دوشنبه 21 مرداد 1387, 22:28 عصر
براي اينكه اطلاعات وارد شده براي عضويت درسايت هنگامي كه كاربر دكمه ثبت رامي زند پاك نشوند چكار بايد كرد

امید امرایی
سه شنبه 22 مرداد 1387, 00:51 صبح
کاره خاصی لازم نیست.
فیلد ها رو با همونا دوباره مقدار دهی کنید



$username = isset($_POST['username'])?$_POST['username']:'';
echo '<input name="username" value="'.$username.'">';

yaqubian
سه شنبه 22 مرداد 1387, 08:33 صبح
دوست عزیز
به نظرتون این کار منطقیه؟ من که فکر نمی کنم. این چیزی که شما فرمودید بیشتر در مواقعی اتفاق می افته که اطلاعات وارد شده توسط کاربر رو VALIDATE می کنید می بینید اشتباه و دوباره اون رو به همون صفحه ای که اطلاعات رو وارد می کرده redirect می کنید. که می شه با یه دستور javascript اطلاعات رو نیگه داشت و فقط فیلدهای کلمه عبور خالی می شن.
موفق باشید

امید امرایی
سه شنبه 22 مرداد 1387, 13:35 عصر
بله درسته . حق با شماست

paksar
سه شنبه 22 مرداد 1387, 19:02 عصر
دوست عزیز
به نظرتون این کار منطقیه؟ من که فکر نمی کنم. این چیزی که شما فرمودید بیشتر در مواقعی اتفاق می افته که اطلاعات وارد شده توسط کاربر رو VALIDATE می کنید می بینید اشتباه و دوباره اون رو به همون صفحه ای که اطلاعات رو وارد می کرده redirect می کنید. که می شه با یه دستور javascript اطلاعات رو نیگه داشت و فقط فیلدهای کلمه عبور خالی می شن.
موفق باشید

سلام آقای یعقوبیان

میشه یه کار عملی هم داشته باشیم


می شه با یه دستور javascript اطلاعات رو نیگه داشت و فقط فیلدهای کلمه عبور خالی می شن.

یه اسکریپت که همچین کاری رو میکنه

ممنون از شما

yaqubian
سه شنبه 22 مرداد 1387, 19:25 عصر
دوست عزیز جناب آقای پاکسار
خدمت گلتون عرض کنم که فرض کنید دو تا صفحه دارید. یکی به اسم signup.php و دومی suc_signup.php که وقتی کاربر صفحه اول رو submit می کنه می ره به صفحه دوم.

کد صفحه اول:

<div align="center">
<form action="suc_signup.php" method="post" onSubmit="return validate(this)">
<input type=hidden name=todo value=post>
<table border="0" width="430" id="table8">
<tr>
<td width="162">&nbsp;</td>
<td width="258">&nbsp;</td>
</tr>
<tr>
<td colspan="2">
<font color="#800000" size="2"><b>Registration Form</b></font>
</td>
</tr>
<tr>
<td colspan="2">&nbsp;</td>
</tr>
<tr>
<td align="right" width="162">
<font color="#800000">*</font><b>First Name:</b>
</td>
<td width="258">
<input type="text" name="fname" size="30" dir="ltr">
</td>
</tr>
<tr>
<td align="right" width="162">
<font color="#800000">*</font><b>Last Name:</b>
</td>
<td width="258">
<input type="text" name="lname" size="30" dir="ltr">
</td>
</tr>
<tr>
<td align="right" width="162">
<font color="#800000">*</font><b>E-Mail:</b>
</td>
<td width="258">
<input type="text" name="email" size="30" dir="ltr">
</td>
</tr>
<tr>
<td align="right" width="162">
<font color="#800000">*</font><b>Phone Number:</b>
</td>
<td width="258">
<input type="text" name="tel" size="30" dir="ltr">
</td>
</tr>
<tr>
<td align="right" width="162"><b>Fax Number:</b>
</td>
<td width="258">
<input type="text" name="fax" size="30" dir="ltr">
</td>
</tr>
<tr>
<td width="162">&nbsp;</td>
<td width="258">
<input type="submit" value="Send Information" name="B1">
<input type="reset" value="Reset" name="B2">
</td>
</tr>
</table>
</form>
</div>
ادامش رو با یه پست دیگه می ذارم.
موفق باشید

yaqubian
سه شنبه 22 مرداد 1387, 19:57 عصر
دوست عزیز
بعد از action فرم اگه یه نیگاه بندازین می بینین که یه رویداد تعریف شده به اسم Onsubmit که کارش validate و می دونید چون this داره یعنی به شیء جاری اشاره می کنه یعنی همون فرم رو باید validate کنه.
در ضمن یه فیلد مخفی هم داریم می فرستیم به اسم todo که تو صفحه بعد چک می کنیم ببینیم این المان set شده یا نه؟!!!
حالا تو صفحه بعد

<?php
$fname=$_POST['fname'];
$lname=$_POST['lname'];
$email=$_POST['email'];
$tel=$_POST['tel'];
$fax=$_POST['fax'];
$todo=$_POST['todo'];
if(isset($todo) and $todo=="post")
{
$status = "OK";
$msg="";
if(mysql_num_rows(mysql_query("SELECT email FROM t_register WHERE email = '$email'")))
{
$msg=$msg."E-mail address already exists. Please try another one<BR>";
$status= "NOTOK";
}
if(!ereg("([[:alnum:]\.\-]+)(\@[[:alnum:]\.\-]+\.+)", $email) or strlen($fname)==0 or strlen($lname)==0 or strlen($tel)==0)
{
$msg=$msg."Your informatin is incorrect!<BR>";
$status= "NOTOK";
}
if($status<>"OK")
{
echo '<br><br>';
echo '<center>';
echo "<font face='Verdana' size='2' color=red>$msg</font><br><input type='button' value='Retry' onClick='history.go(-1)'>";
echo '</center>';
}
else
{
srand(time());
$random = (rand());
$char = "$random";
$char_coun = strlen( $char );
for ( $i=0; $i<4; $i++ )
{
$number .= $char{ $i };
}
$mainpass=$number;
$loginname=$email;
$pass=md5($mainpass);
$query_register=mysql_query("insert into t_register(fname,lname,email,tel,fax,mainpass,logi nname,pass) values('$fname','$lname','$email','$tel','$fax','$ mainpass','$loginname','$pass')");
}
}

yaqubian
سه شنبه 22 مرداد 1387, 20:00 عصر
البته ادامه کد رو دیگه ننوشتم.
خب تو این صفحه می بینید که اگه VALIDATION موفقیت آمیز نباشه یه متغیر مقدارش NOT OK می شه و اون باعث می شه که رویداد onclick بصورت نوشته شده اجرا بشه.
history.go(-1) باعث می شه که یه صفحه به عقب برگردیم و اطلاعات ناقص رو درست کنیم طوریکه اطلاعات فرم پاک نشده باشن.
موفق باشید

امید امرایی
چهارشنبه 23 مرداد 1387, 08:00 صبح
بله در اين مورد كاملا صحيحه و البته پاسخ بنده به validation در همون صفحه مربوط مي شد .

yaqubian
چهارشنبه 23 مرداد 1387, 20:18 عصر
دوست عزیز آقای پاکسار
اگه منظورتون اینه که طرف هنگامی که تب می زنه و بین فیلدها جابجا می شه عمل validate انجام بشه باید بگم همون spry خوبه و یا می تونین از ajax واسه این کار کمک بگیرین.
موفق باشید

yaqubian
چهارشنبه 23 مرداد 1387, 20:30 عصر
دوست عزیز
اینم یه نمونه کار با ajax
http://particletree.com/features/degradable-ajax-form-validation/
موفق باشید

sama01
پنج شنبه 24 مرداد 1387, 09:17 صبح
به نظر من بهترین کار همین استفاده از ajax هست. خیلی کاربرپسندتر هم هست. در حین وارد کردن اطلاعات عمل اعتبارسنجی داده‌های انجام شده و عملا هم در پهنای باند صرفه جویی می‌شه و هم کاربر خیلی سریع‌تر و راحت‌تر ایرادات را رفع می‌کند.
گواه این مطلب هم استفاده‌ی روزافزون از این تکنیک در اعتبارسنجی در سایت‌های گوناگون است. نمونه‌ی آن، تعیین میزان امنیت رمز عبور و یا بررسی تکراری نبودن نام کاربری در زمان ثبت‌نام است.

tanha2007
پنج شنبه 24 مرداد 1387, 12:55 عصر
من هم با AJAX موافقم ، ولی اگر کاربر جاوا اسکریپت را غیر فعال نماید چی ؟؟؟ دیگر آن کاری که باید صورت گیرد انجام نمیشود ..