تالار گفتمان مانشت

نسخه‌ی کامل: می خواهم کسی نتواند پس از خروج، به صفحات قبلی برگردد !
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
فرض کنید برای ورود به یک سایت ، نیاز به یوزر و پسورد داریم ... یوزر و پسورد را وارد می کنیم و دکمه ی "ورود" را می زنیم و تا وقتی که داخل سایت تشریف داریم ، می توانیم به امکانات حساب کاربری خود دسترسی داشته باشیم .

سؤال : چکار کنیم که وقتی دکمه ی "خروج" را زدیم ، با استفاده از دکمه ی back مرورگر ، امکان دسترسی به حساب کاربری خود را نداشته باشیم ؟ و برای دسترسی به آن ، نیاز به وارد کردن مجدد یوزر و پسورد باشد .
(04 مرداد 1392 03:54 ب.ظ)simorghsimorgh نوشته شده توسط: [ -> ]فرض کنید برای ورود به یک سایت ، نیاز به یوزر و پسورد داریم ... یوزر و پسورد را وارد می کنیم و دکمه ی "ورود" را می زنیم و تا وقتی که داخل سایت تشریف داریم ، می توانیم به امکانات حساب کاربری خود دسترسی داشته باشیم .

سؤال : چکار کنیم که وقتی دکمه ی "خروج" را زدیم ، با استفاده از دکمه ی back مرورگر ، امکان دسترسی به حساب کاربری خود را نداشته باشیم ؟ و برای دسترسی به آن ، نیاز به وارد کردن مجدد یوزر و پسورد باشد .

سلام
تا اون جاکه من اطلاع دارم وقتی شما روی دکمه خروج کلیک می کنید کوکی های احراز هویت شما از داخل مرورگر پاک میشند و با استفاده از دکمه back مرورگر نمی تونید به حساب کاربری خودتون دسترس داشته باشید
اما از اونجایی که مرورگرتون اطلاعات و محتوای برخی صفحات شما رو به صورت history ذخیره می کنه تنها شما یه view از حساب کابری خودتون رو می بینید ...
(04 مرداد 1392 05:28 ب.ظ)CS_IT نوشته شده توسط: [ -> ]سلام
تا اون جاکه من اطلاع دارم وقتی شما روی دکمه خروج کلیک می کنید کوکی های احراز هویت شما از داخل مرورگر پاک میشند

من از هیچی استفاده نکرده بودم ... می خواستم بدونم باید از چی استفاده کنم ، که این طور که از صحبتتون معلومه باید از کوکی ها کمک بگیرم ... اگر ممکنه یه خورده بیشتر توضیح بدین که کوکی چی هست و چیکار می کنه ؟ روش استفاده از اون چجوریه ؟
ممنونم
خواهش می کنم

اول یه سوال پیش میاد (اگه دارین طراحی صفحات وب می کنید) از چه زبانی دارین استفاده می کنید ؟

اگه PHP هست این لینک در مورد کوکی بهتون کمک می کنه

(w3schools.com/php/php_cookies.asp)
(04 مرداد 1392 07:15 ب.ظ)CS_IT نوشته شده توسط: [ -> ]اگه PHP هست این لینک در مورد کوکی بهتون کمک می کنه

آره خب توی تالار PHP پرسیدم

ممنونم از راهنمایی تون ... یه سؤال برام پیش اومده : در مورد session هم اطلاعی دارین؟ این دو تا با هم فرق می کنن یا جفتشون یه کار انجام میدن ؟
Smile
(04 مرداد 1392 07:33 ب.ظ)simorghsimorgh نوشته شده توسط: [ -> ]
(04 مرداد 1392 07:15 ب.ظ)CS_IT نوشته شده توسط: [ -> ]اگه PHP هست این لینک در مورد کوکی بهتون کمک می کنه

آره خب توی تالار PHP پرسیدم

ممنونم از راهنمایی تون ... یه سؤال برام پیش اومده : در مورد session هم اطلاعی دارین؟ این دو تا با هم فرق می کنن یا جفتشون یه کار انجام میدن ؟
(04 مرداد 1392 07:33 ب.ظ)simorghsimorgh نوشته شده توسط: [ -> ]آره خب توی تالار PHP پرسیدم

ممنونم از راهنمایی تون ... یه سؤال برام پیش اومده : در مورد session هم اطلاعی دارین؟ این دو تا با هم فرق می کنن یا جفتشون یه کار انجام میدن ؟

کوکی در سمت client ذخیره میشه و میشه برای اون تاریخ انقضا در نظر گرفت و یا اینکه اون رو پاک کرد ولی یه Session در سمت سرور ایجاد میشه و تا زمانی که Browser باز هست اون Session هم وجود داره و به محض بسته شدن Browser از بین میره .
کسی می دونه اشکال این قطعه کد کجاست ؟
یه نگاه به این کد بندازین ! وقتی روی logout کلیک می کنیم ، مگه نباید session نابود بشه ؟ خب پس چرا وقتی با دکمه ی back مرورگر صفحه ی قبلی رو میارم ، اطلاعات کاربر نشون داده میشه و از من یوزر و پسورد نمی خواد ؟

این هم قطعه کد :
کد php:
<?php 

    session_start
();
    if( isset( 
$_SESSION['user'] ) )
        
$welcome "welcome dear ".$_SESSION['user'];
    else
    {
        
header"location: session.php" );
        exit( 
);
    }
    if( isset( 
$_REQUEST['logout'] ) )
    {
        
session_destroy();
        
header"location: session.php" );
        exit( 
);
    }    
