Php ìåëî÷è

Çàêóïèòü äðîáåìåòíûå óñòàíîâêè áàðàáàííîãî òèïà îïòîì.

Php-web-äèçàéí > Php ìåëî÷è

Çäåñü ìû ïðèâîäèì òå ôóíêöèè, êîòîðûå íå ñîâñåì íóæíû íà ñàéòå, íî êòî çíàåò, êàê íàì êàæåòñÿ, áåç íèõ, ïðîñòî, íå îáîéòèñü.

1. Ôóíêöèÿ îïðåäåëåíèÿ äëèòåëüíîñòè ïðîöåññà ãåíåðàöèè ñòðàíè÷êè html ñåðâåðîì.
Îíà ïðàêòè÷åñêè ñîâñåì íå íóæíà, íî òàê ðàäè ïðèõîòè, ìîæíî ïîñòàâèòü åå è, òîãäà, ìû áóäåì çíàòü ñêîëüêî âðåìåíè ãåíåðèðóåòñÿ ñòðàíè÷êà

<?
$time1 = time(); //ñòîèò â íà÷àëå ñêðèïòà
$time_m1 = microtime();
//--------------------
// çäåñü èäåò òåêñò íàøåãî ñêðèïòà
//--------------------
$time2 = time(); //ñòîèò â êîíöå ñêðèïòà
$mtime = abs ($time2 - $time1);
$time_m2 = microtime();
$mtime_m = abs ($time_m2 - $time_m1);
$mtime_m = substr($mtime_m, 2, 3);
$mtime .= "." ."$mtime_m";
// âûâîäèì â îêíî áðîóçåðà $mtime - âðåìÿ ãåíåðàöèè ñòðàíèöû.
echo $mtime;
?>

2. Ôóíêöèÿ îïðåäåëåíèÿ áðîóçåðà ïîëüçîâàòåëÿ.
Ó íàñ îíà îïðåäåëÿåò áðîóçåð: Explore, Netscape, Opera, åñëè ïðîãðàììà íå íàõîäèò ýòèõ áðîóçåðîâ, îíà ðåøàåò, ÷òî ýòî Robot, òî åñòü ïîëüçîâàòåëü îáðàòèëñÿ ê ñàéòó íå èñïîëüçóÿ áðîóçåð, à ïðîñòî ñêà÷èâàåò ôàéëû, èñïîëüçóÿ ñâîé ñåðâåð, âêëþ÷èâ ïðîãðàììó ðîáîò. Äëÿ ÷åãî íàäî îïðåäåëÿòü ïðèøåë íà ñàéò áðîóçåð èëè ðîáîò? Ïðîãðàììû - ðîáîòû - ýòî Ïîèñêîâûå ñèñòåìû: ßndex, Rambler, Aport, è äð. Ðàáîòàþò îíè ñëåäóþùèì îáðàçîì: ñíà÷àëà Ïîèñêîâàÿ ñèñòåìà - ðîáîò èùåò íà ñàéòå âñå ññûëêè, à ïîòîì ñêà÷èâàåò ñåáå âñå ñòðàíè÷êè, íàéäåííûå ïî ññûëêàì, íå îòêðûâàÿ èõ â áðîóçåðå, ïîòîìó ÷òî íà äàííîì ýòàïå ýòî èì íå íàäî. Ðàáîòàþò îíè î÷åíü áûñòðî, ê ïðèìåðó, ßndex ñêà÷èâàë ñ íàøåãî ñàéòà â ñåêóíäó äî 10 ñòðàíèö, òî åñòü 10 ðàç â ñåêóíäó îáðàùàëñÿ ê íàøåìó ñêðèïòó. Òåïåðü ïðåäñòàâüòå, ÷òî íà ñàéò çàõîäèò åùå 3 ÷åëîâåêà ÷åðåç áðîóçåð, ïûòàÿñü îáðàùàòüñÿ ê áàçàì äàííûõ, òàê êàê ìû íå èñïîëüçóåì MySql, ó íàñ âîçíèêàþò ñåðüåçíûå ïðîáëåìû ñ ñîâìåñòíûì äîñòóïîì íà ÷òåíèå è çàïèñü â ýòè áàçû, ïîýòîìó îïðåäåëÿÿ, ÷òî ê íàì çàøëà ïðîãðàììà ðîáîò, ìû â íàøåì ñêðèïòå ñòàâèì ïðåïÿòñòâèå â ñêà÷èâàíèè ñòðàíèö (ó íàñ âðåìåííîé äèàïàçîí îæèäàíèÿ, ïîñëå ñêà÷êè ðîáîòîì îäíîãî ôàéëà 2 ñåêóíäû), òî åñòü, òåïåðü ßndex ñêà÷èâàåò ñ íàøåãî ñàéòà çà 2 ñåêóíäû îäíó ñòðàíè÷êó. È ýòî, äåéñòâèòåëüíî, ñåðüåçíàÿ ïðîáëåìà. Îáû÷íî, ïðîãðàììû ðîáîòû ñêà÷èâàþò 500 ñòðàíèö ñ ñàéòà. Åùå îäèí ïëþñ òàêîãî ïîäõîäà ñîñòîèò â òîì, ÷òî åñòü ññûëêè íà ñàéòå, êîòîðûå ìû íå õîòèì, ÷òîáû áûëè ïðîèíäåêñèðîâàíû â ïîèñêîâûõ ñèñòåìàõ. Íàïðèìåð, ó íàñ åñòü ðàçäåë Ñòàòèñòèêà ñàéòîâ, íà êîòîðîì, èäóò åæåìèíóòíûå èçìåíåíèÿ, ßndex, çàõîäÿ ÷åðåç íåäåëþ èíäåêñèðóåò èõ ïî íîâîìó è, â èòîãå, ïðàêòè÷åñêè îäíè è òå æå ñòðàíèöû ïðîèíäåêñèðîâàíû ó íåãî ïî 50 ðàç, ÷òî ìåøàåò ïîëüçîâàòåëÿì èñêàòü äåéñòâèòåëüíî íóæíóþ èíôîðìàöèþ â ýòèõ ïîèñêîâèêàê î íàøåì ñàéòå. Òî åñòü, åñëè ê íàì çàõîäèò ïîèñêîâèê, ìû ïðÿ÷åì îò íåãî íåæåëàòåëüíûå ññûëêè, êîòîðûå áðîóçåðàì âèäíû.

