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 相关文章推荐
Classes and Objects in PHP5-面向对象编程 [1]
Oct 09 PHP
PHP中的cookie
Nov 26 PHP
mysql 的 like 问题,超强毕杀记!!!
Jan 18 PHP
通过5个php实例细致说明传值与传引用的区别
Aug 08 PHP
PHP删除目录及目录下所有文件的方法详解
Jun 06 PHP
(PHP实现)只使用++运算实现加法,减法,乘法,除法
Jun 27 PHP
php下pdo的mysql事务处理用法实例
Dec 27 PHP
php实现excel中rank函数功能的方法
Jan 20 PHP
PHP MVC框架路由学习笔记
Mar 02 PHP
PHP获取input输入框中的值去数据库比较显示出来
Nov 16 PHP
PHP输出多个元素的排列或组合的方法
Mar 14 PHP
php集成开发环境详解
Sep 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
一段php加密解密的代码
2007/07/16 PHP
php正则表达匹配中文问题分析小结
2012/03/25 PHP
PHP实现的比较完善的购物车类
2014/12/02 PHP
两种WEB下的模态对话框 (asp.net或js的分别实现)
2009/12/02 Javascript
JS 无法通过W3C验证的处理方法
2010/03/09 Javascript
clientX,pageX,offsetX,x,layerX,screenX,offsetLeft区别分析
2010/03/12 Javascript
jQuery 类twitter的文本字数限制带提示效果插件
2010/04/16 Javascript
jquery中animate的stop()方法作用实例分析
2015/01/30 Javascript
Highcharts使用简例及异步动态读取数据
2015/12/30 Javascript
JS创建事件的三种方法(实例代码)
2016/05/12 Javascript
JavaScript队列的应用实例详解【经典数据结构】
2017/04/12 Javascript
利用Angular.js编写公共提示模块的方法教程
2017/05/28 Javascript
vue element-ui 绑定@keyup事件无效的解决方法
2018/03/09 Javascript
深入浅析angular和vue还有jquery的区别
2018/08/13 jQuery
详解JavaScript栈内存与堆内存
2019/04/04 Javascript
vue简单封装axios插件和接口的统一管理操作示例
2020/02/02 Javascript
js实现简单的点名器随机色实例代码
2020/09/20 Javascript
JavaScript 实现拖拽效果组件功能(兼容移动端)
2020/11/11 Javascript
[02:43]2014DOTA2国际邀请赛 官方Alliance战队纪录片
2014/07/14 DOTA
Python中random模块用法实例分析
2015/05/19 Python
Python Property属性的2种用法
2015/06/21 Python
Python实现计算圆周率π的值到任意位的方法示例
2018/05/08 Python
根据DataFrame某一列的值来选择具体的某一行方法
2018/07/03 Python
python读取文本中的坐标方法
2018/10/14 Python
如何运行带参数的python脚本
2019/11/15 Python
Python使用os.listdir和os.walk获取文件路径
2020/05/21 Python
pytorch随机采样操作SubsetRandomSampler()
2020/07/07 Python
8种常用的Python工具
2020/08/05 Python
Python连接mysql方法及常用参数
2020/09/01 Python
英国最大的网上药品商店:Chemist Direct
2017/12/16 全球购物
应用电子技术专业个人求职信
2013/09/21 职场文书
应届生妇产科护士求职信
2013/10/27 职场文书
迟到检讨书大全
2014/01/25 职场文书
财务信息服务专业自荐书范文
2014/02/08 职场文书
高老头读书笔记
2015/06/30 职场文书
同学会感言
2015/07/30 职场文书