HTML, Excel, Word, SEOPHP êóðñ äëÿ ÷àéíèêîâ ⇒ Îòñëåæèâàíèå ïîëüçîâàòåëåé

PHP äëÿ "÷àéíèêîâ"

Èíñòðóìåíòû
Âûáèðàåì IDE
Âûáèðàåì Web-ñåðâåð
Âûáèðàåì ÑÓÁÄ
Ñòðóêòóðà ÿçûêà PHP
Ïåðâûé øàã
Ñèíòàêñèñ
Òèïû äàííûõ
Ïåðåìåííûå è êîíñòàíòû
Îïåðàòîðû
Âûðàæåíèÿ
Óïðàâëÿþùèå ñòðóêòóðû
Ôóíêöèè
Êëàññû
Èñêëþ÷åíèÿ
Îøèáêè
Ìàññèâû
Ãëîáàëüíûå ìàññèâû
Cookies
Ñåññèè
Çàãðóçêà ôàéëîâ
Ðàáîòà ñ ôàéëàìè
Ðàáîòà ñ ôàéëàìè íà äèñêå
Ðàáîòà ñ äàííûìè â ôàéëå
Ïðèìåð óïðàâëåíèÿ ôàéëàìè
Ðàáîòà ñ áàçàìè äàííûõ
Ïîäêëþ÷åíèå
Àíàëèç ðåçóëüòàòîâ
Âûïîëíåíèå çàïðîñîâ
Îòêëþ÷åíèå
Ïðèìåð: îòñëåæèâàíèå ïîëüçîâàòåëåé
Ðàáîòà â ñåòè
Îòïðàâêà ïî÷òû
Áåçîïàñíîñòü
HTTP-àóòåíòèôèêàöèÿ
Çàùèòà ëîãèíîì è ïàðîëåì
Àâòîìàòèçàöèÿ
Ðåãóëÿðíûå âûðàæåíèÿ â PHP
Èíòåãðàöèÿ
PHP è JavaScript



Îòñëåæèâàíèå ïîëüçîâàòåëåé


Àâòîð: Àðòåìüåâ Ñåðãåé Èãîðåâè÷
ICQ: 438856621
email: _spin_@bk.ru

Äîâîëüíî ÷àñòî ïðè ðàçðàáîòêå è ñîïðîâîæäåíèè ñàéòîâ âîçíèêàåò íåîáõîäèìîñòü îòñëåäèòü êîëè÷åñòâî ïîñåùåíèé îòäåëüíûõ ñòðàíèö è íåêîòîðûå ïàðàìåòðû ïîñåòèòåëåé.  ýòîì ïðèìåðå ìû ñäåëàåì ñêðèïò, àâòîìàòè÷åñêè ðåãèñòðèðóþùèé â áàçå äàííûõ IP-àäðåñà è òèïû áðàóçåðîâ ïîëüçîâàòåëåé.


Èòàê, ñêðèïò ïåðåä âàìè:

<?php
 	$server = 'localhost';
 	$user = 'root';
 	$password = 'root';
 	$database = 'mybase';
 	
	// ïîäêëþ÷àåìñÿ ê ñåðâåðó
	$dblink = mysql_connect($server, $user, $password);
 	
	if(!$dblink)
  		die('Îøèáêà ïîäêëþ÷åíèÿ ê ñåðâåðó:' . 
 				mysql_error($dblink));
 	
	// âûáèðàåì áàçó äàííûõ
	if(!mysql_select_db($database))
 		die('Îøèáêà ïîäêëþ÷åíèÿ ê áàçå äàííûõ:' .
  				mysql_error($dblink));
 	
	$sessid = session_id();

 	// ïîëó÷àåì àäðåñ ïîëüçîâàòåëÿ
	$ip = isset($_SERVER['REMOTE_ADDR'])?
 			$_SERVER['REMOTE_ADDR']:'';
	
	// ïîëó÷àåì îïèñàíèå áðàóçåðà
	$agent = isset($_SERVER['HTTP_USER_AGENT'])?
 			substr($_SERVER['HTTP_USER_AGENT'], 0, 99):'';

 	// ôîðìèðóåì çàïðîñ íà âñòàâêó äàííûõ
	$sql = "INSERT user_tracker
  			(session_id, enter_dt, user_ip, user_agent)
 			VALUES ('$sessid', NOW(), '$ip', '$agent')";

	// âûïîëíÿêì çàïðîñ è ïðîâåðÿåì ðåçóëüòàò 	
	$qry = mysql_query($sql, $dblink);
 	if(!$qry)
 	{
 		die('Îøèáêà âûïîëíåíèÿ çàïðîñà' .
  			mysql_error($dblink));
 	}
	// íè÷åãî íå âûâîäèì, ÷òîáû 
	// íå ìåøàòü âûâîäó îñíîâíîé ñòðàíèöû
?>

Ýòîò ñêðèïò íåîáõîäèìî ñîõðàíèòü ïîä èìåíåì tracker.php è âêëþ÷àòü ïåðâîé ñòðîêîé â êîä âñåõ ñòðàíèö, ïîñåùåíèå êîòîðûõ âû õîòèòå îòñëåæèâàòü.

