为了防止自己网站被人破解,特别是防止有人恶意用DDOS攻击或者利用xmlrpc.php使用穷举法破解网站的密码,所以非常有必要在有人登录网站后台成功或者失败时发送邮件告知网站管理员。

1 后台登录成功邮件提醒网站管理员

在function.php中加入以下代码:

/*****************************************************
 <6>
 函数名称:wp_login_notify 
 函数作用:有人登录wp后台成功就会email通知博主
******************************************************/
function WPLoginSuccessNotify()
{
    date_default_timezone_set('PRC');
    $admin_email = get_bloginfo ('admin_email');
    $to = $admin_email;
    $subject = '你的博客空间登录成功提醒';
    $message = '<p>你好!你的博客空间(' . get_option("blogname") . ')有登录!</p>' . 
    '<p>请确定是您自己的登录,以防别人攻击!登录信息如下:</p>' . 
    '<p>登录名:' . $_POST['log'] . '<p>' .
    '<p>登录密码:' . $_POST['pwd'] .  '<p>' .
    '<p>登录时间:' . date("Y-m-d H:i:s") .  '<p>' .
    '<p>登录IP:' . $_SERVER['REMOTE_ADDR'] . '<p>';   
    $wp_email = 'no-reply@' . preg_replace('#^www.#', '', strtolower($_SERVER['SERVER_NAME']));
    $from = "From: "" . get_option('blogname') . "" <$wp_email>";
    $headers = "$fromnContent-Type: text/html; charset=" . get_option('blog_charset') . "n";
    wp_mail( $to, $subject, $message, $headers );
}

add_action('wp_login', 'WPLoginSuccessNotify');

2 后台登录失败邮件提醒网站管理员

/*****************************************************
 <7>
 函数名称:wp_login_failed_notify
 函数作用:有人错误登录wp后台就会email通知博主
******************************************************/
function WPLoginFailedNotify()
{
    date_default_timezone_set('PRC');
    $admin_email = get_bloginfo ('admin_email');
    $to = $admin_email;
    $subject = '你的博客空间登录错误警告';
    $message = '<p>你好!你的博客空间(' . get_option("blogname") . ')有登录错误!</p>' . 
    '<p>请确定是您自己的登录失误,以防别人攻击!登录信息如下:</p>' . 
    '<p>登录名:' . $_POST['log'] . '<p>' .
    '<p>登录密码:' . $_POST['pwd'] .  '<p>' .
    '<p>登录时间:' . date("Y-m-d H:i:s") .  '<p>' .
    '<p>登录IP:' . $_SERVER['REMOTE_ADDR'] . '<p>';   
    $wp_email = 'no-reply@' . preg_replace('#^www.#', '', strtolower($_SERVER['SERVER_NAME']));
    $from = "From: "" . get_option('blogname') . "" <$wp_email>";
    $headers = "$fromnContent-Type: text/html; charset=" . get_option('blog_charset') . "n";
    wp_mail( $to, $subject, $message, $headers );
}

add_action('wp_login_failed', 'WPLoginFailedNotify');