انجمن‌های فارس وب

نسخه کامل: کدام کاربرها در سایت آنلاین هستند ؟
شما در حال بازدید از بایگانی ارسال های انجمن هستید این نسخه کامل نیست : برای مشاهده نسخه کامل اینجا کلیک کنید
سلام دوستان ،
بچه ها چطوری میتونیم کاربرایی که در سایت ثبت نام کردن و یوزرشون تو دیتابیس ثبتشده ، وقتی لاگین میکنن چطوری میتونیم ، کاربرایی که لاگین کردن تو سایت نمایش دهیم ؟؟؟

ممنون
دوستان من خودم یک جدول به نام Online ساختم که شامل 2 فیلد به نام نام های id , session

و تو صفحه online.php به این صورت کد نوشتم :

<?php
include("config.php");
session_start();
if(isset(
$_SESSION['myusername']) )
{
$query"insert into online
                            (id,session) VALUES
                            ('','"
.@$_SESSION['myusername']."')";
                            
$result mysql_query($query);
echo 
"<a href=showonline.php>Online User's</a>";
}
else
{
echo 
' no user online ';


خوب این کد خیلی واضحه که چی کار میکنه
ولی اینم میدونم که این کار اشتباس و همین چیزی نمیشه ولی خوب به یک چیزایی خودم رسیدم اما نتونستم فعلاً کاری بکنم .

من میخوالم طوری باشه که وقتی طرف لاگین میکنه اسمش تو صفحه show.php نمایش داده بشه و وقتی خارج مشیه از سایت session اون طرف خراب بشه و اسمش از صفحه Show.php

ممنون مشیم دوستان راهنمایی کنن

فاكتور هاي مهم براي اعضاء ممكنه اطلاعات session يا نام كاربري باشه ، براي ميهمان ها هم مي شه روي IP كاربران تمركز كرد و يا گزينه ي مشترك ، بسته به سليقه و روش دلخواه شماست ، فاكتور مهم تري وجود داره به نام "مدت زمان آنلاين" كه باعث مي شه كاربران رو بعد از زمان دلخواه هم آنلاين نشون بده (مثلاً 5 دقيقه) .

با هر بار اجرا شدن اسكريپت ابتدا سطر هاي جدول اطلاعات آنلاين ما بر اساس "مدت زمان آنلاين" حذف ، و اطلاعات كاربر فعلي به جدول افزوده خواهد شد ، در صورتي كه اسكريپت ما توسط كاربر فعلي قبلاً اجرا شده بود ، سطر مربوطه در جدول ما تنها به روز (update) خواهد شد.

"مدت زمان آنلاين" طبق زمان فعلي محاسبه مي شه و در جداول با توجه به زمان فعلي تا مدت زمان آنلاين حذف يا به روز مي شن.

كد زير ساده ترين شكل اين اسكريپت رو به ما نشون مي ده:

mysql_connect(localhostusernamepassword) or die();  
mysql_select_db("mysql_database") or die();

$datumedate("U");
$datumex=$datume-600;

$tojvip=$_SERVER["REMOTE_ADDR"];

$query1 "DELETE FROM online where ip='$tojvip'"
$result1 mysql_query($query1) or die(); 

$query2 "DELETE FROM online where datum<$datumex"
$result2 mysql_query($query2) or die(); 


$query "INSERT into online VALUES (''$tojvip',$datume')"
$result mysql_query($query) or die(); 

$resultkolk mysql_query("SELECT * FROM online");
$num_rowskolk mysql_num_rows($resultkolk);


echo 
"اعضاء آنلاين: $num_rowskolk" 

سلام آقایون

لطفاً اطلاعات جدول online رو بگید که چه فیلد و .... باید واسش ساخته بشه تا این کد اجرا بشه ؟
بر روی لوکال هاست هم میشه این کارو انجام داد ( تست کرد ) ؟ البته فقط کاربران آنلاین شده داخل دیتابس رو میگم ؟
سلام اشکان جان ،

تا اونجایی که من فهمیدم این کد اعضای آنلاین ( مهمان ) رو نمایش میده

راجبه جدولش باید بگم که :

یک جدول به نام online و 2 تا فیلد به نام ip , dateum که dateum باید نوعش DATE باشه

من تست کردم به همین صورتی که گفتم جوابی نگرفتم ، چون داریم یه جایی یه اشتباهی میکنیم

منتظر جواب جناب بنیان عالم میمونیم
کدی که در بالا اومده اشکال نداره فقط خودتون باید با توجه به نمونه های کد نویسیتون Session ها رو Set کنید
جدولش رو هم همونطور که abedi98 گفته ایجاد نمایید به درستی کار می کنه .

بازم توجه کنید که نحوه استفاده یا تکمیل کد بالا به سلیقه ،شیوه کد نویسی، نیازهای شما و .. شما بستگی داره و برای درک بهتر عملکرد کد بهتره خودتون کاملش کنید ولی نمونه ی زیر یه نمونه ی کامل برای کاربران آنلاینه

اول پایگاه دادتون رو به صورت زیر تعریف می کنید :

CREATE TABLE `user_online` (
`session` char(100) NOT NULL default '',
`time` int(11) NOT NULL default '0'
) TYPE=MyISAM;


اینم کدهای کامل برای تنظیمات و بقیع کارهای لازم :

<?
session_start
();
$session=session_id();
$time=time();
$time_check=$time-600//SET TIME 10 Minute

$host="localhost"// Host name
$username=""// Mysql username
$password=""// Mysql password
$db_name="test"// Database name
$tbl_name="user_online"// Table name

// Connect to server and select databse
mysql_connect("$host""$username""$password")or die("cannot connect to server");
mysql_select_db("$db_name")or die("cannot select DB");

$sql="SELECT * FROM $tbl_name WHERE session='$session'";
$result=mysql_query($sql);

$count=mysql_num_rows($result);

if(
$count=="0"){
$sql1="INSERT INTO $tbl_name(session, time)VALUES('$session', '$time')";
$result1=mysql_query($sql1);
}
else {
"$sql2=UPDATE $tbl_name SET time='$time' WHERE session = '$session'";
$result2=mysql_query($sql2);
}

$sql3="SELECT * FROM $tbl_name";
$result3=mysql_query($sql3);

$count_user_online=mysql_num_rows($result3);

echo 
"User online : $count_user_online "

// if over 10 minute, delete session 
$sql4="DELETE FROM $tbl_name WHERE time<$time_check";
$result4=mysql_query($sql4);

mysql_close();

// Open multiple browser page for result
?>


همونطور که می بینید اول کد مشخصات لازم برای Session تنظیم شده اند .

ممنون ، من این کد رو قبلاً تو یه انجمن خارجی دیده بودم اما یه نگاه کوچیک بهش انداخته بودم و زیاد توجه نکردم و این چند روزه هم یک بار دنبالش گشتم اما چیزی دستگریم نشد و پیداش نکردم

_____
با اجازه ملیکا من یک توضیحی بدم راجبه این کد :

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

مثلاً من سشن کاربرای سایت رو myusername گذاشتم پس باید تو این کد مقدار $session رو به $_session['myusername'] تغیر بدم :

$session=@$_SESSION['myusername'];


خوب به کد زیر نگاه کنید :

$sql="SELECT * FROM $tbl_name WHERE session='$session'";
$result=mysql_query($sql);

$count=mysql_num_rows($result);


این کوئری میگه که مقدار های فیلد session رو از جدول user_online نمایش بده و خط بعدیش میگه که تعداد سطرها ی این جدول رو نشون بده ( مثلاً : 2 تا مقدار وارد این فیلد شده باشه عدد 2 را چاپ میکنه )

حالا این کد رو نگاه کنید :

if($count=="0"){
$sql1="INSERT INTO $tbl_name(session, time)VALUES('$session', '$time')";
$result1=mysql_query($sql1);
}
else {
"$sql2=UPDATE $tbl_name SET time='$time' WHERE session = '$session'";
$result2=mysql_query($sql2);
}


خط اول این کد متغیر $count که در بالا توضیحشو گفتم داخل یک شرط میزاره و بررسی میکنه که اگر مقدار = 0 بود

مقدار $session و $date رو وارد فیلدهای جدول کن

مثلاً : وقتی من لاگین میکنم و سشن من ایجاد میشه باید توسط یک دستور زمان لاگین من و اسم سشن من بره تو دیتابیس ذخیره بشه دیگه .
اینجا هم به همین صورته که مقدار سشن من و زمان ورود من رو داخل جدول ذخیره میکنه .
و در else اون گفته شده که اگر مقدار وجود داشت فقط مقدارها رو آپدیت کن ( تغیر بده )

و حالا باید مقدار های جدول رو به نمایش بزارید :

تو کدی که ملیکا گذاشته ، تعداد رکوردهای جدول رو شمارش میکنه و نمایش میده و فقط یک رکورد رو به نمایش میزاره .

شما برای اینکه تمام کاربرانی که لاگین کردن رو نمایش بدید با نام کابری آنها به صورت زیر عمل کنید :

$sql3="SELECT * FROM $tbl_name";
$result3=mysql_query($sql3);


while($count_user_online=mysql_fetch_array( $result3) )
{

echo "User online : $count_user_online[session] <br> ";
}
// if over 10 minute, delete session
$sql4="DELETE FROM $tbl_name WHERE time<$time_check";
$result4=mysql_query($sql4);

mysql_close();

// Open multiple browser page for result
?>


تنها فرقش اینه که من داخل یک حلقه قرار دادم که تمام مقادیر رو نمایش بده و نام کاربری افرادی که وارد شدن رو نشون بده .

امید وارم درست توضیح داده باشم

موفق باشید

مرجع آدرس ها