PDA

View Full Version : what is session?



yasercomeng
دوشنبه 23 اردیبهشت 1387, 14:29 عصر
سلام من میخواستم بدونم که کلا این session هایی که ما ایجاد میکنیم به چه دردی می خورن و کجا ها نیاز هست که از اونا استفاده کنیم من manual خود php رو خوندم ولی توضیحی در مورد اینکه اینا چی هستن نداده فقط گفته که چه طور میتونیم از اونا استفاده کنیم؟
ممنون.:لبخند:

Bahram0110
دوشنبه 23 اردیبهشت 1387, 18:27 عصر
يه مثال ساده مي زنم
الان كه نام كاربري و رمز عبورت رو براي ورود به اين سايت زدي، وقتي از يه صفحه به صفحهء ديگه مي ري يا وقتي صفحه رو Refresh مي كني، سايت چطور مي فهمه كه تو قبلا login كردي يا نه؟؟
وقتي login مي كني يه سري اطلاعات هست كه توي session (روي سرور) ذخيره مي شه ، همچنين اطلاعاتي در مرورگر كاربر(خودت) كه وقتي مرورگر با سايت ارتباط برقرار مي كنه اين اطلاعات رو مي فرسته و سايت از اونجا مي فهمه كه اين كاربر كي هست، وارد شده يا نه و ...
منبع : خودم :لبخند:

echoes
دوشنبه 23 اردیبهشت 1387, 23:33 عصر
مهمترین کار session نگهداری اطلاعات مورد نظر برنامه نویس بر روی سیستم خود کاربر هست به طوری که در حالت عادی تا وقتی که اکسپلوررت رو نبستی میتونی اطلاعات رو همونجا داشته باشی، علاوه بر مثال بالا (custom authentication)یکی از پرکاربردترین جاها برای سبد خرید هست به طوری که مدام به بانک(در واقع سرور) رجوع نشه. مسئله

mehran_337
سه شنبه 24 اردیبهشت 1387, 08:26 صبح
مهمترین کار session نگهداری اطلاعات مورد نظر برنامه نویس بر روی سیستم خود کاربر ...
سشن ها اطلاعات رو روی سرور ذخیره می کنن . کوکی هست که اطلاعات رو در سیستم خود کاربر نگه می داره :چشمک:

yasercomeng
یک شنبه 29 اردیبهشت 1387, 16:13 عصر
دست همتون درد نکنه راهنمایی های خوبی کردین ولی خوب من چه جوری می تونم از این اطلاعات(مثلا نام کاربری و پسوردی که من برای ورود استفاده میکنم)استفاده کنم؟
تابع session_start() یه دونه session رو ایجاد میکنه یا اگه ایجاد شده بود و متوقف بود اونو رو resume میکنه.یعنی ما هر بار مجبوریم که فقط از یه session استفاده کنیم؟
اگه آره یعنی باید تمام اطلاعاتی که می خوایم تویه یه فایل قرار بگیره؟
اصلا این فایلی که ما این اطلاعات رو توش نگه می داریم چه جوری ساخته می شه؟ من جاشو می دونم تویه پوشه tmp/ سرورمون قرار داره.
اگه ممکنه این رو هم بگین که این session_id چی کار می کنه؟:متفکر:

vahid4134
یک شنبه 29 اردیبهشت 1387, 21:48 عصر
دست همتون درد نکنه راهنمایی های خوبی کردین ولی خوب من چه جوری می تونم از این اطلاعات(مثلا نام کاربری و پسوردی که من برای ورود استفاده میکنم)استفاده کنم؟
تابع session_start() یه دونه session رو ایجاد میکنه یا اگه ایجاد شده بود و متوقف بود اونو رو resume میکنه.یعنی ما هر بار مجبوریم که فقط از یه session استفاده کنیم؟
اگه آره یعنی باید تمام اطلاعاتی که می خوایم تویه یه فایل قرار بگیره؟
اصلا این فایلی که ما این اطلاعات رو توش نگه می داریم چه جوری ساخته می شه؟ من جاشو می دونم تویه پوشه tmp/ سرورمون قرار داره.
اگه ممکنه این رو هم بگین که این session_id چی کار می کنه؟:متفکر:
بعد از اینکه session_start زده میشه یک session_id که منحصر به فرد هست درست میشه حالا این session_id داخل کوکی کاربر ذخیره میشه (البته میشه داخل کوکی ذخیره نشه و از طریق get بهش دسترسی داده بشه ولی دیگه کسی استفاده نمی کنه و همون کوکی بهتر هست) از یک طرف دیگه یک فایل هم برای این جلسه ایجاد می کنه. حالا هر چی می خوایید می تونید داخل $_SESSION بریزید.
حالا که دفه بعد کاربر صفحه رو رفرش می کنه یا میره صفحه وقتی که session_start صدا زده میشه اول می بینه که کاربر session_id معتبر داره یا نه اگر داشت فایلش رو باز می کنه و اطلاعات رو همونجوری داخل $_SESSION می ریزه و تو می تونی ازش استفاده کنی

