最近暴力登陆十分猖獗,虽然开了插件防护但是插件里并没有提示对方登陆的密码,于是我打开了主题的登陆错误邮件提示功能。
好奇这个功能如何实现的,于是百度了一下。下面是代码:
后台登录成功提醒
如果有人登录了WordPress后台,就会发一封邮件到邮箱提醒有人登录,如果当时不是你登录,就要引起警惕了。将以下代码放入主题的functions.php中:
/***************************************************** 函数名称:wp_login_notify v1.0 by DH.huahua. 函数作用:有登录wp后台就会email通知博主 ******************************************************/ function wp_login_notify() { 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 = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n"; wp_mail( $to, $subject, $message, $headers ); } add_action('wp_login', 'wp_login_notify');
后台登录失败提醒
只要有错误的登录,就会发一封邮件将对方尝试的登录名和登录密码发送到自己设置的管理员的邮箱。
将以下代码放入主题的functions.php中:
/***************************************************** 函数名称:wp_login_failed_notify v1.0 by DH.huahua. 函数作用:有错误登录wp后台就会email通知博主 ******************************************************/ function wp_login_failed_notify() { 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 = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n"; wp_mail( $to, $subject, $message, $headers ); } add_action('wp_login_failed', 'wp_login_failed_notify');