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 配置文件中open_basedir选项作用
Jul 19 PHP
PHP获取一个字符串中间一部分字符的方法
Aug 19 PHP
php中使用array_filter()函数过滤空数组的实现代码
Aug 19 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
Sep 06 PHP
php批量删除cookie的简单实现方法
Jan 26 PHP
php定义一个参数带有默认值的函数实例分析
Mar 16 PHP
PHP并发多进程处理利器Gearman使用介绍
May 16 PHP
ThinkPHP的SAE开发相关注意事项详解
Oct 09 PHP
Yii 2中的load()和save()示例详解
Aug 03 PHP
ThinkPHP3.2.3框架邮件发送功能图文实例详解
Apr 23 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
Jul 26 PHP
php的lavarel框架中join和orWhere的用法
Dec 28 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中用foreach来操作数组的代码
2011/07/17 PHP
php从给定url获取文件扩展名的方法
2015/03/14 PHP
CI框架实现优化文件上传及多文件上传的方法
2017/01/04 PHP
php基于dom实现读取图书xml格式数据的方法
2017/02/03 PHP
PHP代码加密的方法总结
2020/03/13 PHP
javascript判断单选框或复选框是否选中方法集锦
2007/04/04 Javascript
基于jquery的不规则矩形的排列实现代码
2012/04/16 Javascript
JS动态修改表格cellPadding和cellSpacing的方法
2015/03/31 Javascript
jquery.validate使用时遇到的问题
2015/05/25 Javascript
深入解析JavaScript框架Backbone.js中的事件机制
2016/02/14 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
JS实现简易的图片拖拽排序实例代码
2017/06/09 Javascript
js时间戳与日期格式之间转换详解
2017/12/11 Javascript
基于vue中解决v-for使用报红并出现警告的问题
2018/03/03 Javascript
JS实现的小火箭发射动画效果示例
2018/12/08 Javascript
nodejs图片处理工具gm用法小结
2018/12/12 NodeJs
nodejs提示:cross-device link not permitted, rename错误的解决方法
2019/06/10 NodeJs
JS实现简单日历特效
2020/01/03 Javascript
js抽奖转盘实现方法分析
2020/05/16 Javascript
Vue $emit()不能触发父组件方法的原因及解决
2020/07/28 Javascript
[01:06] DOTA2英雄背景故事第三期之秩序法则光之守卫
2020/07/07 DOTA
Python装饰器使用示例及实际应用例子
2015/03/06 Python
python实现闹钟定时播放音乐功能
2018/01/25 Python
Python使用pandas处理CSV文件的实例讲解
2018/06/22 Python
Django uwsgi Nginx 的生产环境部署详解
2019/02/02 Python
详解Python函数式编程—高阶函数
2019/03/29 Python
python装饰器简介---这一篇也许就够了(推荐)
2019/04/01 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
python环境下安装opencv库的方法
2020/03/05 Python
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
2020/04/15 Python
HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
2018/01/03 HTML / CSS
维多利亚的秘密官方旗舰店:VICTORIA’S SECRET
2018/04/02 全球购物
知识竞赛活动方案
2014/02/18 职场文书
2014年国庆节演讲稿
2014/09/02 职场文书
django上传文件的三种方式
2021/04/29 Python
用Python可视化新冠疫情数据
2022/01/18 Python