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 相关文章推荐
wiki-shan写的php在线加密的解密程序
Sep 07 PHP
PHP下一个非常全面获取图象信息的函数
Nov 20 PHP
php接口与接口引用的深入解析
Aug 09 PHP
ThinkPHP内置jsonRPC的缺陷分析
Dec 18 PHP
php绘图之在图片上写中文和英文的方法
Jan 24 PHP
PHP的运行机制与原理(底层)
Nov 16 PHP
PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect(): (hy000/1040): ...
Feb 14 PHP
ThinkPHP使用Ueditor的方法详解
May 20 PHP
PHP基于curl后台远程登录正方教务系统的方法
Oct 14 PHP
Laravel中Facade的加载过程与原理详解
Sep 22 PHP
Laravel统计一段时间间隔的数据方法
Oct 09 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
Feb 06 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 xml 入门学习资料
2011/01/01 PHP
php函数间的参数传递(值传递/引用传递)
2013/09/23 PHP
Dojo之路:如何利用Dojo实现Drag and Drop效果
2007/04/10 Javascript
[原创]后缀就扩展名为js的文件是什么文件
2007/12/06 Javascript
jqGrid随窗口大小变化自适应大小的示例代码
2013/12/28 Javascript
js的参数有长度限制吗?发现不能超过2083个字符
2014/04/20 Javascript
js确认删除对话框适用于a标签及submit
2014/07/10 Javascript
深入理解javascript原型链和继承
2014/09/23 Javascript
jquery实现拖拽调整Div大小
2015/01/30 Javascript
js控制文本框只输入数字和小数点的方法
2015/03/10 Javascript
jquery.validate提示错误信息位置方法
2016/01/22 Javascript
AngularJS全局scope与Isolate scope通信用法示例
2016/11/22 Javascript
微信禁止下拉查看URL的处理方法
2017/09/28 Javascript
JavaScript 2018 中即将迎来的新功能
2018/09/21 Javascript
Vue项目中最新用到的一些实用小技巧
2018/11/06 Javascript
深入浅出 Vue 系列 -- 数据劫持实现原理
2019/04/23 Javascript
vue-router 前端路由之路由传值的方式详解
2019/04/30 Javascript
vue3.0搭配.net core实现文件上传组件
2020/10/29 Javascript
[04:49]2014DOTA2国际邀请赛 Newbee顺利挺进总决赛 ImbaTV独家专访
2014/07/19 DOTA
Python实现调度算法代码详解
2017/12/01 Python
解决pandas使用read_csv()读取文件遇到的问题
2018/06/15 Python
tensorflow saver 保存和恢复指定 tensor的实例讲解
2018/07/26 Python
opencv python在视屏上截图功能的实现
2020/03/05 Python
java字符串格式化输出实例讲解
2021/01/06 Python
中职生自我鉴定范文
2013/10/03 职场文书
新学期班主任寄语
2014/01/18 职场文书
运动会入场式解说词
2014/02/18 职场文书
大班幼儿评语大全
2014/04/30 职场文书
网络编辑求职信
2014/04/30 职场文书
2014年网管工作总结
2014/12/11 职场文书
先进单位申报材料
2014/12/25 职场文书
乐山大佛导游词
2015/02/02 职场文书
2015年电厂工作总结范文
2015/05/13 职场文书
婚宴祝酒词大全
2015/08/10 职场文书
python神经网络学习 使用Keras进行回归运算
2022/05/04 Python
JS实现刷新网页后之前浏览位置保持不变示例详解
2022/08/14 Javascript