Webmaster общности: Predpriemach.com | SearchEngines.bg

    Създаване на статистика за отваряне на невалидни страници

    Здравейте 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

    Оставете коментар