برگزیده های پرشین تولز

نظر شما درباره ي اولين اسكريپت من؟؟؟

sirjan-designe

کاربر تازه وارد
تاریخ عضویت
16 نوامبر 2005
نوشته‌ها
58
لایک‌ها
0
محل سکونت
سرزميني كه اپن سورسه
سلام دوستان من اولين اسكريپتم رو بعد از سه هفته كار كردن با پي اچ پي نوشتم و گذاشتم اينجا تا شما عيب و ايرادهايي رو كه داره بهم بگيد.اين اسكريپت يك شمارنده هست كه با استفاده از بانك اطلاعاتي و تابع تاريخ شمسي تاريخ ورود هر كاربر و آي آدرس و ساعت وردش رو وارد بانك اطلاعاتي ميكنه.اگر آي پي از قبل توي ركوردهاي table ويزيتور ثبت شده باشه اونو به table هيتس ميفرسته و يكي ديگه از كارهايي كه من انجام دادم اينه كه نشون ميده كاربر از كجا اومده البته اگر كاربر از هاست خودم اومده باشه يعني لينك توي سايت خودم باشه به بانك اطلاعاتي نميفرسته اينم واسه اين گذاشتم كه فقط ريفر هاي سايتهاي ديگه رو بهم بده.اگر هم ميبينيد كه يك كم ساده هست آخه من هنوز تازه كارم در ضمن تا اينجا من هر چي ياد گرفتم مديون سالار كابلي هستم آخه اون بود كه منو توي پي اچ پي راه انداخت.

كد مربوط به جدولهاي بانك اطلاعاتي
کد:
CREATE TABLE Visitor (
  id mediumint(20) NOT NULL auto_increment,
  ip varchar(200),
  second INT NOT NULL,
  min INT NOT NULL,
  hours INT NOT NULL,
   day INT NOT NULL,
  month INT NOT NULL,
  year INT NOT NULL,
  site VARCHAR (255), 
  PRIMARY KEY  (id)
) TYPE=MyISAM;
CREATE TABLE Hits (
  id mediumint(20) NOT NULL auto_increment,
  ip varchar(200),
  second INT NOT NULL,
  min INT NOT NULL,
  hours INT NOT NULL,
   day INT NOT NULL,
  month INT NOT NULL,
  year INT NOT NULL,
  PRIMARY KEY  (id)
) TYPE=MyISAM;
CREATE TABLE `useronline` (
  `id` int(10) NOT NULL auto_increment,
  `ip` varchar(15) NOT NULL default '',
  `timestamp` varchar(15) NOT NULL default '',
  PRIMARY KEY (`id`),
  UNIQUE KEY `id`(`id`)
) TYPE=MyISAM COMMENT='' AUTO_INCREMENT=1 ;



كد ارتباط با بانك اطلاعاتي كه بايد با اين نام ذخيره بشه mysql_connect.inc.php
PHP:
<?php
$host="db_host";
$user="db_user";
$pass="db_pass";
$db="db_name";
$mysql_link=mysql_connect($host,$user,$pass);
mysql_select_db($db,$mysql_link);
?>



كد مربوط به اضافه شدن مقدار به بانك اطلاعاتي
PHP:
<?
require_once('mysql_connect.inc.php');
require_once ('jdf.php');
$year=jdate("Y");
$month=jdate("m");
$day=jdate("d");
$hours=date("h");
$min=date("i");
$second=date("s");
$referer = $_SERVER['HTTP_REFERER'];
$adress = explode("www.", $_SERVER['SERVER_NAME']); 
$query = "SELECT ip FROM Visitor"; 
$result = mysql_query($query); 
while( $list = mysql_fetch_array($result)){
$ip = $GLOBALS['REMOTE_ADDR']; 
if($ip == $list['ip']){
$sql="insert into Hits (year,month,day,hours,min,second,ip) values
('$year','$month','$day','$hours','$min','$second','$REMOTE_ADDR')";
mysql_query($sql);
$error = TRUE;
return false; 
} 

}