<?php include("tracker.php") ?>
<html>
....

Òåïåðü ïðè êàæäîé çàãðóçêå ñòðàíèöû â áàçó äàííûõ áóäåò äîáàâëÿòüñÿ ñîîòâåòñòâóþùàÿ çàïèñü î äàííûõ ïîëüçîâàòåëÿ. Íî ïðîñòî ïðîñìàòðèâàòü çàïèñè - äåëî óòîìèòåëüíîå è ìàëîèíôîðìàòèâíîå. ×òîáû ïîëó÷èòü ñâîäíóþ ñòàòèñòèêó ñäåëàåì åù¸ îäèí ñêðèïò, íà ýòîò ðàç äëÿ èçâëå÷åíèÿ è îòîáðàæåíèÿ äàííûõ.

<?php
 	$server = 'localhost';
 	$user = 'root';
 	$password = 'root';
 	$database = 'mybase';

	// ïîäêëþ÷àåìñÿ ê ñåðâåðó
 	$dblink = mysql_connect($server, $user, $password);

 	if(!$dblink)
  		die('Îøèáêà ïîäêëþ÷åíèÿ ê ñåðâåðó:' . 
 				mysql_error($dblink));

	// âûáèðàåì áàçó äàííûõ
 	if(!mysql_select_db($database))
 		die('Îøèáêà ïîäêëþ÷åíèÿ ê áàçå äàííûõ:' . 
 				mysql_error($dblink));

	// âûáèðàåì íåîáõîäèìûå äàííûå ñ 
	// îäíîâëåìåííîé ãðóïïèðîâêîé
 	$sql = "SELECT user_ip, user_agent, 
					COUNT(user_agent) cnt 	
			FROM user_tracker
			GROUP BY user_ip, user_agent
			ORDER BY user_ip, user_agent";

	// âûïîëíÿåì çàïðîñ è ïðîâåðÿåì ðåçóëüòàò 	
	$qry = mysql_query($sql, $dblink);
 	if(!$qry)
 	{
 		die('Îøèáêà âûïîëíåíèÿ çàïðîñà' . 
 			mysql_error($dblink));
 	}

	// ïðîâåðÿåì íàëè÷èå çàïèñåé
 	$empty = mysql_num_rows($qry);

	// äàëüøå ïðè ïîìîùè PHP-âñòàâîê â HTML-êîä 
	// âûâîäèì ëèáî òàáëèöó ñ çàïèñÿìè, 
	// ëèáî ñîîáùåíèå îá îòñóòñòâèè çàïèñåé
?>
<html>
	<head>
	 	<title>Îò÷¸ò</title>
	</head>
<body>
 	<?php if($empty == 0){ ?>
 	 	<h1>Òàáëèöà ëîãîâ ïóñòà</h1>
 	<?php } else { ?>
 		<table border="1">
	 		<tr>
				<td>IP-àäðåñ ïîëüçîâàòåëÿ</td>
 				<td>Áðàóçåð ïîëüçîâàòåëÿ</td>
 				<td>Êîëè÷åñòâî ïðîñìîòðîâ</td>
 			</tr>
 		<?php $row = mysql_fetch_assoc($qry); 		while($row){?>
 			<tr>
 				<td>
 			<?php echo $row["user_ip"];?>
 				</td>
 				<td>
 			<?php echo $row["user_agent"];?>
 				</td>
 				<td>
 			<?php echo $row["cnt"];?>
 				</td>
 			</tr>
			<?php $row = mysql_fetch_assoc($qry);?>
 		<?php }?>
		</table>
 		<?php
	 		mysql_free_result($qry);
 			mysql_close($dblink);
 		}?>
 	</body>
</html>

Ñîõðàíèòå ýòî ñêðèïò â ôàéëå report.php è ìîæíî ïðèñòóïàòü ê òåñòèðîâàíèþ.

Ïåðåõîäèì ïî àäðåñó http://mysite/tracker.php è ïàðó ðàç îáíîâëÿåì ñòðàíèöó. Ïîñëå ýòîãî ïåðåõîäèì íà ñòðàíèöó îò÷¸òîâ ïî àäðåñó http://mysite/report.php è âèäèì òàáëèöó, â êîòîðîé îòìå÷åíû íàø IP-àäðåñ, îïèñàíèå áðàóçåðà è êîëè÷åñòâî çàãðóçîê.

Êîíå÷íî, â òàêîì âèäå òðåêåð ïðàêòè÷åñêè áåñïîëåçåí, íî åñëè äîáàâèòü ó÷¸ò èìåíè ñòðàíèöû, ó÷¸ò ïðåäûäóùèõ ñòðàíèö, äàòû âõîäà è âûõîäà, òî ïîëó÷èì âïîëíå ðàáîòîñïîñîáíûé èíñòðóìåíò äëÿ àíàëèçà òåêóùåé ïîñåùàåìîñòè ñàéòà è ïîïóëÿðíîñòè ðàçäåëîâ.

 



 íà÷àëî ñòðàíèöû



 íà÷àëî ñòðàíèöû