php 根据IP显示地区代码
<?php
define('IPDATA_MINI', PHPCMS_ROOT.'include/ipdata/mini.Dat');
define('IPDATA_FULL', PHPCMS_ROOT.'include/ipdata/QQWry.Dat');
class ip_area
{
var $fp = NULL;
var $func;
var $offset;
var $index;
function ip_area()
{
if(@file_exists(IPDATA_MINI))
{
$this->func = 'data_mini';
$this->fp = @fopen(IPDATA_MINI, 'rb');
$this->offset = unpack('Nlen', fread($this->fp, 4));
$this->index = fread($this->fp, $this->offset['len'] - 4);
}
elseif(@file_exists(IPDATA_FULL))
{
$this->func = 'data_full';
$this->fp = @fopen(IPDATA_FULL, 'rb');
}
}
function get($ip)
{
$return = '';
if(preg_match("/^d{1,3}.d{1,3}.d{1,3}.d{1,3}$/", $ip))
{
$iparray = explode('.', $ip);
if($iparray[0] == 10 || $iparray[0] == 127 || ($iparray[0] == 192 && $iparray[1] == 168) || ($iparray[0] == 172 && ($iparray[1] >= 16 && $iparray[1] <= 31)))
{
$return = 'LAN';
}
elseif($iparray[0] > 255 || $iparray[1] > 255 || $iparray[2] > 255 || $iparray[3] > 255)
{
$return = 'Invalid IP Address';
}
else
{
$return = $this->func ? $this->{$this->func}($ip) : '';
if(strpos($return, ' ') !== false) $return = substr($return, 0, strpos($return,' '));
}
if(strtolower(CHARSET) == 'utf-8') $return = iconv('gbk', 'utf-8', $return);
}
return $return;
}
function data_mini($ip)
{
$ipdot = explode('.', $ip);
$ipdot[0] = (int)$ipdot[0];
$ipdot[1] = (int)$ipdot[1];
$ip = pack('N', ip2long($ip));
$length = $this->offset['len'] - 1028;
$start = unpack('Vlen', $this->index[$ipdot[0] * 4] . $this->index[$ipdot[0] * 4 + 1] . $this->index[$ipdot[0] * 4 + 2] . $this->index[$ipdot[0] * 4 + 3]);
for($start = $start['len'] * 8 + 1024; $start < $length; $start += 8)
{
if($this->index{$start} . $this->index{$start + 1} . $this->index{$start + 2} . $this->index{$start + 3} >= $ip)
{
$this->index_offset = unpack('Vlen', $this->index{$start + 4} . $this->index{$start + 5} . $this->index{$start + 6} . "x0");
$this->index_length = unpack('Clen', $this->index{$start + 7});
break;
}
}
fseek($this->fp, $this->offset['len'] + $this->index_offset['len'] - 1024);
if($this->index_length['len'])
{
return str_replace('- ', '', fread($this->fp, $this->index_length['len']));
}
else
{
return 'Unknown';
}
}
function data_full($ip)
{
rewind($this->fp);
$ip = explode('.', $ip);
$ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3];
if(!($DataBegin = fread($this->fp, 4)) || !($DataEnd = fread($this->fp, 4)) ) return;
@$ipbegin = implode('', unpack('L', $DataBegin));
if($ipbegin < 0) $ipbegin += pow(2, 32);
@$ipend = implode('', unpack('L', $DataEnd));
if($ipend < 0) $ipend += pow(2, 32);
$ipAllNum = ($ipend - $ipbegin) / 7 + 1;
$BeginNum = $ip2num = $ip1num = 0;
$ipAddr1 = $ipAddr2 = '';
$EndNum = $ipAllNum;
while($ip1num > $ipNum || $ip2num < $ipNum)
{
$Middle= intval(($EndNum + $BeginNum) / 2);
fseek($this->fp, $ipbegin + 7 * $Middle);
$ipData1 = fread($this->fp, 4);
if(strlen($ipData1) < 4)
{
fclose($this->fp);
return 'System Error';
}
$ip1num = implode('', unpack('L', $ipData1));
if($ip1num < 0) $ip1num += pow(2, 32);
if($ip1num > $ipNum)
{
$EndNum = $Middle;
continue;
}
$DataSeek = fread($this->fp, 3);
if(strlen($DataSeek) < 3)
{
fclose($this->fp);
return 'System Error';
}
$DataSeek = implode('', unpack('L', $DataSeek.chr(0)));
fseek($this->fp, $DataSeek);
$ipData2 = fread($this->fp, 4);
if(strlen($ipData2) < 4)
{
fclose($this->fp);
return 'System Error';
}
$ip2num = implode('', unpack('L', $ipData2));
if($ip2num < 0) $ip2num += pow(2, 32);
if($ip2num < $ipNum)
{
if($Middle == $BeginNum)
{
fclose($this->fp);
return 'Unknown';
}
$BeginNum = $Middle;
}
}
$ipFlag = fread($this->fp, 1);
if($ipFlag == chr(1))
{
$ipSeek = fread($this->fp, 3);
if(strlen($ipSeek) < 3)
{
fclose($this->fp);
return 'System Error';
}
$ipSeek = implode('', unpack('L', $ipSeek.chr(0)));
fseek($this->fp, $ipSeek);
$ipFlag = fread($this->fp, 1);
}
if($ipFlag == chr(2))
{
$AddrSeek = fread($this->fp, 3);
if(strlen($AddrSeek) < 3)
{
fclose($this->fp);
return 'System Error';
}
$ipFlag = fread($this->fp, 1);
if($ipFlag == chr(2)) {
$AddrSeek2 = fread($this->fp, 3);
if(strlen($AddrSeek2) < 3)
{
fclose($this->fp);
return 'System Error';
}
$AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));
fseek($this->fp, $AddrSeek2);
}
else
{
fseek($this->fp, -1, SEEK_CUR);
}
while(($char = fread($this->fp, 1)) != chr(0))
$ipAddr2 .= $char;
$AddrSeek = implode('', unpack('L', $AddrSeek.chr(0)));
fseek($this->fp, $AddrSeek);
while(($char = fread($this->fp, 1)) != chr(0))
$ipAddr1 .= $char;
}
else
{
fseek($this->fp, -1, SEEK_CUR);
while(($char = fread($this->fp, 1)) != chr(0))
$ipAddr1 .= $char;
$ipFlag = fread($this->fp, 1);
if($ipFlag == chr(2))
{
$AddrSeek2 = fread($this->fp, 3);
if(strlen($AddrSeek2) < 3)
{
fclose($this->fp);
return 'System Error';
}
$AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));
fseek($this->fp, $AddrSeek2);
}
else
{
fseek($this->fp, -1, SEEK_CUR);
}
while(($char = fread($this->fp, 1)) != chr(0))
$ipAddr2 .= $char;
}
if(preg_match('/http/i', $ipAddr2)) $ipAddr2 = '';
$ipaddr = "$ipAddr1 $ipAddr2";
$ipaddr = preg_replace('/CZ88.NET/is', '', $ipaddr);
$ipaddr = preg_replace('/^s*/is', '', $ipaddr);
$ipaddr = preg_replace('/s*$/is', '', $ipaddr);
if(preg_match('/http/i', $ipaddr) || $ipaddr == '') $ipaddr = 'Unknown';
return ''.$ipaddr;
}
function close()
{
@fclose($this->fp);
}
}
?>
/**
*分页函数
*
*
*/
function multi($total, $perPage, $curPage, $pageUrl, $maxPages = 0, $page = 10, $autoGoTo = TRUE, $simple = FALSE) {
$multiPage = '';
$pageUrl .= strpos($pageUrl, '?') ? '&' : '?';
$realPages = 1;
if($total > $perPage) {
$offset = 2;
$realPages = @ceil($total / $perPage);
$pages = $maxPages && $maxPages < $realPages ? $maxPages : $realPages;
if($page > $pages) {
$from = 1;
$to = $pages;
} else {
$from = $curPage - $offset;
$to = $from + $page - 1;
if($from < 1) {
$to = $curPage + 1 - $from;
$from = 1;
if($to - $from < $page) {
$to = $page;
}
} elseif ($to > $pages) {
$from = $pages - $page + 1;
$to = $pages;
}
}
$multiPage = ($curPage - $offset > 1 && $pages > $page ? '<a href="'.$pageUrl.'page=1" class="first"'.$ajaxtarget.'>1 ...</a>' : '').
($curPage > 1 && !$simple ? '<a href="'.$pageUrl.'page='.($curPage - 1).'" class="prev"'.$ajaxtarget.'>‹‹</a>' : '');
for($i = $from; $i <= $to; $i++) {
$multiPage .= $i == $curPage ? '<strong>'.$i.'</strong>' :
'<a href="'.$pageUrl.'page='.$i.($ajaxtarget && $i == $pages && $autoGoTo ? '#' : '').'"'.$ajaxtarget.'>'.$i.'</a>';
}
$multiPage .= ($curPage < $pages && !$simple ? '<a href="'.$pageUrl.'page='.($curPage + 1).'" class="next"'.$ajaxtarget.'>››</a>' : '').
($to < $pages ? '<a href="'.$pageUrl.'page='.$pages.'" class="last"'.$ajaxtarget.'>... '.$realPages.'</a>' : '').
(!$simple && $pages > $page && !$ajaxtarget ? '<kbd><input type="text" name="custompage" size="3" onkeydown="if(event.keyCode==13) {window.location=''.$pageUrl.'page='+this.value; return false;}" /></kbd>' : '');
$multiPage = $multiPage ? '<div class="pages">'.(!$simple ? '<em> '.$total.' </em>' : '').$multiPage.'</div>' : '';
}
$maxpage = $realPages;
return $multiPage;
}
此函数只要传参数就可以有漂亮的分页效果哦,并且支持select下拉设置调转功能
仿dedecms顶评[顶,踩]功能源码下载<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Digg Demo</title>
<style>
.buttons{margin:20px 12px 12px;text-align:center;}
.buttons img{margin:0 5px 0 0;}
.mark{padding:15px 0 0 40px;overflow:hidden;zoom:1;}
#mark0, #mark1{width:189px;height:48px;background:url('./img/mark.gif') no-repeat -189px 0;border:0px none;cursor:pointer;position:relative;margin:0;padding:0;overflow:hidden;float:left}
#mark1{background-position:-378px 0;margin-left:10px;}
.bar{position:absolute;left:9px;top:32px;width:55px;height:5px;border:1px solid #40a300;background-color:#fff;overflow:hidden;text-align:left;}
#mark1 .bar{border-color:#555;}
.bar div{background:url('./img/sprites.gif') repeat-x 0 -265px;height:5px;overflow:hidden}
#mark1 .bar div{background-position:0 -270px;}
#barnum1, #barnum2{position:absolute;top:30px;left:70px;font:400 10px/12px arial;color:#333;}
</style>
<script language="javascript" src="./digg.js"></script>
<script type="text/javascript">
var url ='http://127.0.0.1/digg/';
</script>
</head>
<body>
<div class="mark">
<div id="mark0" onmouseover="this.style.backgroundPosition='0 0'" onmouseout="this.style.backgroundPosition='-189px 0'" onfocus="this.blur()" onClick="sEval(1190,1)">
<div class="bar"><div id="eimg1" style="width:50px"></div></div>
<span id="barnum1"><span id="sp1">92.7%</span> (<span id="s1">18199</span>)</span>
</div>
<div id="mark1" onmouseover="this.style.backgroundPosition='-567px 0'" onmouseout="this.style.backgroundPosition='-378px 0'" onfocus="this.blur()" onclick="sEval(1190,2)">
<div class="bar"><div id="eimg2" style="width:4px"></div></div>
<span id="barnum2"><span id="sp2">7.3%</span> (<span id="s2">1431</span>)</span>
</div>
</div>
</body>
</html>
js代码
function $Obj(o){
return document.getElementById(o);
}
var etag=false;
function sEval(softid,et){
if(etag==true)
{
alert('您已经投过票了,感谢您的参与!');
return;
}
var file=url +'digg.php?et='+et+'&id='+softid;
var html_doc=document.getElementsByTagName('head')[0];
var js=document.createElement('script');
js.setAttribute('type', 'text/javascript');
js.setAttribute('src', file);
js.onreadystatechange=function(){
if(js.readyState=='loaded'||js.readyState=='complete'){
sEvalRes();
}
}
js.onload=function(){
sEvalRes();
}
html_doc.appendChild(js);
etag=true;
}
function sEvalRes(){
if(re[2]=='success'){
var s=$Obj('s'+re[1]).innerHTML;
$Obj('s'+re[1]).innerHTML=parseInt(s)+1;
sUpdate();
alert(re[3]);
}
else if(re[2]=='fail'){
alert(re[3]);
}
else{
alert('未知错误');
}
}
function sUpdate(){
var sUp=parseInt($Obj('s1').innerHTML);
var sDown=parseInt($Obj("s2").innerHTML);
var sTotal=sUp+sDown;
var spUp=(sUp/sTotal)*100;
spUp=Math.round(spUp*10)/10;
var spDown=100-spUp;
spDown=Math.round(spDown*10)/10;
$Obj('sp1').innerHTML=spUp+'%';
$Obj('sp2').innerHTML=spDown+'%';
$Obj('eimg1').style.width = parseInt((sUp/sTotal)*55)+'px';
$Obj('eimg2').style.width = parseInt((sDown/sTotal)*55)+'px';
}
php代码
<?php
$id =intval($id);
$et =intval($et);
if($_COOKIE['digg'.$id]=='' || empty($_COOKIE['digg'.$id]) ){
setcookie("digg".$id, $id, time()+3600); /* expire in 1 hour */
//读写数据库操作部分省略
echo "var re=new Array();re[0]=".$id.";re[1]=".$et.";re[2]="success";re[3]="投票成功!";";
}else{
echo "var re=new Array();re[0]=".$id.";re[1]=".$et.";re[2]="fail";re[3]="嬲你的, php strrpos explode is_array 函数使用教程
本文章来讲一个简单的关于strrpos explode is_array等函数的使用方法哦,
关于strrpos判断
字符中是否存在要查的字符strrpos($j_rs->selectedjob,'-')
关于explode判断
把字符以什么形式开成数组array = explode('-',$j_rs->selectedjob);
is_array
判断当前参数是否是数组is_array( $array )
$ja ='0';
$jb ='0';
if(strrpos($j_rs->selectedjob,'-') )//用strrpos
{
$array = explode('-',$j_rs->selectedjob);
if( is_array( $array ) )
{
$ja =getJobType( $array[0] );
$jb =getJobType( $array[1] );
}
else
{
$ja =getJobType( $j_rs->selectedjob );
}
}
else
{
$ja =getJobType( $j_rs->selectedjob );
}
i
下面我们一一看讲一下这些函数的使用教程吧。
in_array($array)
这个函数是判断当前值是否为数组哦
EX:
$array= array(1,2);
if( in_array( $array ) )
{
die('in_array判断它是数组');
}
echo '不是数组';
result:
in_array判断它是数组
trim($value)
trim函数是去除参数的空值包括null," "
isset($value)
isset是判断变量是否存在
unset($value)
销毁变量
下面我们来看看isset,unset实例吧。
$a = 'v';
isset( $a ) ? $a:NULL;
unset( $a );
isset( $a ) ? $a:NULL;
结果是:
v
Null
is_numeric($num)
$num =3;
if( is_numeric($num) )
{
echo $num;
}
else
{
echo '不是数值';
}
本站原创转载注明来自www.111cn.net/phper/php.html
相关文章
- 有一种方法,可以不打开网站而直接查看到这个网站的源代码.. 这样可以有效地防止误入恶意网站... 在浏览器地址栏输入: view-source:http://...2016-09-20
- <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
- 本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
- 本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
- 本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
- php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
- php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p> </p> <p> </p> <form name="form1...2016-11-25
- 公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
- 这篇文章主要为大家详细介绍了jQuery实现广告显示和隐藏动画,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-07-05
- 其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
- 本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
- 一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
- 微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
- 为了网站的安全性,很多朋友都把密码设的比较复杂,但是如何密码不能明显示,不知道输的是对是错,为了安全起见可以把密码显示的,那么基于js代码如何实现的呢?下面通过本文给大家介绍JavaScript实现表单密码的隐藏和显示,需要的朋友参考下...2016-03-03
- 本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
- 小编分享了一段简单的php中文转拼音的实现代码,代码简单易懂,适合初学php的同学参考学习。 代码如下 复制代码 <?phpfunction Pinyin($_String...2017-07-06
php导出csv格式数据并将数字转换成文本的思路以及代码分享
php导出csv格式数据实现:先定义一个字符串 存储内容,例如 $exportdata = '规则111,规则222,审222,规222,服2222,规则1,规则2,规则3,匹配字符,设置时间,有效期'."/n";然后对需要保存csv的数组进行foreach循环,例如复制代...2014-06-07- ecshop商品无限级分类代码 function cat_options($spec_cat_id, $arr) { static $cat_options = array(); if (isset($cat_options[$spec_cat_id]))...2016-11-25
- 本文介绍了如何延迟javascript代码的加载,加快网页的访问速度。 当一个网站有很多js代码要加载,js代码放置的位置在一定程度上将会影像网页的加载速度,为了让我们的网页加载速度更快,本文总结了一下几个注意点...2013-10-13
- 想在网页中动态地显示当前系统的时间,找了好多,不过都是一些停在那里不动的。。。不过皇天不负有心人,终于让我找到了...2020-06-25