if(!$error){
        if ($referer != "") 
{ 
if (!eregi($adress[1], $referer)) 
{ 
    $addreferer = "INSERT INTO Visitor (site) VALUES ('$referer')"; 
    mysql_query($addreferer); 
  } 
}
$sql="insert into Visitor (year,month,day,hours,min,second,ip,site) values
('$year','$month','$day','$hours','$min','$second','$REMOTE_ADDR','$ref')";
mysql_query($sql);
}
?>



كد مربوط به نمايش اطلاعات از بانك اطلاعاتي
PHP:
<?php
//this script writed Ramin Arabzadeh.this is first my script
require_once('mysql_connect.inc.php');
require_once ('jdf.php');
$year= jdate("Y");
$month=jdate("m");
$day=jdate("d");
$hours=date("h");
$min=date("i");
$second=date("s");
$month1=($month-1);
$day1=($day-1);
$hours1=($hours-1);
$year_now_hits=mysql_query("SELECT * FROM Hits WHERE year='$year'");
$row_year_now_hits=mysql_num_rows($year_now_hits);

$year_now_visitor=mysql_query("SELECT * FROM Visitor WHERE year='$year'");
$row_year_now_visitor=mysql_num_rows($year_now_visitor);

$month_now_hits=mysql_query("SELECT * FROM Hits WHERE month=$month and year=$year");
$row_month_now_hits=mysql_num_rows($month_now_hits);

$month_now_visitor=mysql_query("SELECT * FROM Visitor WHERE month=$month and year=$year");
$row_month_now_visitor=mysql_num_rows($month_now_visitor);

$last_month_hits=mysql_query("SELECT * FROM Hits WHERE month=$month1 and year=$year");
$row_last_month_hits=mysql_num_rows($last_month_hits);

$last_month_visitor=mysql_query("SELECT * FROM Visitor WHERE month=$month1 and year=$year");
$row_last_month_visitor=mysql_num_rows($last_month_visitor);

$today_hits=mysql_query("SELECT * FROM Hits WHERE day=$day and month=$month and year=$year");
$row_today_hits=mysql_num_rows($today_hits);

$today_visitor=mysql_query("SELECT * FROM Visitor WHERE day=$day and month=$month and year=$year");
$row_today_visitor=mysql_num_rows($today_visitor);

$yesterday_hits=mysql_query("SELECT * FROM Hits WHERE day=$day1 and month=$month and year=$year ");
$row_yesterday_hits=mysql_num_rows($yesterday_hits);

$yesterday_visitor=mysql_query("SELECT * FROM Visitor WHERE day=$day1 and month=$month and year=$year ");
$row_yesterday_visitor=mysql_num_rows($yesterday_visitor);

$last_one_hours_hits=mysql_query("SELECT * FROM Hits WHERE hours=$hours1 and year=$year and month=$month and day=$day ");
$row_last_one_hours_hits=mysql_num_rows($last_one_hours_hits);

include_once ("usersOnline.class.php");
$visitors_online = new usersOnline();
print " تعداد افراد آنلاين :  " ."<b>". $visitors_online->count_users() ."</b></p>";
print "<p>بازديدكنندگان امسال :   "."<b>".$row_year_now_visitor ."</b></p>";
print "<p>بازديدهاي امسال :   "."<b>".$row_year_now_hits ."</b></p>";
print "<p>بازديدكنندگان اين ماه :  "."<b>".$row_month_now_visitor."</b></p>";
print "<p>بازديدهاي اين ماه :  "."<b>".$row_month_now_hits."</b></p>";
print "<p>بازديدكنندگان ماه گذشته :  "."<b>".$row_last_month_visitor."</b></p>";
print "<p>بازديدهاي ماه گذشته :  "."<b>".$row_last_month_hits."</b></p>";
print "<p>بازديدكنندگاه امروز :   "."<b>".$row_today_visitor ."</b></p>";
print "<p>بازديدهاي امروز :   "."<b>".$row_today_hits ."</b></p>";
print "<p>بازديدكنندگان ديرورز :   "."<b>".$row_yesterday_visitor ."</b></p>";
print "<p>بازديدهاي ديروز :   "."<b>".$row_yesterday_hits ."</b></p>";
print "<p>بازديدهاي 1 ساعت پيش :   "."<b>".$row_last_one_hours_hits ."</b></p>";

