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 相关文章推荐
php的header和asp中的redirect比较
Oct 09 PHP
PHP实现图片简单上传
Oct 09 PHP
PHP数组实例总结与说明
Aug 23 PHP
header中Content-Disposition的作用与使用方法
Jun 13 PHP
PHP人民币金额数字转中文大写的函数代码
Feb 27 PHP
php实现mysql数据库操作类分享
Feb 14 PHP
一个简单的php路由类
May 29 PHP
PHP实现表单提交时去除斜杠的方法
Dec 26 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
Mar 05 PHP
在Laravel中实现使用AJAX动态刷新部分页面
Oct 15 PHP
PHP数组array类常见操作示例
May 15 PHP
PHP array_reverse() 函数原理及实例解析
Jul 14 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类
2008/04/09 PHP
php定时计划任务与fsockopen持续进程实例
2014/05/23 PHP
ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整
2014/11/05 PHP
php 算法之实现相对路径的实例
2017/10/17 PHP
PHP 布尔值的自增与自减的实现方法
2018/05/03 PHP
JavaScript Distilled 基础知识与函数
2010/04/07 Javascript
比Jquery的document.ready更快的方法
2010/04/28 Javascript
jquery 实现上下滚动效果示例代码
2013/08/09 Javascript
js获取当前页面路径示例讲解
2014/01/08 Javascript
js获取会话框prompt的返回值的方法
2015/01/10 Javascript
javascript将数字转换整数金额大写的方法
2015/01/27 Javascript
CascadeView级联组件实现思路详解(分离思想和单链表)
2016/04/12 Javascript
JS复制对应id的内容到粘贴板(Ctrl+C效果)
2017/01/23 Javascript
js面向对象编程总结
2017/02/16 Javascript
nodejs body-parser 解析post数据实例
2017/07/26 NodeJs
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
[01:04:35]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第一场
2018/04/04 DOTA
[53:43]VP vs NewBee Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
Python中使用 Selenium 实现网页截图实例
2014/07/18 Python
介绍Python的Django框架中的静态资源管理器django-pipeline
2015/04/25 Python
在centos7中分布式部署pyspider
2017/05/03 Python
Python调用微信公众平台接口操作示例
2017/07/08 Python
django如何实现视图重定向
2019/07/24 Python
Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.0+cudnn)
2020/02/17 Python
Python requests设置代理的方法步骤
2020/02/23 Python
在Django中自定义filter并在template中的使用详解
2020/05/19 Python
Pycharm修改python路径过程图解
2020/05/22 Python
ParcelABC西班牙:包裹运送和快递服务
2019/12/24 全球购物
应届生法律顾问求职信
2013/11/19 职场文书
网页设计个人找工作求职信
2013/11/28 职场文书
营销总监岗位职责范本
2014/02/26 职场文书
公司聘任书模板
2014/03/29 职场文书
十佳少先队员演讲稿
2014/09/12 职场文书
党的群众路线教育实践活动领导班子整改方案
2014/10/25 职场文书
聘任证明怎么写
2015/03/02 职场文书
浅谈python数据类型及其操作
2021/05/25 Python