<?
//Ôóíêöèÿ îïðåäåëåíèÿ áðîóçåðà ïîëüçîâàòåëÿ
function broser ($pass_br){
if (eregi("Opera", $pass_br)) { $broser = "Opera"; }
else { if (eregi("MSIE", $pass_br)){ $broser = "Explore"; }
else { if (eregi("Gecko", $pass_br) or eregi("Netscape", $pass_br))
{ $broser = "Netscape"; } } }
if($broser == ""){$broser = "Robot";}
return $broser;
}
//îïðåäåëÿåì HTTP_USER_AGENT
$user = broser ($HTTP_SERVER_VARS["HTTP_USER_AGENT"]);
//åñëè ïîëüçîâàòåëü Robot, ïðîãðàììà çàñûïàåò íà 2 ñåêóíäû
if ($user == "Robot") { sleep(2); }
//--------------------
// çäåñü èäåò òåêñò íàøåãî ñêðèïòà
//--------------------
//åñëè ñêà÷èâàíèå ïîèñõîäèò ðîáîòîì, îí íå âèäèò ñëåäóþùóþ ññûëêó
if ($user != "Robot") {echo"ññûëêà, êîòîðàÿ ðîáîòó íå âèäíà";}
?>

3. Ôóíêöèÿ îïðåäåëåíèÿ IP.
Ñåðâåð, èíîãäà âûäàåò ïðè îïðåäåëåíèè IP àäðåñà ïîëüçîâàòåëÿ, íå îäèí IP - 195.162.35.251, à íåñêîëüêî (unknown, 195.162.35.251, 195.162.45.351) Äëÿ ïðàâèëüíîãî îïðåäåëåíèÿ IP, ââåäåì íåáîëüøóþ ôóíêöèþ. Ñíà÷àëà ìû îïðåäåëÿåì IP àäðåñ, ïîòîì ðàñêëàäûâàåì åãî íà ñîñòàâíûå ÷àñòè, âûâîäèì òîëüêî ïåðâûé ïîïàâøèéñÿ íîðìàëüíûé IP. Çà÷åì ýòî íàäî? Äëÿ îïðåäåëåíèÿ ïðàâèëüíîé ñòàòèñòèêè ïî ñàéòó, ïðàâèëüíîé çàïèñè â áàçó äàííûõ, äîïóñòèì, â Ãîñòåâóþ èëè Ôîðóì. Êðîìå ýòîãî, åñëè ñåðâåð íå ñìîã îïðåäåëèòü IP, òî â èòîãå â ïðîãðàììó ñåðâåð âûäàñò $ip = unknown

