Създаване на статистика за отваряне на невалидни страници
Здравейте Smile
В този урок ще ви покажа как да направите статистика за отворените невалидни страници Smile
Ще използваме .htaccess файл в който ще пишем това:
<Files errors.inc>
Order allow,deny
Deny from all
Satisfy All
</Files>
ErrorDocument 404 /404.php
ErrorDocument 403 /403.php
ErrorDocument 400 /400.phpНека разгледаме скрипта:
<Files errors.inc>
Order allow,deny
Deny from all
Satisfy All
</Files>С този код забраняваме отварянето на файлa errors.inc (в него се записват грешките).
ErrorDocument 404 /404.php
тук задаваме файла който да излиза ако има грешка 404 (невалидна страница/невалиден файл)
ErrorDocument 403 /403.php
тук задаваме файла който да излиза ако има грешка 403 (невалидна страница/невалиден файл)
ErrorDocument 400 /400.php
тук задаваме файла който да излиза ако има грешка 400 (Bad request)
Сейфаме файла като .htaccess и го качваме на сървъра 🙂
Следващия файл:
404.php
В този файл се съдържа информация за страницата която излиза когато има грешка 404 и също така я използваме за запис на логовете Smile
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
<meta http-equiv="refresh" content="5;url=/">
<style type="text/css">
<!--
body{
background : #f4f9ff;
}
-->
</style>
<title>404 - Page not found</title>
</head>
<body>
<table align="center">
<tr><td style="border : 1px solid #008aff;">
<table align="center">
<tr><td width="400" style="background : #80c5ff; font-family:Tahoma; font-size:11px;" align="center"><h2><?php echo $_SERVER['HTTP_HOST']; ?> - 404 - Page not found</h2></td></tr>
<tr><td height="200" style="background : #80c5ff; font-family:Tahoma; font-size:11px;" align="center" valign="top"><br /><br />
<h3>Грешка 404</h3>
След 5 секунди ще бъдете пренасочени към http://<?php echo $_SERVER['HTTP_HOST']; ?>/</td></tr>
</table>
</td></tr>
</table>
<?php
$type="error 404";
include("error.php");
?>
</body>
</html>Най-голямата част от скрипта е само html 🙂
ето какво прави пхп кода в тази страница:
$type=“error 404″;
с променливата $type задаваме типа на грешката (грешка 404)
include(„error.php“);
с тази команда инклъдваме файла error.php за който ще намерите обяснение по-долу 🙂
файл 403.php
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
<meta http-equiv="refresh" content="5;url=/">
<style type="text/css">
<!--
body{
background : #f4f9ff;
}
-->
</style>
<title>403 - Page not found</title>
</head>
<body>
<table align="center">
<tr><td style="border : 1px solid #008aff;">
<table align="center">
<tr><td width="400" style="background : #80c5ff; font-family:Tahoma; font-size:11px;" align="center"><h2><?php echo $_SERVER['HTTP_HOST']; ?> - 403 - Page not found</h2></td></tr>
<tr><td height="200" style="background : #80c5ff; font-family:Tahoma; font-size:11px;" align="center" valign="top"><br /><br />
<h3>Грешка 403</h3>
След 5 секунди ще бъдете пренасочени към <?php echo $_SERVER['HTTP_HOST']; ?></td></tr>
</table>
</td></tr>
</table>
<?php
$type="error 403";
include("error.php");
?>
</body>
</html>Сега файла 400.php
мисля че няма нужда от обеснения 🙂 Същото е Smile
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
<meta http-equiv="refresh" content="5;url=/">
<style type="text/css">
<!--
body{
background : #f4f9ff;
}
-->
</style>
<title>400 - Bad request</title>
</head>
<body>
<table align="center">
<tr><td style="border : 1px solid #008aff;">
<table align="center">
<tr><td width="400" style="background : #80c5ff; font-family:Tahoma; font-size:11px;" align="center"><h2><?php echo $_SERVER['HTTP_HOST']; ?> - 400 - Bad request</h2></td></tr>
<tr><td height="200" style="background : #80c5ff; font-family:Tahoma; font-size:11px;" align="center" valign="top"><br /><br />
<h3>Грешка 400</h3>
След 5 секунди ще бъдете пренасочени към http://<?php echo $_SERVER['HTTP_HOST']; ?>/</td></tr>
</table>
</td></tr>
</table>
<?php
$type="error 400";
include("error.php");
?>
</body>
</html>Същото като горните 2 😉
Сега файла error.php
<?php
$ip = $_SERVER['REMOTE_ADDR'];
$myFile = "errors.inc";
$self=$_SERVER['REQUEST_URI'];
$date = date("F j, Y, g:i:s a");
$fh = fopen($myFile, 'a+') or die("Error!!");
fwrite($fh, "<tr><td class=\"IP\"> [ ".$ip." ] </td><td class=\"IP\"> [ ".$date." ] </td><td class=\"IP\"> [ <b>".$type."</b> ] </td><td class=\"IP\">[ ".$self." ] </tr>\n");
fclose($fh);
?>Малко описание Smile :
$ip = $_SERVER[‘REMOTE_ADDR’];
присвояване на ип в променливата $ip
$myFile = „errors.inc“;
Файла в който ще се записват IP-тата и грешките.
$self=$_SERVER[‘REQUEST_URI’];
Скрипта взима съдържанието което е невалидно в страницата.
$date = date(„F j, Y, g:i:s a“);
Датата която ще стои срещу грешката и IP-то.
$fh = fopen($myFile, ‘a+’) or die(„Error!!“);.
Отваряне на файла (ако го няма го прави автоматично, но трябва да му задададете CHMOD 777 !!!)
fwrite($fh, "<tr><td class=\"IP\"> [ ".$ip." ] </td><td class=\"IP\"> [ ".$date." ] </td><td class=\"IP\"> [ <b>".$type."</b> ] </td><td class=\"IP\">[ ".$self." ] </tr>\n");Пише в файла изходния резултат.
fclose($fh);
Затваряме файла.
Такам, почти свършихме Smile
Сега остава да направим админ панела и останалите опции в него 😉
правите папка admin
в нея правите файл style.css със съдържание:
html,body,a,td,input, textarea{
font-family: Tahoma;
font-size:12px;
color: gray;
}
a:link,a:active,a:visited {
text-decoration: none; color : blue;
}
a:hover {
text-decoration: none; color : gray;
}
textarea,input{border:1px dotted gray;}
td.ip{border:1px solid #cccccc;}файл index.php
<?php
include("./include/auth.php");
?>
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Admin panel</title>
</head><body>
<h1>Admin Panel</h1>
<hr align="left" style="width:600px;border:1px dotted blue;">
<table border="0" width="100%">
<tr>
<td valign="top">
<?php
include("./include/ip.php");
?>
</td></tr></table>
</body>
</html>В началото на файла инклудваме auth.php който се намира в папка admin/include
Файла auth.php съдържа:
<?php
$ip = $_SERVER['REMOTE_ADDR'];
$allow=array("ВАШЕТО IP");
$broi = count($allow);
for ($i=0; $i<=$broi-1; $i++)
{ if ($allow[$i] == $ip) { $ok=1; } }
if(!$ok)
{echo"<h1>Access Denied!</h1>";exit;}
?>Където виждате по-горе да пише ВАШЕТО IP замествате с вашето IP 🙂
(можете да си видите IP-то от този сайт: http://whatismyip.org/ )
в папка admin/include имаме още един файл – ip.php
Файла ip.php съдържа:
<?php
include("auth.php");
echo "<h2>Грешки при отварянето на сайта</h2><br />";
echo "\n";
$chistene=$_POST['chistene'];
$ok=$_GET['ok'];
if($chistene=="2"){
echo'
<table>
<tr><td>Сигурни ли сте че искате да изчистите всички логове?</td></tr>
<tr><td><br /><br />
<form action="" method="get">
<input type="hidden" name="ok" value="1">
<input type="submit" value="Да">
<input type="button" name="no" value="Не" onclick="javascript:history.go(-1)">
</form>
</td></tr>
</table>';
}
if($ok=="1"){
$filename = "./errors.inc";
$handle = fopen($filename, "w");
if($handle){echo'<meta http-equiv="refresh" content="3;url=./">'; echo"Логфайла е изчистен успешно !";}
fclose($handle);
}
if(empty($chistene) and empty($ok)){
echo '<form action="" method="post">
<input type="hidden" name="chistene" value="2">
<input type="submit" value="Изчисти логовете">
</form>';
$filename = "./errors.inc";
$handle = fopen($filename, "r");
$contents = @fread($handle, filesize($filename)) or die("Файла е празен !");
if($contents){
echo'
<br />
<table border="0">'."\n";
echo'<tr><td class="IP">IP Адрес</td><td class="IP">Дата</td><td class="IP">Грешка No.</td><td class="IP">Страница</td></tr>';
echo ($contents);
echo'</table>'."\n";
}
fclose($handle);
}
?>Разглеждаме файла:
include(„auth.php“);
изкарваме съдържанието от файла auth.php
ако вашето ип не е записано там получавате съобщение „Acceess denied !“
$chistene=$_POST[‘chistene’];
$ok=$_GET[‘ok’];
Взимане на $_POST и $_GET от формата по-долу
if($chistene=="2"){
echo'
<table>
<tr><td>Сигурни ли сте че искате да изчистите всички логове?</td></tr>
<tr><td><br /><br />
<form action="" method="get">
<input type="hidden" name="ok" value="1">
<input type="submit" value="Да">
<input type="button" name="no" value="Не" onclick="javascript:history.go(-1)">
</form>
</td></tr>
</table>';
}Ако $_POST на chistene е равна на 2 излиза подвръждението за изпразване на лог файла.
if($ok=="1"){
$filename = "./errors.inc";
$handle = fopen($filename, "w");
if($handle){echo'<meta http-equiv="refresh" content="3;url=./errors.php">'; echo"Логфайла е изчистен успешно !";}
fclose($handle);
}Ако формата за изпразване на лог файла е подврърдена скрипта отваря файла с записите на IP-тата и трие всичко в него.
if(empty($chistene) and empty($ok)){
echo '<form action="" method="post">
<input type="hidden" name="chistene" value="2">
<input type="submit" value="Изчисти логовете">
</form>';
$filename = "./errors.inc";
$handle = fopen($filename, "r");
$contents = @fread($handle, filesize($filename)) or die("Файла е празен !");
if($contents){
echo'
<br />
<table border="0">'."\n";
echo'<tr><td class="IP">IP Адрес</td><td class="IP">Дата</td><td class="IP">Грешка No.</td><td class="IP">Страница</td></tr>';
echo ($contents);
echo'</table>'."\n";
}
fclose($handle);
}Ако нито е излизала формата за питането, нито е подвръждавано на нея скрипта изкарва IP-тата и грешките до момента
Ако файла е празен изкарва Файла е празен ! Smile
Това е за сега Smile


