以下代码的实现效果:
1、留言的访客显示欢迎词
2、一般访客来源提示
3、不留言潜水党(刷新大于7次,催促留言)
4、针对IE的推送更新提示
使用方法:调用相应的函数,例如welcome_msg()。
复制代码 代码如下:
/**
* 欢迎词
* 以前的欢迎词在右上角提示.
* 实现原理:
* 通过$_SERVER['HTTP_REFERER']判断来路
* 通过$_SERVER["HTTP_USER_AGENT"]判断用户使用的浏览器
* 通过$_COOKIE["comment_author_" . COOKIEHASH]判断为评论者
*
*/
function welcome_msg(){
if($m = apply_filters('welcome_msg',$string)){
echo $m;
return;
}
global $referer;
$referer=$_SERVER['HTTP_REFERER'];
$hostinfo=parse_url($referer);
$host_h=$hostinfo["host"];
$host_p=$hostinfo["path"];
$host=array($host_h,$host_p);
if(substr($host_h, 0, 4) == 'www.')
$host_h = substr($host_h, 4);
$host_h_url='$host_h';
//直接输入 没有东西
if($referer==""){
echo "\n";
if($_COOKIE["comment_author_" . COOKIEHASH]!=""){
echo 'Howdy, '.$_COOKIE["comment_author_" . COOKIEHASH].', 欢迎回来';
}else{
echo "您直接访问了本站! 莫非您记住了我的域名.厉害~我倍感荣幸啊 嘿嘿";
}
//搜索引擎
//baidu
}elseif(preg_match('/baidu.*/i',$host_h)){
echo "您通过 百度 找到了我! 厉害.你要是能够订阅我的博客那就更好了.我经常分享一些好东西哦";
//google
}elseif(!preg_match('/www\.google\.com\/reader/i',$referer) && preg_match('/google\./i',$referer)){
echo "您通过 Google 找到了我! 厉害. 你要是能够订阅我的博客那就更好了. 我经常分享一些好东西哦";
//yahoo
}elseif(preg_match('/search\.yahoo.*/i',$referer) || preg_match('/yahoo.cn/i',$referer)){
echo "您通过 Yahoo 找到了我! 厉害. 你要是能够订阅我的博客那就更好了. 我经常分享一些好东西哦";
//阅读器
//google
}elseif(preg_match('/google\.com\/reader/i',$referer)){
echo "感谢你通过 Google 订阅我! 既然过来读原文了. 欢迎留言指导啊.嘿嘿 ^_^";
//xianguo
}elseif(preg_match('/xianguo\.com\/reader/i', $referer)){
echo "感谢你通过 鲜果 订阅我! 既然过来读原文了. 欢迎留言指导啊.嘿嘿 ^_^";
//zhuaxia
}elseif(preg_match('/zhuaxia\.com/i', $referer)){
echo "感谢你通过 抓虾 订阅我! 既然过来读原文了. 欢迎留言指导啊.嘿嘿 ^_^";
//哪吒
}elseif(preg_match('/inezha\.com/i', $referer)){
echo "感谢你通过 哪吒 订阅我! 既然过来读原文了. 欢迎留言指导啊.嘿嘿 ^_^";
//有道
}elseif(preg_match('/reader\.youdao/i', $referer)){
echo "感谢你通过 有道 订阅我! 既然过来读原文了. 欢迎留言指导啊.嘿嘿 ^_^";
//自己
}elseif(self()){
echo ""."\n";
}elseif($_COOKIE["comment_author_" . COOKIEHASH]!=""){
echo 'Howdy, '.$_COOKIE["comment_author_" . COOKIEHASH].'欢迎从'.$host_h.'回来';
}else{
echo '欢迎来自'. $host_h.'的朋友. 我经常分享一些好东西哦 ^_^ 欢迎订阅我的博客.';
}
}
//判断是自己的函数
function self(){
$local_info = parse_url(get_option('siteurl'));
$local_host = $local_info['host'];
//check self
if ( preg_match("/^http:\/\/(\w+\.)?($local_host)/",$_SERVER['HTTP_REFERER']) != 0) return true;
}
/**
* 分析浏览器 对于使用IE老版本的用户推送提醒
* 不要过分推送, 根据cookie判断
* 比如 对IE6的推送! 我希望是每隔20秒要有一次!
* @see setcookie_for_ie()
*/
function killIE($msg){
if(preg_match('/MSIE\s6/i', $_SERVER['HTTP_USER_AGENT'])){
if(!$_COOKIE['alert_ie_visitor_'.COOKIEHASH]){
$msg .= '
呃~ , 我不得不再提示一下:
';$msg .= '
您正在使用古老的 Internet Explorer 浏览网页, 该浏览器不符合W3C国际标准, 本站网页可能显示不正常,或部分功能无法使用
如果您升级到 Internet Explorer 8 或转换到另一个浏览器, 本站将能为您提供更好的服务.
';//add_action('init', 'setcookie_for_alert_ie_visitor');
}
}elseif(preg_match('/MSIE\s7/i', $_SERVER['HTTP_USER_AGENT'])){
if(!$_COOKIE['alert_ie_visitor_'.COOKIEHASH]){
$msg .= '
呃~ , 顺便提示一下:
';$msg .= '
您正在使用旧版本的 Internet Explorer 版本浏览网页,如果您升级到 Internet Explorer 8 或转换到另一个浏览器, 本站将能为您提供更好的服务.
';}
}elseif(preg_match('/MSIE\s8/i', $_SERVER['HTTP_USER_AGENT'])){
if(!$_COOKIE['alert_ie_visitor_'.COOKIEHASH]){
$msg .= '
呃~ , 顺便提示一下:
';$msg .= '
很高兴看到你使用较高版本的 Internet Explorer 浏览器! 但是我还是要向您推荐:
速度最快的 Chrome 和定制性最强的 Firefox
}
}else{
return;
}
return $msg;
}
add_filter('welcome_msg','killIE');
/**
* 对于来了很多次也不评论的家伙提醒
* 创建一个cookie用来计数
* 结合ajax评论函数,评论后将计算器设置为-5
* 这样评论后可以有个较长的缓和期
* @since 2.0.1
* @see welcome_msg, setcookie_for_alert_commentator
* 修改了cookies的写入方法,这里只读取cookies
*/
function alert_commentator($msg){
global $user_ID;
//管理员是个例外.不能对管理员推送!
if($user_ID){
return;//just return null;
}
if(!isset($_COOKIE['comment_author_visit_times_'.COOKIEHASH]))
return;//
//当次数>=6次时 推送提示
//由于在init上写入cookie所以实际上要等cookie累加到7是才显示提示!
if(((int)$_COOKIE['comment_author_visit_times_'.COOKIEHASH])>=6){
if($comment_author = $_COOKIE['comment_author_'.COOKIEHASH])
$msg = '嗨~, '.$comment_author.' 我发现你来了很多次也没有留言! 欢迎发表你的看法.';
else
$msg = '新朋友? 老朋友? 我看你来了很多次却没有留言.欢迎发表你的看法.';
}else{
return;//
}
return $msg;
}
add_filter('welcome_msg','alert_commentator');
/**
* 给访客设置一个计算器
*
* 作用:
* 不过访客一直浏览,不留言计数器工作
* 留言后将计数器归为-5
*
* @since 2.0.2
*/
function setcookie_for_alert_commentator(){
if(is_bot())
return;
global $user_ID;
if($user_ID)
return;
//如果没有计数器,写入
if(!isset($_COOKIE['comment_author_visit_times_'.COOKIEHASH])){
setcookie('comment_author_visit_times_'. COOKIEHASH, 1, time() + (60*60*24*300), COOKIEPATH, COOKIE_DOMAIN);
}else{
$visit_times = (int)$_COOKIE['comment_author_visit_times_'.COOKIEHASH];
setcookie('comment_author_visit_times_'. COOKIEHASH, ++$visit_times, time() + (60*60*24*300), COOKIEPATH, COOKIE_DOMAIN);
}
//当次数大于7时 停止推送 因为连续推送了2次了
if(((int)$_COOKIE['comment_author_visit_times_'.COOKIEHASH])>=7){
//设置为0 重来
setcookie('comment_author_visit_times_'. COOKIEHASH, -2, time() + (60*60*24*300), COOKIEPATH, COOKIE_DOMAIN);
}
}
add_action('init', 'setcookie_for_alert_commentator');
/**
* 针对ie不同版本设置不同的cookie
*
* 为了后面的推送升级通知
*/
function setcookie_for_ie(){
if(isset($_COOKIE['alert_ie_visitor_'.COOKIEHASH]))
return;
if(preg_match('/MSIE\s6/i', $_SERVER['HTTP_USER_AGENT'])){
//对于使用古老版ie用频繁推送 (cookies 5分钟失效)
setcookie('alert_ie_visitor_'.COOKIEHASH,'ie6',time()+(20),COOKIEPATH,COOKIE_DOMAIN);
}elseif(preg_match('/MSIE\s7/i', $_SERVER['HTTP_USER_AGENT'])){
//对于使用ie7的用户减少推送 (cookies 3天失效)
setcookie('alert_ie_visitor_'.COOKIEHASH,'ie7',time()+(60*60*24*3),COOKIEPATH,COOKIE_DOMAIN);
}elseif(preg_match('/MSIE\s8/i', $_SERVER['HTTP_USER_AGENT'])){
//对于使用ie8的用尽量不要推送 (cookies 100天失效)
setcookie('alert_ie_visitor_'.COOKIEHASH,'ie8',time()+(60*60*24*10),COOKIEPATH,COOKIE_DOMAIN);
}
}
add_action('init', 'setcookie_for_ie');

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

WebStorm Mac version
Useful JavaScript development tools

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)