<?
//îïðåäåëÿåì IP
if(empty($user_ip)){if (getenv('HTTP_X_FORWARDED_FOR'))
{$user_ip=getenv('HTTP_X_FORWARDED_FOR'); }
else{$user_ip=getenv('REMOTE_ADDR'); }}
else{$user_ip=getenv('REMOTE_ADDR'); }
//ðàñêëàäûâàåì IP íà ñîñòàâíûå ÷àñòè è èùåì â íèõ íîðìàëüíûé Ip
if(15 < strlen($user_ip)){
$user_ip_pass = split(", ", $user_ip);
for($i=0; $i < sizeof($user_ip_pass); $i++){
if(eregi("unknown", $user_ip_pass[$i]) or $user_ip_pass[$i] == ""){}
else {
if (ereg("[a-zA-Z]", $user_ip_pass[$i])){}
else{$user_ip = $user_ip_pass[$i]; break; }
}
if($i == sizeof($user_ip_pass)-1){$user_ip = "unknown";}
}
}
//âûâîäèì äëÿ ïðîãðàììû òîëêî ïåðâûé ïîïàâøèéñÿ íîðìàëüíûé Ip
$ip = $user_ip;
//--------------------
// çäåñü èäåò òåêñò íàøåãî ñêðèïòà
//--------------------
?>

