在 WordPress 的安全问题越来越不容忽视的今天,如何知道自己的登录信息是否已泄露,自己的博客是否被别人反复尝试登录是一个比较重要的事情。那怎么知道自己的博客是否被别人反复尝试登录呢?这个我们就要参考网上银行的办法——登录提醒。这里用的是邮件登陆提醒。怎么实现这个功能呢?插件固然可以解决问题,但是,我还是那句话,能不用插件,就不用插件。其实实现这个功能很简单,只要在主题的 Functions.php 中扔一段代码就可以做到。
登录提醒,还分为登录成功提醒和登录失败提醒,大家可以酌情选择需要哪一个提醒,或者两个都需要。
登录成功提醒
<php function wp_login_notify() { date_default_timezone_set('PRC'); $admin_email = get_bloginfo ('admin_email'); $to = $admin_email; $subject = '[' . get_option("blogname") . '] ' . '登录成功提醒'; $message = '<p>您的博客(' . get_option("blogname") . ')于 ' . date("Y-m-d H:i:s") . ' 在IP ' . $_SERVER['REMOTE_ADDR'] . ' 上登录成功。</p>' . '<p>请确认是您自己的操作,以防造成损失!</p>' . '<p>登录信息如下:</p>' . '<p>用户名:' . $_POST['log'] . '<p>' . '<p>登录时间:' . date("Y-m-d H:i:s") . '<p>' . '<p>登录 IP:' . $_SERVER['REMOTE_ADDR'] . '<p>'; $wp_email = 'WebMaster@' . 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' ); ?>
登录失败提醒
<?php function wp_login_failed_notify() { date_default_timezone_set('PRC'); $admin_email = get_bloginfo ('admin_email'); $to = $admin_email; $subject = '[' . get_option("blogname") . '] ' . '登录失败提醒'; $message = '<p>您的博客(' . get_option("blogname") . ')于 ' . date("Y-m-d H:i:s") . ' 在IP ' . $_SERVER['REMOTE_ADDR'] . ' 上登录失败。</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 = 'WebMaster@' . 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' ); ?>
编写时参考了部分网上的资料。