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 相关文章推荐
2.PHP入门
Oct 09 PHP
php实现无限级分类实现代码(递归方法)
Jan 01 PHP
让PHP以ROOT权限执行系统命令的方法
Feb 10 PHP
php通过数组实现多条件查询实现方法(字符串分割)
May 06 PHP
php自动识别文件编码并转换为UTF-8的方法
Jun 12 PHP
PHP Reflection API详解
May 12 PHP
php实现的验证码文件类实例
Jun 18 PHP
PHP中in_array函数使用的问题与解决办法
Sep 11 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
Jan 24 PHP
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
Nov 08 PHP
TP5框架实现一次选择多张图片并预览的方法示例
Apr 04 PHP
php去除数组中为0的元素的实例分析
Nov 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 ob_start()控制浏览器cache、生成html实现代码
2010/02/16 PHP
PHP如何将XML转成数组
2016/04/04 PHP
php中str_pad()函数用法分析
2017/03/28 PHP
图片按比例缩放函数
2006/06/26 Javascript
关于js获取radio和select的属性并控制的代码
2011/05/12 Javascript
js与jquery获取父级元素,子级元素,兄弟元素的实现方法
2014/01/09 Javascript
JavaScript中toString()方法的使用详解
2015/06/05 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
JavaScript简单修改窗口大小的方法
2015/08/03 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
2015/11/21 Javascript
js+css实现回到顶部按钮(back to top)
2016/03/02 Javascript
js模糊查询实例分享
2016/12/26 Javascript
jquery实现图片平滑滚动详解
2017/03/22 jQuery
Nodejs中的JWT和Session的使用
2018/08/21 NodeJs
使用Angular自定义字段校验指令的方法示例
2019/02/01 Javascript
vue 实现滚动到底部翻页效果(pc端)
2019/07/31 Javascript
python虚拟环境 virtualenv的简单使用
2020/01/21 Javascript
通过实例解析JavaScript常用排序算法
2020/09/02 Javascript
[01:56]2014DOTA2西雅图邀请赛 MVP外卡赛老队长精辟点评
2014/07/09 DOTA
Python的自动化部署模块Fabric的安装及使用指南
2016/01/19 Python
pygame加载中文名mp3文件出现error
2017/03/31 Python
Tensorflow使用tfrecord输入数据格式
2018/06/19 Python
基于python历史天气采集的分析
2019/02/14 Python
windows10下安装TensorFlow Object Detection API的步骤
2019/06/13 Python
在Windows上安装和配置 Jupyter Lab 作为桌面级应用程序教程
2020/04/22 Python
Django中ORM找出内容不为空的数据实例
2020/05/20 Python
Python命名空间namespace及作用域原理解析
2020/06/05 Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
2021/01/24 Python
深入解读CSS3中transform变换模型的渲染
2016/05/27 HTML / CSS
大学自荐信
2013/12/12 职场文书
公司放假通知范文
2015/04/14 职场文书
教师远程培训心得体会
2016/01/09 职场文书
怎样写工作总结啊!
2019/06/18 职场文书
Ubuntu Server 安装Tomcat并配置systemctl
2022/04/28 Servers
Docker部署Mysql8的实现步骤
2022/07/07 Servers
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
2022/08/14 Servers