?>


كلاس مربوط به نمايش افراد آنلاين كه بايد با اين اسم ذخيره بشه usersOnline.class.php
PHP:
<?php
//this script writed Ramin Arabzadeh.this is first my script
class usersOnline {

	var $timeout = 600;
	var $count = 0;
	
	function usersOnline () {
		$this->timestamp = time();
		$this->ip = $this->ipCheck();
		$this->new_user();
		$this->delete_user();
		$this->count_users();
	}
	
	function ipCheck() {

		if (getenv('HTTP_CLIENT_IP')) {
			$ip = getenv('HTTP_CLIENT_IP');
		}
		elseif (getenv('HTTP_X_FORWARDED_FOR')) {
			$ip = getenv('HTTP_X_FORWARDED_FOR');
		}
		elseif (getenv('HTTP_X_FORWARDED')) {
			$ip = getenv('HTTP_X_FORWARDED');
		}
		elseif (getenv('HTTP_FORWARDED_FOR')) {
			$ip = getenv('HTTP_FORWARDED_FOR');
		}
		elseif (getenv('HTTP_FORWARDED')) {
			$ip = getenv('HTTP_FORWARDED');
		}
		else {
			$ip = $_SERVER['REMOTE_ADDR'];
		}
		return $ip;
	}
	
	function new_user() {
		$insert = mysql_query ("INSERT INTO useronline(timestamp, ip) VALUES ('$this->timestamp', '$this->ip')");
	}
	
	function delete_user() {
		$delete = mysql_query ("DELETE FROM useronline WHERE timestamp < ($this->timestamp - $this->timeout)");
	}
	
	function count_users() {
		$count = mysql_num_rows ( mysql_query("SELECT DISTINCT ip FROM useronline"));
		return $count;
	}

}
?>


در ضمن فايلهاش رو هم گذاشتم
 

فایل های ضمیمه

  • Counter.zip
    5.8 KB · نمایش ها: 4

sirjan-designe

کاربر تازه وارد
تاریخ عضویت
16 نوامبر 2005
نوشته‌ها
58
لایک‌ها
0
محل سکونت
سرزميني كه اپن سورسه
آقا یک مشکلی به وجود اومده من این اسکریپتو روی لوکال هاست که امتحان میکنم درست جواب میده یعنی آی پی که قبلا ذخیره شده در ویزیتور رو به هیتس میفرسته ولی در روی سرور سایتم درست جواب نمیده و فقط اولین آی پی که وارد میشه رو وارد ویزیترو میکنه و بقیه رو وارد هیتس میکنه (با چند تا آی پی هم امتحان کردم)دلیلش چیه نکنه اون دستور حلقه و if ...else رو بد گذاشتم یک کمکی بکنید؟؟"؟؟
 

iransbs

کاربر تازه وارد
تاریخ عضویت
3 می 2005
نوشته‌ها
471
لایک‌ها
0
محل سکونت
ایران، مازندارن، ساری
دوست عزیز بزرگ ترین مشکل شما تعداد بیش از حل کویری ها هست با اجرا این برنامه سرور خیلی سریع دان می شه
 

hba

کاربر فعال صفحات داینامیک
کاربر فعال
تاریخ عضویت
8 آگوست 2004
نوشته‌ها
1,511
لایک‌ها
1
سن
39
محل سکونت
تهران-ونک-php-mysql
اره بابا اگه بازدید بره بالا که سرور مدیونمون می کنه
 

sirjan-designe

