رفتن به مطلب

پست های پیشنهاد شده

با سلام می خواستم هر کسی که لاگین کرد فیلد استاتوس تو جدول یوزر مثلا مقدار 1 بگیره بعد هر وقت نتش قطع شد یا صفحه را بست یا لاگ اون کرد این مقدار 0 بشه که نشون دهنده آفلاین بودنشه

با جاوا اسکریپت یه کد پیدا کردم ولی فکر نکنم جواب بده چون چک نمیشه که اون شخص هنوز آنلاین هست یا نه

به نظرم با پی اچ پی چک بشه بهتره

بنظرتون چیکار کنم ؟

لینک به ارسال

روش تشخیص آنلاین بودن به این صورت هست:

برای اولین بار لاگین مقداری را در کوکی ذخیره کنید که زمان لاگین باشد

و زمان آخرین بازدید را در دیتابیس ذخیره کنید

برای بروزرسانی زمان هر 2 دقیقه زمان دیتابیس را بروز کنید

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

و کاربرانی که در 5 دقیقه گذشته زمان بازدید دارند را نمایش دهید

(مقدار زمان فقط برای مثال بود)

لینک به ارسال

در تکمیل صحبتهای پارسای عزیز

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

اگر هم بخواهید از jquery استفاده کنید سربار اضافی به سرور تحمیل میکنید و اینکه اگه ارتباط قطع بشه که دیگه ریکوئستی به سرور نمیره که شما به سرور بگید ارتباط قطع شده

یک جدول میسازید(user_info) با حداقل 3 فیلد 1.نام کاربری(user) -تاریخ جاری(date ) . زمان جاری(time)

یک تابع در functions.php ایجاد میکنید که هر کاربر که لاگین هست چک میکنین ایا رکوردی با نام کاربر و تاریخ جاری وجود داره با نه


$wpdb->get_var('select user from user_info where user='$current_user->user_login' and date=date(now())');

اگه نبود یک رکورد insert میکنید براش

$wpdb->query("insert into user_info(user,date,time)values('$current_user->user_login',date(now()),time(now))");

اگه بوده فقط فیلد زمانش رو با زمان جاری update بروز رسانی میکنید

$wpdb->query('update user_info set time=time(now()) where user='$current_user->user_login' and date=date(now())');

حالا موقع نمایش یه سلکت میزنین که ایا کاربر فوق در 5 یا 10 دقیقه قبل بوده یا خیر

timetostr('-10 minutes')

لینک به ارسال

من هم همین کد رو به یک صورت دیگه نوشتم مشکل این چی هست ؟

<script>

setInterval(function() {

$(".listonline").load("lib/listonline.php");

}, 1000);

</script>

<script>

window.onbeforeunload = function(){

$(".listonline").load("lib/changestatus.php");

alert("ok");

}

// OR

window.addEventListener("beforeunload", function(e){

// Do something

}, false);

</script>

<script>

window.onload = function(){

$(".listonline").load("lib/changestatuson.php");

alert("ok");

}

</script>

listonline.php

<?php

$result=$sql->select("`id`, `list`","`addlist`","1");

while($row=mysql_fetch_array($result))

{

$list=$row['list'];

$id=$row['id'];

}

$val=explode(",",$list);

foreach($val as $val2)

{

$result=$sql->select("`id`, `id2`","`user`","`status`=1 and `id`=".$val2);

while($row=mysql_fetch_array($result))

{

echo "<li onclick='alert(this.value)'><p>".$row['id2']."</p><span>I'm online     2013/28/12</span></li>";

}

}

?>

changestatuson.php

<?php

$sql=new sql;

$session=new session;

?>

<?php

$session->sstart();

$session->add("user","system","");

$curuser=$session->show('user');

con();

selectdb();

$query="UPDATE `user` SET `status`=1 WHERE `id2`='$curuser'";

mysql_query($query);

$session->sreset();

?>

changestatus.php

<?php

$session->sstart();

$session->add("user","system","");

$curuser=$session->show('user');

con();

selectdb();

$query="UPDATE `user` SET `status`=0 WHERE `id2`='$curuser'";

mysql_query($query);

$session->sreset();

?>

که البته کلاس و توابع خاص خودش رو نوشتم

ویرایش شده توسط NESTED
لینک به ارسال

سلام

این نمونه هم مورد خوبیه:


http://coursesweb.net/php-mysql/register-show-online-users-visitors_t

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...