404 hataları için e-posta alarmı

Wpmix sitesinde yayınlanan bir yazı gördüm geçen gün. Anca bugün yazmaya fırsatım oluyor. Daha önce bakım modu sayfası ve veritabanı hata sayfası ile ilgili iki yazı yazmıştım. Bu da 404 (Bulunamadı) hatası alındığında size e-posta atılmasını sağlayan bir sayfa. Bence oldukça kullanışlı.

Kod;

Aşağıda vereceğim kodları temanızın 404.php sayfasının (yoksa siz oluşturabilirsiniz sıkıntı olmaz) üst kısmına yerleştiriyorsunuz. Sitenizde gezinirken bir nedenden ötürü kullanıcınız bu sayfaya düşerse yani sitenizin herhangi bir sayfası bulunamadı olarak görünürse size tarih, saat ve sayfa bilgilerini içeren bir e-posta ulaştırılıyor.

Değiştirilecek dosya (404.php) genel olarak wp-content/themes/temanizin-adi/ alanında bulunur. Eğer temanızda böyle bir özellik sayfası yoksa siz 404.php adında bir sayfa oluşturabilirsiniz. Sistem bunu otomatik olarak tanıyacaktır.
<?php // WP 404 ALERTS @ http://wp-mix.com/wordpress-404-email-alerts/
 
// set status
header("HTTP/1.1 404 Not Found");
header("Status: 404 Not Found");
 
// site info
$blog  = get_bloginfo('name');
$site  = get_bloginfo('url') . '/';
$email = get_bloginfo('admin_email');
 
// theme info
if (!empty($_COOKIE["nkthemeswitch" . COOKIEHASH])) {
     $theme = clean($_COOKIE["nkthemeswitch" . COOKIEHASH]);
} else {
     $theme_data = wp_get_theme();
     $theme = clean($theme_data->Name);
}
 
// referrer
if (isset($_SERVER['HTTP_REFERER'])) {
     $referer = clean($_SERVER['HTTP_REFERER']);
} else {
     $referer = "undefined";
}
// request URI
if (isset($_SERVER['REQUEST_URI']) && isset($_SERVER["HTTP_HOST"])) {
     $request = clean('http://' . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
} else {
     $request = "undefined";
}
// query string
if (isset($_SERVER['QUERY_STRING'])) {
     $string = clean($_SERVER['QUERY_STRING']);
} else {
     $string = "undefined";
}
// IP address
if (isset($_SERVER['REMOTE_ADDR'])) {
     $address = clean($_SERVER['REMOTE_ADDR']);
} else {
     $address = "undefined";
}
// user agent
if (isset($_SERVER['HTTP_USER_AGENT'])) {
     $agent = clean($_SERVER['HTTP_USER_AGENT']);
} else {
     $agent = "undefined";
}
// identity
if (isset($_SERVER['REMOTE_IDENT'])) {
     $remote = clean($_SERVER['REMOTE_IDENT']);
} else {
     $remote = "undefined";
}
// log time
$time = clean(date("F jS Y, h:ia", time()));
 
// sanitize
function clean($string) {
     $string = rtrim($string); 
     $string = ltrim($string); 
     $string = htmlentities($string, ENT_QUOTES); 
     $string = str_replace("n", "<br>", $string);
 
     if (get_magic_quotes_gpc()) {
          $string = stripslashes($string);
     } 
     return $string;
}
 
$message = 
     "TIME: "            . $time    . "n" . 
     "*404: "            . $request . "n" . 
     "SITE: "            . $site    . "n" . 
     "THEME: "           . $theme   . "n" . 
     "REFERRER: "        . $referer . "n" . 
     "QUERY STRING: "    . $string  . "n" . 
     "REMOTE ADDRESS: "  . $address . "n" . 
     "REMOTE IDENTITY: " . $remote  . "n" . 
     "USER AGENT: "      . $agent   . "nnn";
 
mail($email, "404 Alert: " . $blog . " [" . $theme . "]", $message, "From: $email"); 
 
?>

Bunu ekledikten sonra 404.php doyasını kaydedin ve sunucuya gönderin. Sitenizi gezen kullanıcılar bulunamadı hatası alırsa WordPress kullanıcı e-postasına (yönetici olan kullanıcıya) bilgilendirme e-postası düşecektir.

Kaynak : WordPress 404 email alerts | WP-Mix

Selametle