PDA

View Full Version : از کار انداختن دگمه back



پدرخوانده
دوشنبه 08 خرداد 1385, 19:40 عصر
در یک صفحه کنترل یوزرنیم و پسورد پس از چک و درستی اطلاعات وارده را در کوکی ذخیره می کنم و در صفحات بعد در صورت وجود و درست بودن آنها اجازه اجرای بعد کدها را می دهم
(این کنترل و فرم ورود اطلاعات (یوزرنیم و پسورد) مثلا در فایلهای به نام login.php انجام می شود و در ابتدا تمامی صفحات آن را فراخوانی کرده ام)
و نهایتا در فرم اصلی گزینه خروجی را قرار دادم که این دو کوکی را خاموش می کند (فراخوانی تابع بدون مقدار) و پس از آن به صفحه دیگری مرورگر را هدایت می کنم
مشکل آنجاست که درصورتی که کاربر دگمه بک را بزند به صفحه قبل (که مثلا در آن صفحه یوزرنیم و پسورد چک شده و نمایش داده شده , مجددا نمایش می یابد) می رود هرچند در صورت تغییر و رفتن به صفحه دیگر پیغام هشدار عدم شناسایی کاربر صادر می شود ولیکن اگر در همان صفحه کلید رفرش را بزند
پیغامی مبنی بر سند مجدد متغیرها پرسیده می شود و در صورت تایید مجددا کوکی ها ثبت و به عنوان کاربر درست شروع به کار می کند
می خواهم که این امکان وجود نداشته باشد (که پس از حذف کوکی متغیرها که در فرم موجود در فایل login.php هستند (به صورت پست در فرم فراخوانی می شوند) امکان دوباره خوانی نداشته باشند)
البته جهت در ابتدای فایل اصلی index.php خود از دستور ذیل استفاده کرده ام

header("cache-control: no-cache");

محتوی فایل login.php را جهت راهنمایی بهتر در ذیل قرار می دهم:


<?
ob_start();
$ok_cookie = false;
$user_answer = 'admin';
$pass_answer = '4a6184dbe9c652cd00b52d696576df2a'; //
if (isset($HTTP_COOKIE_VARS['p_user']) && isset($HTTP_COOKIE_VARS['p_pass'])) {
$p_user = $HTTP_COOKIE_VARS['p_user'];
$p_pass = $HTTP_COOKIE_VARS['p_pass'];
if (($p_user == $user_answer) && ($p_pass == $pass_answer)) {
$ok_cookie = true;
// echo 'ok cookie';
return;
}
}
if(isset($HTTP_POST_VARS["okuser"])) {
$okuser = $HTTP_POST_VARS['okuser']; }
else { $okuser==0;}

if ($okuser==1){
$puser = $HTTP_POST_VARS["puser"];
$ppass = $HTTP_POST_VARS["ppass"];
if (($puser == $user_answer) && (md5($ppass) == $pass_answer)) {
setcookie ("p_user", $puser,time()+3600);
setcookie ("p_pass", md5($ppass),time()+3600);
$ok_cookie = true;
// echo 'save cookie';
return;
}
else {
echo '<script>alert(" &auml;&Ccedil;&atilde; &szlig;&Ccedil;&Ntilde;&Egrave;&Ntilde; &aelig; &Ccedil;&Oacute;&atilde; &Ntilde;&atilde;&Ograve; &aelig;&Ccedil;&Ntilde;&Iuml;&aring; &Ccedil;&Ocirc;&Ecirc;&Egrave;&Ccedil;&aring; &Ccedil;&Oacute;&Ecirc; "); </script>';
}
}
?>
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1256">
<LINK REL="StyleSheet" HREF="../main.css" type="text/css">
<title>&atilde;&Iuml;&iacute;&Ntilde;&iacute;&Ecirc; &Oacute;&Ntilde;&aelig;&Ntilde;</title>
</head>
</body>
</html>
<table cellpadding="0" cellspacing="0" align="center" dir="rtl" border="0">
<tr style="padding-top:20">
<td align="left" colspan="2"><img src="images/login.gif"></td>
</tr>
<tr>
<td height="100%">
<form method="post">
<input type="Hidden" name="okuser" value="1">
<table width="300" border="0" cellpadding="10" cellspacing="0" width="90%" height="100%" dir="ltr" bgcolor="#dcdcdc" style="border:solid 1px black">
<tr><td valign="top" align="left"><b>Sign in :</b></td></tr>
<tr><td valign="top" align="left" style="padding-top:30;padding-left:50">
<font face="Arial" style="font-size:12">
<b>U</b>sername : &nbsp;
<input type="Text" name="puser" style="width:150"><br>
<b>P</b>assword : <span style="width:5"></span>
<input type="Password" name="ppass" style="width:150">
</td></tr>
<tr>
<td height="100%" valign="top" style="padding-left:50">
<input type="submit" value="Login" name="submit" style="border:solid 1px #868A96;width:70;height:22">
</td></tr>
</table>
</form>
</td>
<td align="left" style="padding-right:5;"><img src="images/login.jpg"></td>
</tr>
</table>
</body>
</html>


البته در ابتدای تمامی صفحات بعد از include این صفحه متغیر ok_cookie را چک می کنم در صورت فالس بودند exit می کنم

hqt_2006
دوشنبه 06 شهریور 1385, 10:47 صبح
بابا مرسی
خیلی کارش داشتم
یا حق