PDA

View Full Version : کاربرد سشن ها



yegane8
پنج شنبه 10 بهمن 1392, 22:28 عصر
سلام
برای یک سایت چندتا سشن باید ست شه . مثلا واسه همین سایت 8 تا سشن سنت شده زیاد نیست؟
وقتی یه هم چین چیزی :
$_session['x']='123';
$_session['y']='true';

یعنی 2 تا سشن ست شده ؟
لطفا چندتا مثال از کاربرد سشن ها و کوکی ها که در قسمت های مختلف استفاده می شه قرار بدهید تا یک دید کلی نسبت به این موضوع پیدا کنم (به جز هنگام login !!! )

marys_farahani
جمعه 11 بهمن 1392, 09:19 صبح
سوال شما از اون دسته سوالهایی است که باید تو نت سرچ کنید

http://developer1.ir/PHP/Session.aspx

http://developer1.ir/PHP/cookie.aspx

mbf5923
جمعه 11 بهمن 1392, 10:22 صبح
اولا سایت برنامه نویس و هر سایت دیگه از یک سشن بیس استفاده میکنه و مقادیری رو که باید در اون ذخیره میکنه پس یه سشن بیشتر در کار نیست.
سشن زمانی ست میشه که شما احتیاج دارید مقداری رو در سمت سرور نگهذاری کنید و در جاهای مختلف از اون استفاده کنید.مثلا توی فرم ورود به سایت در صورت صحیح بودن نام کاربری و رمز عبور، نام کاربر رو در سشن ذخیره کنید تا در صفحات دیگه بتونید برای شناسایی کاربر از اون استفاده کنید.

yegane8
جمعه 11 بهمن 1392, 16:05 عصر
سوال شما از اون دسته سوالهایی است که باید تو نت سرچ کنید
من می دونم مفهوم اش جیه لطفا به سوال بیشتر دقت کنید .

د.مثلا توی فرم ورود به سایت در صورت صحیح بودن نام کاربری و رمز عبور، نام کاربر رو در سشن ذخیره کنید تا در صفحات دیگه بتونید برای شناسایی کاربر از اون استفاده کنید.
مثال دیگری ندارید (همون login شد که !!)

اولا سایت برنامه نویس و هر سایت دیگه از یک سشن بیس استفاده میکنه و مقادیری رو که باید در اون ذخیره میکنه پس یه سشن بیشتر در کار نیست.
الان که من دارم می بینم 3 تا سشن و 5 تا کوکی ست شده واسه این سایت .
من خودم واسه برنامم یه هم چین چیزی ست کردم :

$_session['x']='123';
$_session['y']='true';
فقط یه سشن نشون داده میشه ؟
چطوری باید چندتا سشن ایجاد کنم ؟ و اصلا به چه دردی می خوره !

mbf5923
جمعه 11 بهمن 1392, 20:27 عصر
مثال دیگری ندارید
ممکنه خیلی جاها بکار برن حالا اون دیگه بستگی به شرایط داره.مثل اینه که بگیم دیتابیس کجا بکار میاد!
ست کردن چندتا سشن معمولا نیازی نیست مگه اینکه بخواهید اونا رو جدا جدا destroy کنید مثلا اونی که برای لاگین کاربر ساختین از بین بره ولی اونی که اطلاعات صفحه در حال بازدید رو نگه میداره از بین نره.
برای ساختن چند سشن باید از نام استفاده بشه

session_name("sessionone");
session_name("sessiontwo");
session_start();

yegane8
جمعه 11 بهمن 1392, 22:58 عصر
الان چندتا سشن با نام های مختلف دارم چطوری بگم یکیشون رو destroy کن
یا مثلا این :
$_session['x']='123';
واسه کدوم شون ست میشه؟

hamedarian2009
جمعه 11 بهمن 1392, 23:15 عصر
الان چندتا سشن با نام های مختلف دارم چطوری بگم یکیشون رو destroy کن
یا مثلا این :
$_session['x']='123';
واسه کدوم شون ست میشه؟
سشن هم یک نوع متغیره اما با این تفاوت که میتونی ازون در تمام صفحات سایت ازش استفاده یعنی scope اون سراسری هست و هر تعداد سشن رو بسته به نیازت میتونی ست کنی هر سشن دارای یک نام و مقدارش هست
برای از بین بردن یک سشن کافیه از unset استفاده کنی


unset($_SESSION['x']);

