PDA

View Full Version : سوال: در خواست مثالی کامل برای login و logout توسط session ها



ahmadbadpey
یک شنبه 07 مهر 1387, 18:34 عصر
لطفا اگه کسی مثالی کامل درباره login و logout بوسیله سیشن ها داره ارائه کنه

amircoco
دوشنبه 08 مهر 1387, 12:26 عصر
اگه جستجو کنی کلی مثال گیرت میاد

mhmmdshirazi
دوشنبه 08 مهر 1387, 19:51 عصر
این درست کار می کنه ولی چرا از 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>

narsic
سه شنبه 09 مهر 1387, 00:32 صبح
//*If logout unset all session variables
if($logout){
$username="";
}
?>

Session ها از بین نمیرن
برای از بین بردن سیشن ها باید از تابع unset() استفاده بشه بعدشم نیازی نیست شما از یه متغیر جدید استفاده کنی و دیگه این که Session_Register هم استفاده نکن چون Global ها هم باید روشن باشن و گرنه کار نمیکنن .
موفق باشید

soheil_ce
سه شنبه 09 مهر 1387, 14:27 عصر
مثال ساده :

بعد از چک کردن یوزر و پسورد ( با فرض اینکه درست بوده و نام کاربری در متغییر username$ هست )
login :



session_start();
$_SESSION['username']=$username;


logout :



session_start();
session_unset('username');

a_bita
سه شنبه 09 مهر 1387, 19:02 عصر
من میتونم واست یه مثال کامل بدم از login و logout.
اگه مشکلت حل نشده واسم یه پیغام بده که بذارم

mhmmdshirazi
سه شنبه 09 مهر 1387, 19:25 عصر
هنوز می گم با cookie خیلی بهتره
login:

setcookie("cookiename",$username,"time of cookie per second");
loguot:

setcookie("cookiename","");

soheil_ce
سه شنبه 09 مهر 1387, 21:56 عصر
هنوز می گم با cookie خیلی بهتره


چرا شما می گی cookie بهتره دلیلت چیه ؟
اگه من می گم session بخاطر اینه که کوکی در اختیار کاربره و احتمال هک شدنش بیشتره .

mhmmdshirazi
چهارشنبه 10 مهر 1387, 01:32 صبح
وقتی سایتی در حد یاهو از cookie استفاده می کنه نمی شه گفت امنیتش کمه تازه cookie عین username ,password می مونه پس اگه کسی بتونه با cookie هک کنه انگار username password کل سایتو هک کرده پس اگه cookie هم نباشه میتونه اون کارو کنه.

a_bita
چهارشنبه 10 مهر 1387, 04:01 صبح
به نظر من هم Sessionبهتره

as13851365
چهارشنبه 10 مهر 1387, 09:00 صبح
اگه من می گم session بخاطر اینه که کوکی در اختیار کاربره و احتمال هک شدنش بیشتره .
خوب آره احتمال هک شدن هرچیزی هست ولی سخت و آسونش رو باید در نظر گرفت


وقتی سایتی در حد یاهو از cookie استفاده می کنه نمی شه گفت امنیتش کمه تازه cookie عین username ,password می مونه پس اگه کسی بتونه با cookie هک کنه انگار username password کل سایتو هک کرده پس اگه cookie هم نباشه میتونه اون کارو کنه.

من یکی که باهاش مشکل دارم یعنی ببینید شما می آیید هنگام ورود به سایت ( لاگین ) مشخصات لازم رو در کوکی می نویسید بعد یه تاریخ انقضاء هم بهش می دید بعد یکی از کاربران شما در کافینت از سایت شما استفاده می کنه و بعد می ره غافل از این که کوکی هنوز در سیستم باقی مانده است خوب حالا یه کاربر دیگه می آد و تمام کوکی ها رو بر می داره می بره خونشون بعد به راحتی می تونه به سایت وارد بشه بدون هیچ مشکلی ( امتحان نکردم ها !!! )

اما سیشن فرق می کنه کاربران نمی تونند از سیشن ها کپی بگیرند و اصلا هیچ دسترسی به کوکی ندارند ( در حالت عادی ) پس امنیتش خیلی خیلی بیشتر از کوکی نباشه کمتر نیست !

به عنوان مثال این انجمن ها از کوکی استفاده می کنند حالا شما یه امتحانی کن و از تمام کوکی ها یک کپی بگیر و بعد کوکی ها رو حذف کن بعد بیا سایت رو ببین باید یوزر و پس رو وارد کنی حالا دوباره کوکی ها رو سرجاشون کپی کن دیگه هیچ یوزری و پسی از شما پرسیده نمی شه ! (باز هم می گم من امتحان نکردم ولی از نظر تئوری باید جواب بده )


