Правильная страница 404

Тема в разделе "PHP", создана пользователем SergAgent, 2 май 2013.

  1. SergAgent

    SergAgent

    Регистрация:
    6 фев 2013
    Сообщения:
    119
    Симпатии:
    3
    Встречал сайты на которых если заходишь на не существующую страницу, там пишется что отправлено письмо администратору, мы будем разбираться почему эта страница не работает.
    В общем не надо что то такое, чтоб на указанный емэйл отправлялась ссылка страницы на которой высветилась ошибка 404, при возможности чтоб вместе с ссылкой отправлялся IP адресс и логин юзера, если он авторизирован, сайт на вордпрессе
     
  2. xotox

    xotox

    Регистрация:
    29 апр 2013
    Сообщения:
    12
    Симпатии:
    1
    а в чем проблема, создай если у тебя еще нет страницы для 404 ошибки и в ней добавь отправку письма с помощью функции mail() и в сообщение вставляй нужную тебе инфу.
     
  3. SergAgent

    SergAgent

    Регистрация:
    6 фев 2013
    Сообщения:
    119
    Симпатии:
    3
    страница есть, но функции писать не умею, пока что только ориентируюсь в готовом коде
     
  4. xotox

    xotox

    Регистрация:
    29 апр 2013
    Сообщения:
    12
    Симпатии:
    1
  5. SergAgent

    SergAgent

    Регистрация:
    6 фев 2013
    Сообщения:
    119
    Симпатии:
    3
    PHP:
    <?php get_header(); ?>
    <?php get_sidebar
    (); ?>
    <?php 
    include (TEMPLATEPATH "/sidebar_right.php"); ?>
    <div id="content">
    &nbsp;
                 <p><center><h2>Ошибкак 404</h2></center></p>
    <center><h2>Такой страницы не существует, проверь правильность введенного вами адреса</h2></center>
    &nbsp;
    </div>
    <?php get_footer(); ?>
    Вот так выглядит моя страница 404, может кто вместо меня напишет код который будет отправлять на мой мэйл письмо с ссылкой несуществующей страницы:?
     
  6. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    889
    Можно просто и банально ето сделать например так:
    PHP:
    <?php
    $mail 
    [email protected]';
    $url 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
    mail("$mail""404"$url);
    ?> 
     
    SergAgent нравится это.
  7. saxum2010

    saxum2010

    Регистрация:
    6 фев 2013
    Сообщения:
    111
    Симпатии:
    34
    В wp есть специальная функция для этого
    wp_mail()



    PHP:
    <?php 
    $to 
    "[email protected]";
    $subject '404 eror';
    $message =  "URL: http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
    $message .= "USER ip: $_SERVER[HTTP_CLIENT_IP]";
    wp_mail($to$subject$message); 
    ?> 
     
    SergAgent нравится это.
  8. SergAgent

    SergAgent

    Регистрация:
    6 фев 2013
    Сообщения:
    119
    Симпатии:
    3
    saxum2010, пока что пробовал ваш вариант, всё работает, но IP адреса в письме нету, как это исправить?
    кстати между " и USER надо ставить пробел, а то в письме слово USER склеивается с ссылкой, и получается еще один не существующий урл
     
  9. saxum2010

    saxum2010

    Регистрация:
    6 фев 2013
    Сообщения:
    111
    Симпатии:
    34
    PHP:
    <?php
     
    global $wpdb;
    global 
    $user_login $user_email;
    $to "[email protected]";
     
    $subject '404 eror';
    $message =  "URL: http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
     
    if(
    $ip $_SERVER['REMOTE_ADDR'])
    {
    $message .= "<br> USER ip: $ip";
    }
     
    if(
    $user_login)
    {
    $message .= "<br> USER login: $user_login";
    }
     
    wp_mail($to$subject$message);
    ?> 
     
    SergAgent нравится это.
  10. SergAgent

    SergAgent

    Регистрация:
    6 фев 2013
    Сообщения:
    119
    Симпатии:
    3
    <br> лишние
    ну а так все ок, и логин, и айпи отображается, логин конечно же если ошибку вызывает авторизированный пользователь
    --- добавлено: 4 май 2013 в 20:09 ---
    пипец 288 писем за день
     
  11. saxum2010

    saxum2010

    Регистрация:
    6 фев 2013
    Сообщения:
    111
    Симпатии:
    34
    пиши лучше в лог или в БД напрямую
     
    SergAgent нравится это.
  12. SergAgent

    SergAgent

    Регистрация:
    6 фев 2013
    Сообщения:
    119
    Симпатии:
    3
    лучше в лог файл, как это сделать?
     
  13. saxum2010

    saxum2010

    Регистрация:
    6 фев 2013
    Сообщения:
    111
    Симпатии:
    34
    PHP:
    <?php
     
    global $wpdb;
    global 
    $user_login $user_email;
     
    $file='log.txt';//путь к лог файлу
     
    $log_text date("d.m.Y-H:i:s ");
     
    $log_text .=  "URL: http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
     
    if(
    $ip $_SERVER['REMOTE_ADDR']) {$log_text .= "<br> USER ip: $ip";}
    if(@
    $user_login) {$log_text .= "<br> USER login: $user_login";}
     
    $log_text .= date("d.m.Y-H:i:s ");
     
    $fileopen=fopen($file"a");
    fputs($fileopen$log_text);
    fclose($fileopen);
     
    ?> 
     
    SergAgent нравится это.
  14. SergAgent

    SergAgent

    Регистрация:
    6 фев 2013
    Сообщения:
    119
    Симпатии:
    3
    не пойму как правильно указать путь к файлу, а то что то не записывает в него ничего, и какие права ставить на файл? файл находится там же где и index.php
     
  15. saxum2010

    saxum2010

    Регистрация:
    6 фев 2013
    Сообщения:
    111
    Симпатии:
    34
    HTML:
    $file= $_SERVER["DOCUMENT_ROOT"].'log.txt';
    
    ставь права 777
     
    SergAgent нравится это.
  16. SergAgent

    SergAgent

    Регистрация:
    6 фев 2013
    Сообщения:
    119
    Симпатии:
    3
    что то всё равно не записывает, и что то вообще перестал работать шаблон 404
     
  17. SergAgent

    SergAgent

    Регистрация:
    6 фев 2013
    Сообщения:
    119
    Симпатии:
    3
    saxum2010, как сделать чтоб письма приходили только если ошибка у авторизированого пользователя?
     
  18. Wooka

    Wooka

    Регистрация:
    7 май 2013
    Сообщения:
    10
    Симпатии:
    3
    PHP:
    <?php get_header(); ?>
    <?php get_sidebar
    (); ?>
    <?php 
    include (TEMPLATEPATH "/sidebar_right.php");
     
     
    global 
    $wpdb;
    global 
    $user_login $user_email;
     
    if ( 
    $user_login )
    {
    $to "[email protected]";
    $subject '404 eror';
    $message "URL: http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]<br> USER login: $user_login";
    wp_mail($to$subject$message);
    }
    ?>
    <div id="content">
    &nbsp;
    <p><center><h2>Ошибка 404</h2></center></p>
    <center><h2>Такой страницы не существует, проверь правильность введенного вами адреса</h2></center>
    &nbsp;
    </div>
    <?php get_footer(); ?>
     
     
    SergAgent нравится это.
  19. saxum2010

    saxum2010

    Регистрация:
    6 фев 2013
    Сообщения:
    111
    Симпатии:
    34
    как написал выше Wooka, только if ( @$user_login ) - поскольку переменная может быть не определена и может вызвать ошибку.

    $file= $_SERVER['DOCUMENT_ROOT'] . 'log.txt';
    создай в корне файл log.txt и назначь ему права 777, и попробуй еще раз запустить
     
    SergAgent нравится это.
  20. Wooka

    Wooka

    Регистрация:
    7 май 2013
    Сообщения:
    10
    Симпатии:
    3
    Вообще, скрывание ошибок плохое дело
     
    SergAgent и saxum2010 нравится это.