?>


<html>
<body>
<?php echo $welcome?>
<a href="session.php">Logout</a>
</body>
</html> 
اول اینکه سعی کنید در طراحی صفحه هاتون تا اونجا که ممکنه از کوکی ها استفاده نکنید . چون ممکنه اصلا کاربر غیر فعال کرده باشه کوکی ها رو . در ضمن اطلاعات مهمی مثل نام کاربری و پسورد رو نباید روی ماشین کاربر ذخیره کرد و باید در session ذخیره بشه . session یک آرایه از پیش ساخته شده در صفحات php هست که شما اطلاعات مهمی که میخواید در تمامی صفحات بهش دسترسی داشته باشید رو در اون ذخیره می کنید .
موضوع بعد اینکه برای logout کردن کد زیر رو بنویس :
کد php:
<?php
    session_start
();
    if(isset(
$_SESSION["USERNAME"]))
    {
        
session_destroy();
        
header("location: login.php");
    }
?>

این کد رو در صفحه ای به اسم logout.php بنویس . برای نابود کردن session باید از session_destroy() استفاده کنی . بعد از اون در همه صفحات سایتت اول چک کن ببین session["user"] مقدار دهی شده یا نه . اگه نشده بود کاربر رو بفرست به صفحه login .
(05 مرداد 1392 10:30 ق.ظ)Nima Masghadi نوشته شده توسط: [ -> ]بعد از اون در همه صفحات سایتت اول چک کن ببین ["session["user مقدار دهی شده یا نه . اگه نشده بود کاربر رو بفرست به صفحه login .


آهان ... اتفاقا می خواستم این سؤالو بپرسم که : بهتر نیست به جای استفاده از GET_$ و POST_$ که راه ساده و معمولی هست ، از SESSION_$ استفاده کنیم که یه خورده امنیتش بیشتره ؟

ادامه ی سؤال بالا این رو هم عرض کنم که وقتی از صفحه ای که درش هم از SESSION_$ و هم از فرم ها استفاده کرده بودم ، خارج می شدم با اینکه در همون صفحه session رو نابود کرده بودم ، با این پیغام های مرورگر مواجه شدم ولی بالأخره باز هم بدون وارد کردن یوزر و پسورد تونستم وارد صفحه ی قبلی بشم. پیغام هاش اینا بود :

[تصویر:  196711_97887902294890572076.png]

بعد وقتی دکمه ی Try Again رو زدم این پیغام ظاهر شد :

[تصویر:  196711_70887562645516539692.jpg]

و با زدن دکمه ی Resend به راحتی وارد صفحه ی قبل شدم.
آیا ممکنه علتش این باشه که فقط باید از session ها استفاده کنم که اگر بخوام پس از خروج، دوباره برگردم، از من یوزر و پسورد بخواد ؟ ( و دیگه با زدن دو تا دکمه، به راحتی کسی نتونه برگرده ؟ )
کلا اگر اولین دستور هر صفحه ی سایت چک کردن session باشه هیچ مشکلی پیش نمیاد . طرف خودشم بکشه نمی تونه کاری بکنه تا وقتی که login نکنه تا session ایجاد بشه .
این مثال رو اجرا کن :
صفحه login.php :
کد php:
<html>
<
body>
<
form action="second_page.php" method="get">
<
input name="username" type="text" />
<
input name="enter" type="submit" value="send" />
</
form>
</
body>
</
html

صفحه ی second_page.php :
کد php:
<?php
if ( !isset($_GET["username"])){
echo 
"please enter username";
}
else
{
session_start();
$_SESSION["username"]=$_GET["username"];
header ("location:wellcome.php");
}
?>

صفحه ی wellcome.php:
کد php:
<html>
<
body>
<?
php
session_start
();
if(isset(
$_SESSION["username"])){
echo 
"wellcome ".$_SESSION["username"];
?>
<br />
<form action="logout.php" method="post">
<input name="enter" type="submit" value="logout" />
</form>
<?php
}
else
{
 echo 
"Welcome unknown user";
?>
<form action="login.php" method="post">
<input name="enter" type="submit" value="login" />
</form>
<?php
}
?>

</body>
</html> 

صفحه logout.php :
کد php:
<?php
session_start
();
if(isset(
$_SESSION["username"]))
{
   
session_destroy();
   
header("location:login.php");
}
?>

از صفحه login یک نام وارد کن و بعد از رفتن به صفحه wellcom روی logout کلیک کن . وقتی صفحه load شد دکمه back مرورگر رو بزن . میبینی که ازت میخواد که login کنی . تو باید بر اساس اینکه شخص login کرده یا نه محتوای صفحه رو ایجاد کنی ( که توی این مثال دکمه login و logout ایجاد شدن بر حسب مورد ) .
(05 مرداد 1392 02:15 ب.ظ)Nima Masghadi نوشته شده توسط: [ -> ]کلا اگر اولین دستور هر صفحه ی سایت چک کردن session باشه هیچ مشکلی پیش نمیاد . طرف خودشم بکشه نمی تونه کاری بکنه تا وقتی که login نکنه تا session ایجاد بشه .
.
.
.
تو باید بر اساس اینکه شخص login کرده یا نه محتوای صفحه رو ایجاد کنی ( که توی این مثال دکمه login و logout ایجاد شدن بر حسب مورد ) .


متشکرم آقا نیما ... پاسخ سؤالم رو خیلی خوب و واضح از شما گرفتم !
بابت کد هایی که نوشتین هم ممنونم . Shy
لینک مرجع