به نظر من هم Sessionبهتره
نظر که نه حتما سیشن بهتر از کوکی برای شما کار خواهد کرد ولی باید یه چیزهایی رو در نظر گرفت مثلا نمی دونم کجا بود که دیدم نوشته بود چطوری می شه سیشن رو دور زد (فکر کنم تو یکی از این انجمن ها بود ) یعنی اگه کاربری بیاد سیشن رو دور بزنه چی !!! نمی دونم این حرف دور زدن سیشن درست بود یا نه ولی باید تمام جوانب کار رو در نظر گرفت!

شما می تونید از چند گزینه همزمان استفاده کنید یعنی هم از کوکی استفاده کنید هم از سیشن هم از یه راههای دیگه مانند ذخیره ورود و خروج کاربران در یک جدول و کنترل مداوم آنها ( درباره این چیزی نمی دونم )

soheil_ce
چهارشنبه 10 مهر 1387, 12:48 عصر
وقتی سایتی در حد یاهو از cookie استفاده می کنه نمی شه گفت امنیتش کمه تازه cookie عین username ,password می مونه پس اگه کسی بتونه با cookie هک کنه انگار username password کل سایتو هک کرده پس اگه cookie هم نباشه میتونه اون کارو کنه.


تا اونجا که من می دونم یاهو از کوکی برای یادآوری مراجعات بعدی کاربر استفاده می کنه که راه دیگه ای هم جز کوکی ندارد



من یکی که باهاش مشکل دارم یعنی ببینید شما می آیید هنگام ورود به سایت ( لاگین ) مشخصات لازم رو در کوکی می نویسید بعد یه تاریخ انقضاء هم بهش می دید بعد یکی از کاربران شما در کافینت از سایت شما استفاده می کنه و بعد می ره غافل از این که کوکی هنوز در سیستم باقی مانده است خوب حالا یه کاربر دیگه می آد و تمام کوکی ها رو بر می داره می بره خونشون بعد به راحتی می تونه به سایت وارد بشه بدون هیچ مشکلی ( امتحان نکردم ها !!! )


برای همین هم هست که اگه برید کافی نت و همه کوکی ها رو هم کپی کنید و ببرید به سیستم خودتون نمی تونید برید تو email طرف .

vahid4134
چهارشنبه 10 مهر 1387, 14:19 عصر
هنوز می گم با cookie خیلی بهتره
login:

setcookie("cookiename",$username,"time of cookie per second");loguot:

setcookie("cookiename","");
کوکی و سشن دو چیز مجزا از همدیگه هست
البته کدی که در بالا قرار گرفته شده که لاگین کردن با ادمین هم مثل آب خوردن هست کافیه که web developer فایرفاکس رو نصب کنید یا با یک کد ساده php کوکی رو ارسال کنید.
باید دید که قراره که در کوکی چی ذخیره بشه. چیزی که در کوکی ذخیره میشه باید چیزی باشه که اگر تغییر پیدا کرد مشکلی پیش نیاد. مثلا آی دی سشن.
ذخیره username و password در کوکی بزرگترین اشتباه هست. چون هکر می تونه اون رو بدزده. شاید شما بگید که خوب وقتی که کاربر خروج رو می زنه اینها پاک میشه. اما کاربرها زیاد عادت ندارند روی خروج کلیک کنند تازه امنیت کامپیوتر کاربر که دست شما نیست و مطمئن باشید هکر فقط از مرورگر می تونه حمله کنه. البته حملات XSS هم که بماند

سشن به دلیل اینکه روی سرور ذخیره میشه امکان تغییرش صفر هست (از طرف کاربر) که البته باید نکات امنیتی رو هم رعایت کرد

vahid4134
چهارشنبه 10 مهر 1387, 14:25 عصر
من صفحه دوم رو تازه خوندم
باید خدمت دوستان (همونطور که توی پست قبلی گفتم) بگم که سشن و کوکی دو چیز متفاوت از همدیگه هستند.
اون چیزی که یاهو ذخیره می کنه درسته که برای لاگین کردن هست اما خود اطلاعات لاگین نیست سشن آیدی هست (البته کسی دقیق نمی دونه که چی هست به هر حال یاهو یا گوگل رمزنگاری های خاص خودشون رو دارند)
اما سشن هم میاد از کوکی استفاده می کنه. شما وقتی که کوکی رو می بینید نوشته PHPSESSIONID= یه همچین چیزی که مربوط به سشن php هست که session آیدی هست.
شما اطلاعات رو داخل سشن بریزید بعد از گزینه های مرورگرتون کوکی رو پاک کنید می بینید که سشن هم از بین رفته
طریقه دور زدن session هم درست نیست بگیم در وارد نفوذ به session هست که از طریق دزدیدن session id هست. البته به ترفندهایی میشه جلوش رو گرفت. که توی خیلی از سایتها توضیحش داده شده.