4. Ôóíêöèÿ ðàçäåëåíèÿ IP ïîëüçîâàòåëÿ ïî ñîñòàâëÿþùèì ÷àñòÿì.
Ýòî íàäî, íàïðèìåð, ÷òîáû ñêðèïò ïðî÷èòàë äî êàêîé-òî òî÷êè IP, íå äàëüøå, íàïðèìåð, äëÿ òîãî, ÷òîáû óçíàòü ñêîëüêî óíèêàëüíûõ ïîñåòèòåëåé çàïèñàíî â áàçó ïî ïîñåòèòåëÿì (ó íàñ ýòî âèäíî.  èòîãå, ïîëüçîâàòåëü 213.172.16.201 è 213.172.19.124 áóäåò èäåíòèôèöèðîâàí ñêðèïòîì êàê îäèí, ïðèøåäøèé ñ îäíîãî êîìïüþòåðà.

<?
$ip = "213.172.16.201";
//ôóíêöèÿ, äëÿ âûäåëåíèå îïðåäåëåííîãî êîëè÷åñâî çíàêîâ èç IP
function obrez ($ip_pass){
if ( ereg("([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)", $ip_pass, $array))
$array[3] = substr ( $array[3], 0, 1);
$ip_pass = "$array[1].$array[2].$array[3]";
return $ip_pass;
}
//îáðåçàåì IP äî 213.172.1
$obrez_ip = obrez ($ip);
//--------------------
// çäåñü èäåò òåêñò íàøåãî ñêðèïòà
//--------------------
?>

5. Ìû íå äîïóñêàåì ê ñàéòó ïîëüçîâàòåëåé, ó êîòîðûõ íå îïðåäåëèëñÿ IP.  ýòîì ñëó÷àå, ñåðâåð ïðè åãî îïðåäåëåíèè, âûäàåò $ip = "unknown", òî åñòü íåèçâåñòíûé. Ïðîèñõîäèò ýòî èç-çà òîãî, ÷òî ìíîãèå ïðîêñè - ñåðâåðà, ÷åðåç êîòîðûå çàõîäÿò ïîëüçîâàòåëè íåïðàâèëüíî åãî âûäàåò íàøåìó ñåðâåðó. Íà 100 ïîñåòèòåëåé -  5 IP àäðåñîâ íå îïðåäåëÿåòñÿ - ýòî ïðàêòèêà èíòåðíåòà. Òåïåðü ïðåäñòàâüòå, ÷òî òàêîé ïîëüçîâàòåëü ñäåëàë ÷òî-òî ïëîõîå íà Âàøåì ñàéòå, íàéòè åãî Âû óæå íèêàê íå ñìîæåòå, ïîýòîìó ìû áû ñîâåòîâàëè âñåì, íå äîïóñêàòü â ñàéòó ïîñåòèòåëåé ñ íåîïðåäåëåííûì IP. Õîòÿ,  IP ìîæíî òàê èçìåíèòü ÷åðåç òîò æå ïðîêñè - ñåðâåð, ÷òî Âû è íå ïîäóìàåòå. Ó íàñ áûë ïîñåòèòåëü: 1.1.1.1. èëè 127.0.0.0., òàêèõ IP áûòü íå ìîæåò, ïîýòîìó ýòî íå ïàíàöåÿ, íî âñå - ðàâíî, ìû äîáàâèëè ýòî îãðàíè÷åíèå...

<?
$ip = "unknown";
//ôóíêöèÿ, äëÿ íå äîïóñêà íà ñàéò IP = unknown, òî åñòü íåîïðåäåëåííûõ IP
if (eregi("unknown", $ip))
{
//âûâîäèì âåðõ ñòðàíèöû øàáëîíà
echo "Ê ñîæàëåíèþ, Âû íå ìîæåòå áûòü äîïóùåíû ê ñàéòó.
Ïðè÷èíà: Ñåðâåð íå ñìîã îïðåäåëèòü Âàø IP àäðåñ";
//âûâîäèì íèç ñòðàíèöû øàáëîíà è îñòàíàâëèâàåì ïîëüçîâàòåëÿ
exit;
//--------------------
// çäåñü èäåò òåêñò íàøåãî ñêðèïòà
//--------------------
}
?>

6. Åùå îäíà ôóíêöèÿ: çàïðåò IP ê äîñòóïó íà ñàéò.
Åñëè Âû âèäèòå, ÷òî êàêîé-òî ïîëüçîâàòåëü íà÷àë "áàëîâàòüñÿ" íà ñàéòå, Âàì íóæíî òóò æå ïåðåêðûòü åìó äîñòóï íà ñàéò.  ñÿçè ñ ÷åì, â Àäìèí-ôàéëå ó Âàñ äîëæíà áûòü ôóíêöèÿ çàïèñè â ôàéë çàïðåòà (íàïðèìåð, zapret_sait.txt) íåæåëàòàëüíûõ IP àäðåñîâ, êîòîðûå áóäóò áëîêèðîâàòüñÿ ïðîãðàììîé. Ïðè çàõîäå íà ñàéò òàêîãî IP àäðåñà ïðîáåãàåì ïî ôàéëó çàïðåòà è, åñëè íàõîäèì, ÷òî IP ñîâïàäàþò, çàïðåùàåì äîñòóï ê ñàéòó.

<?
//$ip - IP ðàíåå îïðåäåëåííûé ñêðèïòîì
// ïðîáåãàåì ïî ôàéëó çàïðåòà äîñòóïà ê ñàéòó
$zapret_sait = forum'>file("zapret_sait.txt");
for ($i = 0; $i < count($ban_sait); $i++)
{
$ban[$i] = ereg_replace("\n","",$ban_sait[$i]);
list($banip,$banmessage)= spliti ("\::",$zapret_sait[$i]);
//åñëè, â ôàéëå íàõîäèì ñîâïàäåíèå ñ IP
if (eregi("^$banip$",$ip))
{
//âûâîäèì âåðõ ñòðàíèöû øàáëîíà
echo"Äîñòóï çàêðûò äëÿ ïîëüçîâàòåëÿ: $ip";
//âûâîäèì íèç ñòðàíèöû øàáëîíà è îñòàíàâëèâàåì ïðîãðàììó
exit;
}
}
//--------------------
// çäåñü èäåò òåêñò íàøåãî ñêðèïòà
//--------------------
}
?>

