PDA

View Full Version : سوال: به دست آوردن مقدار زمان لاگین بودن کاربر؟



fatahyegane
دوشنبه 24 آبان 1389, 16:42 عصر
سلام دوستان خسته نباشید
کاربر وقتی logout نمیکنه و مرورگرش رو میبنده چطور میشه ما متوجه بستن مرورگر بشیم تا اون زمان رو ثبت کنیم و در مواردی مثل به دست آوردن زمان لاگین بودن کاربر از اون استفاده کنیم؟
ممنون از لطفتون.

funpatogh
دوشنبه 24 آبان 1389, 21:36 عصر
شما وقتی کاربر لاگین میکنه سشن رو استارت کن و یک سشن به اسم time ذخیره کن که زمان ورود کاربر هست
یک تابع جاوا اسکرپیت هم به کار ببر که وقتی کار بر logout نکرده و صفحه رو بست یک فایل اجرا بشه که توی اون فایل اجرا شده زمان حال رو از زمان شروع کم کنه و توی بانک مقدار انلاین بودن رو ذخیره کنه



<html>
<head>
<SCRIPT language=JavaScript type="text/javascript"> <!--
function logout()
{
self.open("logout.php", "logout","width=10, height=10");
}

function checkClose(){
var y=window.event.clientY ;
var x=window.event.clientX;
if(y<0 || x<0)
logout();


}
//--></SCRIPT>
</head>
<BODY onUnload="javascript:checkClose()">
salam
</body>
</html>

funpatogh
دوشنبه 24 آبان 1389, 21:43 عصر
یک را دیگه هم که به ذهنم میرسه اینه که وقتی لاگین انجام شد سشن رو استارت کن و یک سشن به نام time بساز و بعد توی هر صفحه که کاربر باز میکنه زمان جدید رو از زمان اولش که توی سشن بود کم کنه
و این زمان رو توی بانک ذخیره کنه حالا کاربر چه logout کنه و چه نکنه شما زمان آنلاین بودن رو گرفتی

fatahyegane
چهارشنبه 26 آبان 1389, 01:21 صبح
سلام از راهنمایت بسیار ممنونم
کد جاوای بالا رو که دادی تست کردم جواب داد این کد وقتی صفحه رفرش میشه نیز اجرا میشه آیا روشی برا جلوگیری از این هست؟
تشکر.

funpatogh
چهارشنبه 26 آبان 1389, 01:39 صبح
برای این مشکل رفرش راهی به ذهنم نمیرسه میتونید از کد دوم هم استفاده کنید

fatahyegane
چهارشنبه 26 آبان 1389, 11:18 صبح
سلام


session_start();
include("connect_db.inc");
$name=$_SESSION["logined_user"];
$logouttime=time();
$logintime=$_SESSION['logintime'];
$thisact=($logouttime-$logintime);
$result=MYSQL_QUERY("SELECT * FROM userlist WHERE name='$name'");
$lastact=MYSQL_RESULT($result,0,"activity");
$lastact=strtotime($lastact);
$activity=date("h:i:s",$lastact+$thisact);
MYSQL_QUERY("UPDATE userlist SET activity=activity + '$activity' WHERE name='$name' ");
SESSION_DESTROY();


این کدیه که برا محاسبه کل مقدارفعالیت کاربر(وقتهایی که لاگین بوده) است نوشتم مشکلش اینه که
ثانیه شمار تا 59 که میره دوباره از صفر شروع میشه در حالی که دقیقه شمار و ساعت شمار همان صفر باقی میمانند احتمالا مشکل در استفاده از توابع زمانیه.
ممنون میشم اگه راهنمایی کنید.

funpatogh
چهارشنبه 26 آبان 1389, 16:20 عصر
ببین دوست عزیز من یک راهکار میدهم به شما و پیاده سازی کنید
شما توی صفحه لاگین این کار و کنید


<?php
session_start();
if(login){
$_SESSION['login_time']=time();
$_SESSION['username']=$username;
}
?>


که میگی اگر لاگین انجام شد نام کاربری و تایم اون لحظه رو بریزی توی سشن

بعد یک فانکشن بنویس به این شکل و همه صفحاتی که کاربر بهش دسترسی داره توش این فانکشن رو صدا بزن


function activity_time(){

$activity=time()-$_SESSION['login_time'];
mysql_query("update `users` set `activity`='$activity' where `username`='".$_SESSION['username']."' ")or die(mysql_error());
}

حالا جایی که میخوای این زمان رو نشان بدهی کوئری بزن و اون فیلد activity رو بگیر