تایید درستی یک کد؟!

3dsmax

Member
این کدا رو ببینید آیا درست هستن یا مشکل دارن
نمیدونم چرا رو سرور میزنه افراد آنلاین 8 تا با اینکه 8 نفر آنلاین نیستن و بعد از 1 ساعت دوباره رفتم تو سایت بازدید ها شدن 2 تا ولی 8 تا آنلاین هنوز بود حالا نمی دونم مشکل از نمایش آفراد آنلاین یا بازدید ها این کدها رو ببینید.

PHP:
<?php
require_once('mysql.php');

$ip = $_SERVER['REMOTE_ADDR'];
$page = $_SERVER['REQUEST_URI'];
$come_page = $_SERVER['HTTP_REFERER'];
$win = $_SERVER['HTTP_USER_AGENT'];
$out = 2592000;
$time = time();
$timeout = $time - $out;

$conn = db_connect();
mysql_select_db($db_name,$conn);
							
							
mysql_query("INSERT INTO amar_online (date, ip, page, come_page, win) VALUES ('".$time."','".$ip."','".$page."','".$come_page."','".$win."')");
mysql_query("DELETE FROM amar_online WHERE date < $timeout");
$select = mysql_query("SELECT DISTINCT ip FROM amar_online WHERE page='$page'");
$online = mysql_num_rows($select);
														
if ($online == 1) {
	echo "افراد آنلاین :  $online<br />";
} 
else {
	echo "افراد آنلاین :  $online<br />";
}
////////////////////////////////////////////////////////////////////////
$date=date("y-m-d");
														
$sql = mysql_query("SELECT * FROM amar_tedad WHERE date='$date'");
if(mysql_num_rows($sql)>0) {
	$q=mysql_query("UPDATE amar_tedad SET counter=counter+1 WHERE date='$date'");
}
else {
	$q=mysql_query("INSERT INTO amar_tedad (`counter`,`date`) VALUES('1','$date') ");
}
														
														
// بازدید امروز
$q=mysql_query("SELECT * FROM amar_tedad WHERE date='$date'");
$row=mysql_fetch_array($q);
$co=$row['counter'];
if($co == "") {
	$co = "0";
}
echo "بازدید امروز : $co <br>";
														
														
// بازدید دیروز
$pdate=date("y-m-d",time()-86400);
$q2=mysql_query("SELECT * FROM amar_tedad WHERE date='$pdate'");
$row2=mysql_fetch_array($q2);
$co2=$row2['counter'];
if($co2 == "") {
	$co2 = "0";
}
echo "بازدید دیروز : $co2 <br>";
														
														
$q6 = mysql_query("SELECT sum(counter) FROM amar_tedad");
$row6 = mysql_fetch_array($q6);
if($row6 == "")
	$row6 = "0";
}
echo "بازدید کل : $row6[0]";
														
mysql_close();
?>

اینم mysql.php

PHP:
<?php
function db_connect()
{
   $result = mysql_connect("localhost","user","pass"); 
   if (!$result)
      return false;
   if (!mysql_select_db('نام بانک اطلاعاتی'))
      return false;
   return $result;
}
?>

بانک اطلاعاتیشم که معلومه
لطفا کمکم کنید فوریه:sad:

یه سوال دیگه هم داشتم چطور میشه هم افراد آنلاین در صفحه ی جاری رو نمایش بده هم آفراد آنلاین در کل صفحات؟:sad:
 
آخرین ویرایش:

NabiKAZ

Well-Known Member
سلام،

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

به هر حال...
شما امکان تشخیص زمان خروج رو ندارید. بنابراین برای تشخیص تعداد کاربران آنلاین، در هر بار بازدید صفحه، آی پی و زمان بازدید صفحه در بانک اطلاعاتی ذخیره میشه. سپس یه زمان انقضاء (در این مثال out$) تعریف میشه. حالا... برای دفعات آینده وقتی صفحه بازدید میشه رکوردهایی که از این زمان انقضاء کوچکتر باشند حذف میشن. پس اگر در این فاصله زمانی (یعنی رسیدن به زمان انقضاء) کسی از سایت بازدید کنه، رکورد جدید اضافه میشه و در غیر این صورت حذف میشه و ...
با اجرای این رویه، نهایتاً در هر لحظه تعداد رکوردهایی که در بانک موجوده نشانه تعداد کاربران آنلاین سایت هست.
این میزان کاملاً در ارتباط با اون زمان انقضاء تعریف شده، است. در واقع هر چی این زمان بیشتر باشه، تعداد کاربران بیشتری به عنوان آنلاین نمایش داده میشه و بلعکس، یعنی اگر این زمان کمتر باشه اونوقت ممکنه کمتر از حد واقعی باشه. در نتیجه نمایش تعداد افراد آنلاین یک مقدار نسبی است و همیشه دقیق نیست.
این زمان بر حسب ثانیه در متغییر ذخیره شده. در مثال شما 2592000 ثانیه (30 روز) است، که اطلاعات کاربران رو تا این مدت نگه میداره. یعنی تو این فاصله زمانی، هر کابری که از سایت دیدن میکنه حتی اگر بلافاصله از سایت خارج بشه، باز هم یک نفر به افراد آنلاین اضافه میشه و تا 30 روز که از لیست خارج میشه...
عددی که شما وارد کردی خیلی غیر واقعیه. پیشنهاد من استفاده از 600 (10 دقیقه) و یا حداکثر 1800 (30 دقیقه) است. این زمان برابر زمان تخمینی و میانگین زمانی است که یک کاربر ممکنه در سایت شما باقی بمونه.

الگوریتم سادست ولی توضیحش کمی سخت بود. خیلی سعی کردم منظور رو برسونم...

امیدوارم متوجه شده باشید.

پ.ن1: به علامت های کاما دقت کن.
پ.ن2: متن تاپیک هم میشد بهتر انتخاب کنی.


موفق باشید
نبی
 

3dsmax

Member
مرسی از اقا نبی گرفتم چی شد , من فکر کرده بودم این $out اطلاعاتی رو که در بانک اطلاعاتی ذخیره می کنه بعد از 3 روز دوباره این اطلاعات از تو بانک اطلاعاتی پاک می شوم و اطلاعات جدید دوباره save میشن برای یک ماه!!:cry::wink:
 

جدیدترین ارسال ها

بالا