echoes
دوشنبه 30 اردیبهشت 1387, 00:46 صبح
سشن ها اطلاعات رو روی سرور ذخیره می کنن . کوکی هست که اطلاعات رو در سیستم خود کاربر نگه می داره :چشمک:

مرسي از تذكرتون
شما مي تونيد براي هر جلسه به تعداد دلخواه متغير تعريف كنيد.

$_SESSION['variable']=value;

yasercomeng
دوشنبه 30 اردیبهشت 1387, 13:34 عصر
بعد از اینکه session_start زده میشه یک session_id که منحصر به فرد هست درست میشه حالا این session_id داخل کوکی کاربر ذخیره میشه (البته میشه داخل کوکی ذخیره نشه و از طریق get بهش دسترسی داده بشه ولی دیگه کسی استفاده نمی کنه و همون کوکی بهتر هست) از یک طرف دیگه یک فایل هم برای این جلسه ایجاد می کنه. حالا هر چی می خوایید می تونید داخل $_SESSION بریزید.
حالا که دفه بعد کاربر صفحه رو رفرش می کنه یا میره صفحه وقتی که session_start صدا زده میشه اول می بینه که کاربر session_id معتبر داره یا نه اگر داشت فایلش رو باز می کنه و اطلاعات رو همونجوری داخل $_SESSION می ریزه و تو می تونی ازش استفاده کنی

پس نیاز به تولید کوکی هنگام استفاده از session ها تویه php وجود داره یا نه؟
اطلاعاتی که ما میریزیم فقط میتونه شامل یه سری رشته یا مقادیر عددی باشه یا نه می تونیم ترکیبی از این ها رو داشته باشیم؟
این session ما تا کی میتونه اطلاعات رو در اختیار داشته باشه؟تا زمانی که مرورگر توسط کاربر بسته نشده؟

echoes
دوشنبه 30 اردیبهشت 1387, 16:20 عصر
شما می تونید ترکیبی از هر نوع متغیر را تعریف کنید، حتی آرایه. این اطلاعات همونطور که فرمودید تا بستن مرورگر باقی میمونه، بسته به نیازتون هم میتونید اصلا از کوکی استفاده نکنید

yasercomeng
یک شنبه 12 خرداد 1387, 16:36 عصر
سلام من این دوتا کد رو تو دو تا فایل جدا نوشتم ولی هیچ اطلاعاتی نمایش داده نمیشه.مشکل کجاست؟
در ضمن من متغیر session_global رو تویه تنظیمات خود php(فایل php.ini تو مسیر نصب) onکردم.ولی بازم نشد که نشد!
فایل cookies.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<?php
// Initialize a session. This call either creates
// a new session or re-establishes an existing one.
session_start( );
// If this is a new session, then the variable
// $count will not be registered
if (!session_is_registered("count"))
{
session_register("count");
session_register("start");
$count = 0;
$start = time();
}
else
{
$count++;
}
$sessionId = session_id();
?>
<!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd" >
<html>
<head><title>Sessions</title></head>
<body>
<p>This page points at a session
(<?php echo $sessionId?>)
<br>count = <?php echo $count?>.
<br>start = <?php echo $start?>.
<p>This session has lasted
<?php
echo time();
$duration = time() - $start;
echo "$duration";
?>
seconds.
<a href="cookies2.php" >refresh</a>
</body>
</html>
و فایل cookies2.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<?php
session_start();
if (!session_is_registered("count"))
echo "chetori.";
else
echo "is set: ".$_SESSION['count'];
?>