WordPress中访客登陆实现邮件提醒的PHP脚本实例分享


Posted in PHP onDecember 14, 2015

登陆邮件提醒实现方法
前提是空间有邮件功能,测试有无邮件功能的方法:登录界面点击“忘记密码”,有邮件发到你邮箱就有邮件功能。

一、登录成功提醒
就像银行的登录提醒一样,如果有人登录了系统,就会发一封邮件到邮箱,提醒你有人登录了,如果当时不是你登录,就要引起警惕了。将以下代码放入主题的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>登录时间:' . 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');

效果如下图所示,后面有个登录所在地是用qqwry.dat做了个查询

WordPress中访客登陆实现邮件提醒的PHP脚本实例分享

修改后台登录地址
插件法
不少插件可以实现这样的功能,比如Protected wp-login和Stealth Login Page,直接下载安装即可,这里不多介绍。

代码法
不想用插件的话,直接将下面的代码复制到当前主题的 functions.php 文件中:

//保护后台登录
function login_protection(){ 
  if($_GET['word'] != 'fuck')header('Location: http://blog.gimhoy.com/'); 
}
add_action('login_enqueue_scripts','login_protection');

这样只有打开 http://siteurl/wp-login.php?word=fuck,才会打开登录页,否则就会自动跳转到 http://blog.gimhoy.com/

但是博主这样做之后,邮箱里还是每天都收到很多登录失败的提醒邮件,于是采取了一个更加简单粗暴的方法:修改wp-login.php文件名

比如将wp-login.php修改成gimhoy-login.php,同时还要打开这个文件,将里面所有的wp-login.php替换成gimhoy-login.php。这样登录地址便成了http://siteurl/gimhoy-login.php.跟前面那个方法结合起来,就成了http://siteurl/gimhoy-login.php?word=fuck.

简单粗暴,目的达成。

PHP 相关文章推荐
一个捕获函数输出的函数
Feb 14 PHP
php curl常见错误:SSL错误、bool(false)
Dec 28 PHP
关于PHP递归算法和应用方法介绍
Apr 15 PHP
Smarty foreach控制循环次数的实现详解
Jul 03 PHP
php版小黄鸡simsimi聊天机器人接口分享
Jan 26 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
Jun 30 PHP
PHP实现定时执行任务的方法
Oct 05 PHP
php+mysql实现无限分类实例详解
Jan 15 PHP
PHP执行linux命令常用函数汇总
Feb 02 PHP
Yii2框架自定义验证规则操作示例
Feb 08 PHP
Laravel开启跨域请求的方法
Oct 13 PHP
Laravel使用模型实现like模糊查询的例子
Oct 24 PHP
实现WordPress主题侧边栏切换功能的PHP脚本详解
Dec 14 #PHP
php生成curl命令行的方法
Dec 14 #PHP
编写PHP脚本使WordPress的主题支持Widget侧边栏
Dec 14 #PHP
给WordPress中的留言加上楼层号的PHP代码实例
Dec 14 #PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
Dec 14 #PHP
php类中的$this,static,final,const,self这几个关键字使用方法
Dec 14 #PHP
Yii2隐藏frontend/web和backend/web的方法
Dec 12 #PHP
You might like
这东西价格,可以买几台TECSUN S-2000
2021/03/02 无线电
图书管理程序(二)
2006/10/09 PHP
百度实时推送api接口应用示例
2014/10/21 PHP
详解WordPress开发中get_header()获取头部函数的用法
2016/01/08 PHP
PHP内置加密函数详解
2016/11/20 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
YII框架常用技巧总结
2019/04/27 PHP
javascript针对DOM的应用分析(二)
2012/04/15 Javascript
在jQuery中 常用的选择器介绍
2013/04/16 Javascript
通过action传过来的值在option获取进行验证的方法
2013/11/14 Javascript
node.js操作mysql(增删改查)
2015/07/24 Javascript
js获取页面及个元素高度、宽度的代码
2016/04/26 Javascript
AngularJS基础 ng-srcset 指令简单示例
2016/08/03 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
2017/02/10 Javascript
JavaScrpt的面向对象全面解析
2017/05/09 Javascript
vue+node实现图片上传及预览的示例方法
2018/11/22 Javascript
Vue中jsx不完全应用指南小结
2019/11/01 Javascript
[05:40]DOTA2荣耀之路6:Wings最后进攻
2018/05/30 DOTA
[49:31]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第二场 1月29日
2021/03/11 DOTA
python原始套接字编程示例分享
2014/02/21 Python
python下调用pytesseract识别某网站验证码的实现方法
2016/06/06 Python
详解python数据结构和算法
2019/04/18 Python
Python2.7实现多进程下开发多线程示例
2019/05/31 Python
使用浏览器访问python写的服务器程序
2019/10/10 Python
Python csv文件的读写操作实例详解
2019/11/19 Python
Python中flatten( ),matrix.A用法说明
2020/07/05 Python
Python3.8安装Pygame教程步骤详解
2020/08/14 Python
Python爬取某平台短视频的方法
2021/02/08 Python
详解通过变换矩阵实现canvas的缩放功能
2019/01/14 HTML / CSS
Manduka官网:瑜伽垫、瑜伽毛巾和服装
2018/07/02 全球购物
一套SQL笔试题
2016/08/14 面试题
幼儿园六一儿童节主持节目串词
2014/03/21 职场文书
计算机应用应届生求职信
2014/07/12 职场文书
2014迎接教师节演讲稿
2014/09/10 职场文书
校本培训个人总结
2015/02/28 职场文书
部队2015年终工作总结
2015/04/02 职场文书