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 和 XML: 使用expat函数(二)
Oct 09 PHP
第四节--构造函数和析构函数
Nov 16 PHP
PHP学习之字符串比较和查找
Apr 17 PHP
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
Nov 02 PHP
PHP面向对象学习笔记之一 基础概念
Oct 06 PHP
解析PHP中如何将数组变量写入文件
Jun 06 PHP
PHP使用CURL_MULTI实现多线程采集的例子
Jul 29 PHP
yii,CI,yaf框架+smarty模板使用方法
Dec 29 PHP
PHP pear安装配置教程
May 14 PHP
php获取文件名称和扩展名的方法
Feb 07 PHP
Yii2设置默认控制器的两种方法
May 19 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
Oct 17 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生成静态html文件的三种方法
2013/06/18 PHP
PHP基本语法实例总结
2016/09/09 PHP
thinkPHP简单实现多个子查询语句的方法
2016/12/05 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
PHP+Ajax实现上传文件进度条动态显示进度功能
2018/06/04 PHP
php数组遍历类与用法示例
2019/05/24 PHP
jQuery 事件的命名空间简单了解
2013/11/22 Javascript
JS实现模拟风力的雪花飘落效果
2015/05/13 Javascript
前端构建工具之gulp的配置与搭建详解
2017/06/12 Javascript
详解vue.js之绑定class和style的示例代码
2017/08/24 Javascript
JQuery 选择器、DOM节点操作练习实例
2017/09/28 jQuery
Bootstrap导航菜单点击后无法自动添加active的处理方法
2018/08/10 Javascript
[45:59]EG vs OG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python文件读写操作与linux shell变量命令交互执行的方法
2015/01/14 Python
python实现梯度下降算法
2020/03/24 Python
Python字符串的一些操作方法总结
2019/06/10 Python
python批量修改图片尺寸,并保存指定路径的实现方法
2019/07/04 Python
python 用户交互输入input的4种用法详解
2019/09/24 Python
Python 支持向量机分类器的实现
2020/01/15 Python
Python图像处理库PIL中图像格式转换的实现
2020/02/26 Python
简单了解Python多态与属性运行原理
2020/06/15 Python
解决virtualenv -p python3 venv报错的问题
2021/02/05 Python
ProBikeKit新西兰:自行车套件,跑步和铁人三项装备
2017/04/05 全球购物
Kangol帽子官网:坎戈尔袋鼠
2018/09/26 全球购物
Bulk Powders意大利:运动补充在线商店
2019/02/09 全球购物
W Hamond官网:始于1979年的钻石专家
2020/07/20 全球购物
什么是反射?如何实现反射?
2016/07/25 面试题
印刷工程专业应届生求职信
2013/09/29 职场文书
经典导游欢迎词大全
2014/01/16 职场文书
学生党员公开承诺书
2014/05/28 职场文书
支部组织生活会方案
2014/06/10 职场文书
离婚协议书怎么写2014
2014/09/30 职场文书
事业单位工作人员年度考核个人总结
2015/02/12 职场文书
聚会通知怎么写
2015/04/23 职场文书
2015年扫黄打非工作总结
2015/05/13 职场文书
Opencv实现二维直方图的计算及绘制
2021/07/21 Python