کاربر تازه وارد
تاریخ عضویت
16 نوامبر 2005
نوشته‌ها
58
لایک‌ها
0
محل سکونت
سرزميني كه اپن سورسه
آقا ممنون یعنی فقط مشکلش همینه خوب به نظرت چیکار کنم تا تعداد کویری هام بیاد پایین خوب میتونم فقط تعداد بازدیدهای امروز و دیروز و کل رو بدم (ولی اینطوری که حال نمیده آخه نصف امکانتش میپره)یه راه خوب پیشنهاد کنید ممنون
 

sirjan-designe

کاربر تازه وارد
تاریخ عضویت
16 نوامبر 2005
نوشته‌ها
58
لایک‌ها
0
محل سکونت
سرزميني كه اپن سورسه
یک چیزی رو توجه کردین نصف پستهای این تاپیک رو خودم زدم خوب دیگه باید یک اعتماد به نفس کاذبی داشته باشم
 

hba

کاربر فعال صفحات داینامیک
کاربر فعال
تاریخ عضویت
8 آگوست 2004
نوشته‌ها
1,511
لایک‌ها
1
سن
39
محل سکونت
تهران-ونک-php-mysql
خوب ببین اول همه این ا رو یه فایل zip کن بزار راحت دانلود کنند که راحت تست کنند
بعد ببین ایم کدت
PHP:
<?php 
//this script writed Ramin Arabzadeh.this is first my script 
require_once('mysql_connect.inc.php'); 
require_once ('jdf.php'); 
$year= jdate("Y"); 
$month=jdate("m"); 
$day=jdate("d"); 
$hours=date("h"); 
$min=date("i"); 
$second=date("s"); 
$month1=($month-1); 
$day1=($day-1); 
$hours1=($hours-1); 
$year_now_hits=mysql_query("SELECT * FROM Hits WHERE year='$year'"); 
$row_year_now_hits=mysql_num_rows($year_now_hits); 

$year_now_visitor=mysql_query("SELECT * FROM Visitor WHERE year='$year'"); 
$row_year_now_visitor=mysql_num_rows($year_now_visitor); 

$month_now_hits=mysql_query("SELECT * FROM Hits WHERE month=$month and year=$year"); 
$row_month_now_hits=mysql_num_rows($month_now_hits); 

$month_now_visitor=mysql_query("SELECT * FROM Visitor WHERE month=$month and year=$year"); 
$row_month_now_visitor=mysql_num_rows($month_now_visitor); 

$last_month_hits=mysql_query("SELECT * FROM Hits WHERE month=$month1 and year=$year"); 
$row_last_month_hits=mysql_num_rows($last_month_hits); 

$last_month_visitor=mysql_query("SELECT * FROM Visitor WHERE month=$month1 and year=$year"); 
$row_last_month_visitor=mysql_num_rows($last_month_visitor); 

$today_hits=mysql_query("SELECT * FROM Hits WHERE day=$day and month=$month and year=$year"); 
$row_today_hits=mysql_num_rows($today_hits); 

$today_visitor=mysql_query("SELECT * FROM Visitor WHERE day=$day and month=$month and year=$year"); 
$row_today_visitor=mysql_num_rows($today_visitor); 

$yesterday_hits=mysql_query("SELECT * FROM Hits WHERE day=$day1 and month=$month and year=$year "); 
$row_yesterday_hits=mysql_num_rows($yesterday_hits); 

$yesterday_visitor=mysql_query("SELECT * FROM Visitor WHERE day=$day1 and month=$month and year=$year "); 
$row_yesterday_visitor=mysql_num_rows($yesterday_visitor); 

$last_one_hours_hits=mysql_query("SELECT * FROM Hits WHERE hours=$hours1 and year=$year and month=$month and day=$day "); 
$row_last_one_hours_hits=mysql_num_rows($last_one_hours_hits); 

