لطفا اگه کسی مثالی کامل درباره login و logout بوسیله سیشن ها داره ارائه کنه
لطفا اگه کسی مثالی کامل درباره login و logout بوسیله سیشن ها داره ارائه کنه
اگه جستجو کنی کلی مثال گیرت میاد
این درست کار می کنه ولی چرا از cookie استفاده نمیکنی؟
<?php
//need this to get session variables
session_start();
//Solution for -Page has Expired- error
header("Cache-Control: ");
header("pragma: ");
//Check if session is ok or not
if (!$PHPSESSID) {
session_register("username");
} else if (!$visitors) {
session_register("username");
}
//is login button pressed
if($login){
if($loginname){
if($password){
if($loginname=="test" && $password=="test"){
$username="Test User";
/* If you like jump to another page uncomment this and change www.intelligentnetworks.
com
* to point where you like it
*
header(\"Location: http://www.intelligent-networks.com/\");
exit;
* */
} else {
$msg="Wrong username or password";
$username="";
}
}else {
$msg="Password missing";
$username="";
}
} else {
$msg="Username missing!";
$username="";
}
}
//*If logout unset all session variables
if($logout){
$username="";
}
?>
<html>
<head>
</head>
<body>
<form name="logaction" method="post">
<?php
if(!$username){
http://www.iranphp.net 3
?>
Username<br>
<input type="text" name="loginname" size="10">
<br>
Password<br>
<input type="password" name="password" size="10">
<br>
<input type="submit" name="login" value="Login">
<br><br>
Try <br>
username:test<br>
password:test<br>
<?php
//display login messages
echo "<br>".$msg."<br>\n";
} else {
//display user name
echo "User:".$username."<br>\n";
?>
<input type="submit" name="logout" value="Logout">
<!--
Enter here data here
-->
<?php
}
?>
</form>
</body>
</html>
//*If logout unset all session variables
if($logout){
$username="";
}
?>
Session ها از بین نمیرن
برای از بین بردن سیشن ها باید از تابع unset() استفاده بشه بعدشم نیازی نیست شما از یه متغیر جدید استفاده کنی و دیگه این که Session_Register هم استفاده نکن چون Global ها هم باید روشن باشن و گرنه کار نمیکنن .
موفق باشید
مثال ساده :
بعد از چک کردن یوزر و پسورد ( با فرض اینکه درست بوده و نام کاربری در متغییر username$ هست )
login :
session_start();
$_SESSION['username']=$username;
logout :
session_start();
session_unset('username');
من میتونم واست یه مثال کامل بدم از login و logout.
اگه مشکلت حل نشده واسم یه پیغام بده که بذارم
هنوز می گم با cookie خیلی بهتره
login:
setcookie("cookiename",$username,"time of cookie per second");
loguot:
setcookie("cookiename","");
چرا شما می گی cookie بهتره دلیلت چیه ؟هنوز می گم با cookie خیلی بهتره
اگه من می گم session بخاطر اینه که کوکی در اختیار کاربره و احتمال هک شدنش بیشتره .
وقتی سایتی در حد یاهو از cookie استفاده می کنه نمی شه گفت امنیتش کمه تازه cookie عین username ,password می مونه پس اگه کسی بتونه با cookie هک کنه انگار username password کل سایتو هک کرده پس اگه cookie هم نباشه میتونه اون کارو کنه.
به نظر من هم Sessionبهتره
خوب آره احتمال هک شدن هرچیزی هست ولی سخت و آسونش رو باید در نظر گرفتاگه من می گم session بخاطر اینه که کوکی در اختیار کاربره و احتمال هک شدنش بیشتره .
من یکی که باهاش مشکل دارم یعنی ببینید شما می آیید هنگام ورود به سایت ( لاگین ) مشخصات لازم رو در کوکی می نویسید بعد یه تاریخ انقضاء هم بهش می دید بعد یکی از کاربران شما در کافینت از سایت شما استفاده می کنه و بعد می ره غافل از این که کوکی هنوز در سیستم باقی مانده است خوب حالا یه کاربر دیگه می آد و تمام کوکی ها رو بر می داره می بره خونشون بعد به راحتی می تونه به سایت وارد بشه بدون هیچ مشکلی ( امتحان نکردم ها !!! )وقتی سایتی در حد یاهو از cookie استفاده می کنه نمی شه گفت امنیتش کمه تازه cookie عین username ,password می مونه پس اگه کسی بتونه با cookie هک کنه انگار username password کل سایتو هک کرده پس اگه cookie هم نباشه میتونه اون کارو کنه.
اما سیشن فرق می کنه کاربران نمی تونند از سیشن ها کپی بگیرند و اصلا هیچ دسترسی به کوکی ندارند ( در حالت عادی ) پس امنیتش خیلی خیلی بیشتر از کوکی نباشه کمتر نیست !
به عنوان مثال این انجمن ها از کوکی استفاده می کنند حالا شما یه امتحانی کن و از تمام کوکی ها یک کپی بگیر و بعد کوکی ها رو حذف کن بعد بیا سایت رو ببین باید یوزر و پس رو وارد کنی حالا دوباره کوکی ها رو سرجاشون کپی کن دیگه هیچ یوزری و پسی از شما پرسیده نمی شه ! (باز هم می گم من امتحان نکردم ولی از نظر تئوری باید جواب بده )
نظر که نه حتما سیشن بهتر از کوکی برای شما کار خواهد کرد ولی باید یه چیزهایی رو در نظر گرفت مثلا نمی دونم کجا بود که دیدم نوشته بود چطوری می شه سیشن رو دور زد (فکر کنم تو یکی از این انجمن ها بود ) یعنی اگه کاربری بیاد سیشن رو دور بزنه چی !!! نمی دونم این حرف دور زدن سیشن درست بود یا نه ولی باید تمام جوانب کار رو در نظر گرفت!به نظر من هم Sessionبهتره
شما می تونید از چند گزینه همزمان استفاده کنید یعنی هم از کوکی استفاده کنید هم از سیشن هم از یه راههای دیگه مانند ذخیره ورود و خروج کاربران در یک جدول و کنترل مداوم آنها ( درباره این چیزی نمی دونم )
تا اونجا که من می دونم یاهو از کوکی برای یادآوری مراجعات بعدی کاربر استفاده می کنه که راه دیگه ای هم جز کوکی نداردوقتی سایتی در حد یاهو از cookie استفاده می کنه نمی شه گفت امنیتش کمه تازه cookie عین username ,password می مونه پس اگه کسی بتونه با cookie هک کنه انگار username password کل سایتو هک کرده پس اگه cookie هم نباشه میتونه اون کارو کنه.
برای همین هم هست که اگه برید کافی نت و همه کوکی ها رو هم کپی کنید و ببرید به سیستم خودتون نمی تونید برید تو email طرف .من یکی که باهاش مشکل دارم یعنی ببینید شما می آیید هنگام ورود به سایت ( لاگین ) مشخصات لازم رو در کوکی می نویسید بعد یه تاریخ انقضاء هم بهش می دید بعد یکی از کاربران شما در کافینت از سایت شما استفاده می کنه و بعد می ره غافل از این که کوکی هنوز در سیستم باقی مانده است خوب حالا یه کاربر دیگه می آد و تمام کوکی ها رو بر می داره می بره خونشون بعد به راحتی می تونه به سایت وارد بشه بدون هیچ مشکلی ( امتحان نکردم ها !!! )
کوکی و سشن دو چیز مجزا از همدیگه هست
البته کدی که در بالا قرار گرفته شده که لاگین کردن با ادمین هم مثل آب خوردن هست کافیه که web developer فایرفاکس رو نصب کنید یا با یک کد ساده php کوکی رو ارسال کنید.
باید دید که قراره که در کوکی چی ذخیره بشه. چیزی که در کوکی ذخیره میشه باید چیزی باشه که اگر تغییر پیدا کرد مشکلی پیش نیاد. مثلا آی دی سشن.
ذخیره username و password در کوکی بزرگترین اشتباه هست. چون هکر می تونه اون رو بدزده. شاید شما بگید که خوب وقتی که کاربر خروج رو می زنه اینها پاک میشه. اما کاربرها زیاد عادت ندارند روی خروج کلیک کنند تازه امنیت کامپیوتر کاربر که دست شما نیست و مطمئن باشید هکر فقط از مرورگر می تونه حمله کنه. البته حملات XSS هم که بماند
سشن به دلیل اینکه روی سرور ذخیره میشه امکان تغییرش صفر هست (از طرف کاربر) که البته باید نکات امنیتی رو هم رعایت کرد
من صفحه دوم رو تازه خوندم
باید خدمت دوستان (همونطور که توی پست قبلی گفتم) بگم که سشن و کوکی دو چیز متفاوت از همدیگه هستند.
اون چیزی که یاهو ذخیره می کنه درسته که برای لاگین کردن هست اما خود اطلاعات لاگین نیست سشن آیدی هست (البته کسی دقیق نمی دونه که چی هست به هر حال یاهو یا گوگل رمزنگاری های خاص خودشون رو دارند)
اما سشن هم میاد از کوکی استفاده می کنه. شما وقتی که کوکی رو می بینید نوشته PHPSESSIONID= یه همچین چیزی که مربوط به سشن php هست که session آیدی هست.
شما اطلاعات رو داخل سشن بریزید بعد از گزینه های مرورگرتون کوکی رو پاک کنید می بینید که سشن هم از بین رفته
طریقه دور زدن session هم درست نیست بگیم در وارد نفوذ به session هست که از طریق دزدیدن session id هست. البته به ترفندهایی میشه جلوش رو گرفت. که توی خیلی از سایتها توضیحش داده شده.