7. Íà íàøåì ñàéòå, ïðîãðàììó îñòàíàâëèâàåò ôóíêöèÿ exit; â îïðåäåëåííûõ ìåñòàõ, êîãäà ñêðèïò ïî çàïðîñó ïîëüçîâàòåëÿ âûïîëíèëñÿ è íåò ñìûñëà ïîëüçîâàòåëþ ïðîäîëæàòü äâèæåíèå äàëüøå ïî ýòîìó ñêðèïòó. Òî åñòü, âñå îòñåêè ïðîãðàììû âûãëÿäÿò òàê:
<?
if ($ôîðóì == "íà÷àòü")
{
//íà÷èíàåòñÿ ñêðèïò ôîðóìà
//çàêîí÷èëñÿ ñêðèïò ôîðóìà
exit;
}
if ($ãîñòåâàÿ == "íà÷àòü")
(
//íà÷èíàåòñÿ ñêðèïò ãîñòåâîé
//çàêîí÷èëñÿ ñêðèïò ãîñòåâîé
exit;
}
?>
 ñàìîì êîíöå ñêðèïòà, â ýòîì ñëó÷àå, ìû ñòàâèì "Îøèáêà", êîòîðàÿ îáîçíà÷àåò, ÷òî òàêîãî ôàéëà, òî åñòü ññûëêè, íåò íà íàøåì ñàéòå. Çà÷åì ýòî íàäî? Íà íàøåì ñàéòå ïðîèñõîäÿò èçìåíåíèÿ, à â ïîèñêîâûõ ñèñòåìàõ îñòàþòñÿ ñòàðûå ññûëêè, ïðè çàõîäå ïðîãðàììîé ðîáîòîì, ïîñëåäíÿÿ ñêà÷àåò ñ ñàéòà "Îøèáêó", ÷òî íåìàëîâàæíî. Íèæåñëåäóþùèé êóñîê ñêðèïòà íàõîäèòñÿ â ñàìîì íèçó ïðîãðàììû è íà÷èíàåò ðàáîòàòü, êîãäà â ñêðèïòå íå íàéäåíî íèêàêèõ ññûëîê.

<?
$query = $HTTP_SERVER_VARS["QUERY_STRING"];
//âûâîäèì âåðõ ñòðàíèöû øàáëîíà
echo"https://âàø_ñàéò.ru/âàø_ôàéë.php?$query Òàêîãî url íåò íà íàøåì ñàéòå";
//âûâîäèì íèç ñòðàíèöû øàáëîíà
exit;
//Çäåñü çàâåðøàåòñÿ âåñü ñêðèïò
?>

Ñïàñèáî, ÷òî äî÷èòàëè äî êîíöà ýòó ñòðàíè÷êó, óäà÷è â ïðîãðàììèðîâàíèè.


Èñòî÷íèê: Àëåêñàíäð Óñòþãîâ




Ïðè ïåðåïå÷àòêå èíôîðìàöèè äåëàéòå, ïîæàëóéñòà, ññûëêó íà íàø ñàéò (ëèáî ïîäåëèòüñÿ âêîíòàêòå, ãóãë+ èëè äåëèòåñü â îäíîêëàññíèêàõ ñòàòü¸é). Ñïàñèáî!

Èñòî÷íèê: www.wr-script.ru©, 2004-2026ã.

Äåëèòåñü ñ äðóçüÿìè â ñîöñåòÿõ. Àêòèâíûå êîììåíòàòîðû ïîëó÷àþò ñâåæèå ñêðèïòû è áåñïëàòíûå äîðàáîòêè îò WR-Script.ru!

Âåðíóòüñÿ ê ñòàòüÿì ïîìîùè WEB-ìàñòåðó

WR-Счётчик