include_once ("usersOnline.class.php"); 
$visitors_online = new usersOnline(); 
print " تعداد افراد آنلاين :  " ."<b>". $visitors_online->count_users() ."</b></p>"; 
print "<p>بازديدكنندگان امسال :   "."<b>".$row_year_now_visitor ."</b></p>"; 
print "<p>بازديدهاي امسال :   "."<b>".$row_year_now_hits ."</b></p>"; 
print "<p>بازديدكنندگان اين ماه :  "."<b>".$row_month_now_visitor."</b></p>"; 
print "<p>بازديدهاي اين ماه :  "."<b>".$row_month_now_hits."</b></p>"; 
print "<p>بازديدكنندگان ماه گذشته :  "."<b>".$row_last_month_visitor."</b></p>"; 
print "<p>بازديدهاي ماه گذشته :  "."<b>".$row_last_month_hits."</b></p>"; 
print "<p>بازديدكنندگاه امروز :   "."<b>".$row_today_visitor ."</b></p>"; 
print "<p>بازديدهاي امروز :   "."<b>".$row_today_hits ."</b></p>"; 
print "<p>بازديدكنندگان ديرورز :   "."<b>".$row_yesterday_visitor ."</b></p>"; 
print "<p>بازديدهاي ديروز :   "."<b>".$row_yesterday_hits ."</b></p>"; 
print "<p>بازديدهاي 1 ساعت پيش :   "."<b>".$row_last_one_hours_hits ."</b></p>"; 

?>



خیلی اضافه داره که یک باز fetch کنی و بعد متغییری بخوانی
این طوری:
PHP:
$mycn=    //database conect hast
$sql=mysql_query("SELECT * FROM Hits WHERE month=$month1 and year=$year"); 
$result=mysql_query($sql,$mycn);
$row=mysql_fetch_array($result);


$row_last_month_visitor=$row(month_now_hits); 
$row_last_month_visitor=$row(month_now_visitorr); 
$row_last_month_hits=$row(last_month_hits); 
$row_last_month_visitor=$row(last_month_visitor);

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

sirjan-designe

کاربر تازه وارد
تاریخ عضویت
16 نوامبر 2005
نوشته‌ها
58
لایک‌ها
0
محل سکونت
سرزميني كه اپن سورسه
آقا HBA ممنون از جوابت واقعا خوشحالم کردی درباره RATING هم من دیدم بالای سطر ستاره داره خودم زدم شاید یکی به درد دلمن برسه که رسید البته
 

hba

کاربر فعال صفحات داینامیک
کاربر فعال
تاریخ عضویت
8 آگوست 2004
نوشته‌ها
1,511
لایک‌ها
1
سن
39
محل سکونت
تهران-ونک-php-mysql
حامد هستم
خوشحالم استفاده کردی
 

sirjan-designe

کاربر تازه وارد
تاریخ عضویت
16 نوامبر 2005
نوشته‌ها
58
لایک‌ها
0
محل سکونت
سرزميني كه اپن سورسه
حامد جان فقط يك مشكلي من اينو كه گفتي درست نگرفتم ميدونم تو همه رو به آرايه تبديل كردي ولي آخه چه جوري ميشه تعداد ركودهاي آرايه ها رو بشمارم؟؟؟؟يكم توضي بده ممنون
 

hba

کاربر فعال صفحات داینامیک
کاربر فعال
تاریخ عضویت
8 آگوست 2004
نوشته‌ها
1,511
لایک‌ها
1
سن
39
محل سکونت
تهران-ونک-php-mysql
این طوری می شمارند
select count(*) from table
دیدی باید رو توابع مای اسکیوال بیشتر کار کنی اصل php به نظر من همینا هست

برای گرفتن چند بار هم for می زاری چند بار fetch می کنی و echo می کنی
 

sama_sally

Registered User
تاریخ عضویت
5 آپریل 2005
نوشته‌ها
2,598
لایک‌ها
1
سن
35
محل سکونت
Essen, Deutschland
مشکل همین تعداد زیاده
از همین روشی که حامد گفت یه استفاده بکن چون درسته!
 
بالا