PDA

View Full Version : سوال: عدم امکان استفاده همزمان چند کاربر از یک اکانت ؟!



Ali-23
چهارشنبه 30 اردیبهشت 1388, 19:04 عصر
»ن یک مشکلی کوچیک دارد اون هم این است که شناسایی کنم هم زمان 2 نفر نتوانند با یک اکانت Login کنند اما مشکل سر این موضوع نیست یک field درست کردن برای هر کاربر که وضعیت انلاین بودن رو به صورت 1 انلاین و صفر آفلاین ثبت می کنه .

هنگامی که کاربر وارد سایت میشه یه query ران میشه وضعیت 1 میشه . هنگامی که روی لینک Logout کلیک کند یه query ران میشه 0 می کنه وضعیت آنلاین رو .

اما مشکل این که اگر کاربر لینک خروج رو نزد و پنجره رو بست چی ؟!!! اون همین شکلی 1 می مونه دیگه نمی تونه وارد شه .

و ازکدهای زیر استفاده کردم . ولی چک کردن چند بار پنجره رو بستم . بازم در چند ساعت بعد هیچ فرقی نمی کند .

من درصفحه ورود :



session_start();
$start=time();
$_SESSION['time_start']=$start;


در صفحه اصلی :


$end=time();
include("start_timer.php");
include("end_timer.php");

Start_timer



<?php
$start=$_SESSION['time_start'];

$ItemStartDate=$start."<br>";
$ItemEndDate = $end."<br>";
// $Today = time();
$TimeLeft = $ItemEndDate - $ItemStartDate;
//$TimeLeft = $ItemEndDate - $ItemStartDate;
if($TimeLeft > 0)
{
$ADayInSecs = 24 * 60 * 60;
$Days = $TimeLeft / $ADayInSecs;
$Days = intval($Days);

$TimeLeft = $TimeLeft - ($Days * $ADayInSecs);
$Hours = $TimeLeft / (60 * 60);
$Hours = intval($Hours);
$TimeLeft = $TimeLeft - ($Hours * 60 * 60);

$Minutes = $TimeLeft / 60;
$Minutes = intval($Minutes);
$TimeLeft = $TimeLeft - ($Minutes * 60);

$Seconds = $TimeLeft;
$Seconds = intval($Seconds);

$TimeLeft = $TimeLeft - ($Seconds / 60 * 60 );
$MilliSeconds = $TimeLeft;


}
?>


End_timer



<?php
$Seconds." Seconds " ;
$time_out=5;
if($Minutes<$time_out){
$_SESSION['time_start']=$end;
}else{
include("logout.php");
}
?>


میشه بگید کد بالا چه مشکلی دارد یا حداقل اینکه وقتی که کاربر به طور کامل پنجره رو بست session هاش قطع شد . چه شکلی بشه مثلا بعد 5 دقیقه اتوماتیک سیستم وضعیت آنلاین رو 0 کند .

Ali-23
پنج شنبه 31 اردیبهشت 1388, 19:52 عصر
دوستان کسی پیشنهادی ؟ راهنمایی ؟ چیزی ؟

narsic
شنبه 02 خرداد 1388, 02:49 صبح
با سلام
بهترین روش این هست که از یک جدول کمکی استفاده کنید و در اون لیست کاربران آنلاین رو بریزید بهمراه یک فیلد زمان از نوع TimesTamp و بعد هربار ابتدا بررسی کنید که آیا کاربر آنلاین است یا خیر درصورت حضور اجازه ورود ندهید در غیر این صورت وارد شود و یک فیلد در جدول کمکی براش ثبت کنید و در یک صفحه پر بازدید مرتب فیلدهایی رو از بانک که بیش از چند دقیقه هست از زمانشون میگذره حذف کنید تا کاربر بتونه مجدد وارد بشه .
البته باید این رو هم به یاد داشته باشید که در هر بار بررسی اطلاعات Sessionیا کوکی که برای تایید کاربر از اونها استفاده میکنید باید زمانش رو هم در جدول کمکیتون به روز کنید تا از حذف فیلد مربوط به آنلاین بودن کاربر دز بانک کمکی جلوگیری بشه .
موفق باشید