Встречал сайты на которых если заходишь на не существующую страницу, там пишется что отправлено письмо администратору, мы будем разбираться почему эта страница не работает. В общем не надо что то такое, чтоб на указанный емэйл отправлялась ссылка страницы на которой высветилась ошибка 404, при возможности чтоб вместе с ссылкой отправлялся IP адресс и логин юзера, если он авторизирован, сайт на вордпрессе
а в чем проблема, создай если у тебя еще нет страницы для 404 ошибки и в ней добавь отправку письма с помощью функции mail() и в сообщение вставляй нужную тебе инфу.
PHP: <?php get_header(); ?><?php get_sidebar(); ?><?php include (TEMPLATEPATH . "/sidebar_right.php"); ?><div id="content"> <p><center><h2>Ошибкак 404</h2></center></p><center><h2>Такой страницы не существует, проверь правильность введенного вами адреса</h2></center> </div><?php get_footer(); ?> Вот так выглядит моя страница 404, может кто вместо меня напишет код который будет отправлять на мой мэйл письмо с ссылкой несуществующей страницы:?
Можно просто и банально ето сделать например так: PHP: <?php$mail = 'вашемейл@com';$url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];mail("$mail", "404", $url);?>
В 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); ?>
saxum2010, пока что пробовал ваш вариант, всё работает, но IP адреса в письме нету, как это исправить? кстати между " и USER надо ставить пробел, а то в письме слово USER склеивается с ссылкой, и получается еще один не существующий урл
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);?>
<br> лишние ну а так все ок, и логин, и айпи отображается, логин конечно же если ошибку вызывает авторизированный пользователь --- добавлено: 4 май 2013 в 20:09 --- пипец 288 писем за день
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); ?>
не пойму как правильно указать путь к файлу, а то что то не записывает в него ничего, и какие права ставить на файл? файл находится там же где и index.php
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"> <p><center><h2>Ошибка 404</h2></center></p><center><h2>Такой страницы не существует, проверь правильность введенного вами адреса</h2></center> </div><?php get_footer(); ?>
как написал выше Wooka, только if ( @$user_login ) - поскольку переменная может быть не определена и может вызвать ошибку. $file= $_SERVER['DOCUMENT_ROOT'] . 'log.txt'; создай в корне файл log.txt и назначь ему права 777, и попробуй еще раз запустить