mehdytux
شنبه 12 بهمن 1392, 04:22 صبح
دوست عزیز از سشن ها برای نگهداری اطلاعات موقت استفاده میشه. یعنی اطلاعاتی که تا کاربر در سایت حضور داره ، قابل استفاده می باشند. مانند آخرین زمان اتصال به سرور در چت سایت ها. البته این رو به شما بگم سشن ها در فایل هایی در پوشه temp (موقت) هاست شما ( این پوشه در php.ini تعیین میشه) قرار میگیرن. با استفاده از توابع مخصوص سشن امکان ذخیره اطلاعات سشن ها در بانک اطلاعاتی نیز فراهم میشه ( این کار به این خاطر هست که خواندن و نوشتن در فایل های سشن باعث کندی سایت البته در بازدیدهای زیاد میشه) . و از کوکی ها برای ذخیره اطلاعاتی که بعدا نیاز به استفاده می باشند (در سمت کاربر) استفاده میشه. البته نه اطلاعات حساس. اگر در صورت لزوم نیاز به ذخیره اطلاعات حساس در سمت کاربر بود ( مانند رمز عبور و نام کاربری) اطلاعات به صورت رمز گذاری شده ذخیره میشه.
از سشن ها بیشتر برای ذخیره اطلاعاتی استفاده میشه که نیاز نداریم اون ها رو به صورت دائمی استفاده کنیم. کابرد های زیادی میشه نام برد. این بستگی به شما داره. باید میزان مصرف منابع سرور ، امنیت ، سرعت و ... در نظر گرفته و در انتها از یکی از تکنولوژی های بانک اطلاعتی ، ذخیره در فایل های سشن و کوکی و یا ترکیب این تکنولوژی ها استفاده کنید.
به عنوان مثال وردپرس ( یک سیستم مدیریت محتوای معروف ) از کوکی استفاده میکنه و نه سشن. این رو در نظر بگیرید که این به خود وردپرس برمیگرده یعنی برنامه نویسان وردپرس تشخیص دادن این راه برای اونها سه فاکتور امنیت ، سرعت و سهولت در استفاده رو در این پروژه به اونها میده. در خیلی از پروژه ها نیز از کوکی استفاده نمیشه و از سشن استفاده میشه. لطفا قبل از مطالعه کافی در مورد سشن ها و کوکی ها از اونها استفاده نکیند چون ممکنه با این کار امنیت سایت و کاربران سایتتون رو به خطر بندازین.
به عنوان مثال در اینترنت عبارت session hijacking ( دزدی جلسه) که متداول ترین نحوه رخنه امنیتی به سشن ها هست رو مطالعه کنید.
اول امنیت ، بعد کارایی ، در نهایت سهولت استفاده برای کاربر .... همیشه در برنامه نویسی این سه مرحله رو رعایت کن

yegane8
یک شنبه 13 بهمن 1392, 01:48 صبح
ضمن تشکر از همه ی دوستانی که پاسخ دادند .
ولی منظور من چیز دیگه ایه
الان تو سایت برنامه نویس 3 تا سشن دارم می بینم کوکی نه هااا سشن !!!
می خوام بینم واسه چی چندتا سشن با اسم ها مختلف ایجاد کرده و
ایا این

session_name("sessionone");
session_name("sessiontwo");
معادل با


$_session["sessionone"];
$_session["sessiontwo"];
اینه ؟
با این تفاوت که اگه از اولی استفاده کنی می تونی با این اکستنشن ها یی که سشن ها و کوکی ها رو نشون می ده این سشن ها رو با اسم خودشون ببینی ؟

SA_Developer
یک شنبه 13 بهمن 1392, 13:05 عصر
ایا این

session_name("sessionone");
session_name("sessiontwo");
معادل با


$_session["sessionone"];
$_session["sessiontwo"];
اینه ؟

خیر
شما با session_name مشخص میکنی که با کدوم سشن میخوای کار کنی.
$_session["sessionone"] یه آیتم sessionone در سشن فعلی اشاره میکنه.




با این تفاوت که اگه از اولی استفاده کنی می تونی با این اکستنشن ها یی که سشن ها و کوکی ها رو نشون می ده این سشن ها رو با اسم خودشون ببینی ؟
SESSION_$ یه متغیره شما میتونی بدون اینکه حتی session رو start کنی توش مقدار بریزی اما یک سشن ایجاد نکردی.
شما در یک لحظه فقط میتونی با یک سشن کار کنی بعد اون رو Destroy کنی و سشن بعدی رو start کنی.
مثال:
در این کد sessionthree استارت میشه چون آخرین بار گفتید اسم سشنی که میخوام sessionthree هست:


session_name("sessionone");
session_name("sessiontwo");
session_name("sessionthree");
session_start(); /// sessionthree start


مثال:


session_name("sessionone");
session_name("sessiontwo");
session_name("sessionthree");
session_start(); /// sessionthree start
$_SESSION['foo'] = 'bar'; // Stored in sessionthree
print_r( $_SESSION ); // prints Array ( [foo] => bar )
session_destroy(); // Destroy sessionthree

session_name("sessiontwo");
session_start(); /// sessiontwo start
$_SESSION['foo'] = 'bar'; // Stored in sessiontwo
print_r( $_SESSION ); // prints Array ( [foo] => bar )
session_destroy(); // Destroy sessiontwo