PDA

View Full Version : سوال: مدت دار کردن سیسشن



ehsan_savadkohi
چهارشنبه 14 فروردین 1392, 09:54 صبح
با سلام چگونه میتوان یک کاربر لاگین شده را برای احراز هویت مدت دار کرد و پس از مدتی کار نکردن در سایت سیسشن کاربر تمام شود و از سایت خارج شود ..ممنونم. کمک کنید دوستان.حتی با نمونه مثال:لبخند:

Unique
چهارشنبه 14 فروردین 1392, 12:59 عصر
میتونی تاری و زمان ورود را توی database ست کنی و با هر بار درخواست و مشاهده کاربر تاریخ و زمان را به روز کنی حالا اگه زمانی که درخواستی اومد و تاریخ و زمان ست شده +‌مثلا نیم ساعت ، کوچکتر از تاریخ و زمان فعلی بود یعنی نیم ساعته کاربر فعالیت نداشته و logout کنیش و بخوای دوباره login کنه.

colors
چهارشنبه 14 فروردین 1392, 14:00 عصر
خود سشن این قابلیت رو داره. مثلا اگه 15 دقیقه سشن درگیر نشه, اتوماتیک حذف میشه. این زمان رو میزبانها مختلفه, اما میتونید خودتون تغییرش بدین.

mamali-mohammad
چهارشنبه 14 فروردین 1392, 14:21 عصر
به طور دستی نمیشه
هر هاست متفاوت هست
به نظرم از کوکی استفاده کنی بهتره

SilverLearn
چهارشنبه 14 فروردین 1392, 14:48 عصر
خوب اینکه کار خاصی نمی خواد عزیزم ...چرا انقدر به خودتون دردسر می دید ؟

از کد زیر استفاده کن :





<?php
// create a session
if (!isset($_SESSION)) {
session_start();
}

// store the current time
$now = time();

// get the time the session should have expired
$limit = $now - 60 * 20;

// check the time of the last activity
if (isset ($_SESSION['last_activity']) &&
$_SESSION['last_activity'] < $limit) {
// if too old, clear the session array and redirect
$_SESSION = array();
header('Location: http://www.example.com/expired.php');
exit;
} else {
// otherwise, set the value to the current time
$_SESSION['last_activity'] = $now;
}
?>

SilverLearn
چهارشنبه 14 فروردین 1392, 14:53 عصر
راستی




$limit = $now - 60 * 20;


همونطور که می دونید یعنی 20 دقیقه .....

بقیه کد ها هم که معلومه ...

Unique
پنج شنبه 15 فروردین 1392, 15:57 عصر
البته این را در نظر بگیریم که اگه کوکی مربوط به session روی ۰ یا زمان کوتاهتری نسبت به زمان شما از بین بره با توجه به session.cookie_lifetime که البته به صورت پیش فرض ۰ هست یعنی وقتی کاربر مرورگر را میبنده دیگه نداریمش ! در این صورت کاربر شما همیشه لاگین میمونه ! با توجه به کد دوستمون ! یعین اگه cookie مربوط به session را حذف کنه همیشه لاگین میمونه ! به خاطر این خط کد :


if (isset ($_SESSION['last_activity']) && $_SESSION['last_activity'] < $limit)

اما اگه این مقدار در زمان لاگین ست بشه و توی صفحات دیگه چک بشه بر عکس میشه یعنی اگه کاربر صفحه خودش را ببنده یا زمان session timeout توی php کمتر از زمان timeout شما باشه ! کاربر زودتر از زمان مورد نظر logout میشه !

به هر حال استفاده از session نیاز به چک کردن و زحمت بیشتری در مقایسه با یک فیلد last_seen توی database داره. اگرچه احراز هویت همیشه با cookie صورت میگیره حالا چه session cookie و چه عیره ....