php根据ip获取地区的程序代码

 更新时间:2016年11月25日 15:42  点击:1747
根据IP地址来获取用户所在的地区,这个需要借助一个外部api或一个数据库来记录IP地址是哪里的,下面我总结一些常用的方法给各位参考。

先用php获取本机的ip,再用php的curl函数来获取用户的详细地区.下面来看一下代码;

 代码如下 复制代码


/*
 * 这个函数是获取客户端和IP

 */
function GetIP()
{
 if(!empty($_SERVER["HTTP_CLIENT_IP"]))
 {
  $cip = $_SERVER["HTTP_CLIENT_IP"];
 }
 else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
 {
  $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
 }
 else if(!empty($_SERVER["REMOTE_ADDR"]))
 {
  $cip = $_SERVER["REMOTE_ADDR"];
 }
 else
 {
  $cip = '';
 }
 preg_match("/[d.]{7,15}/", $cip, $cips);
 $cip = isset($cips[0]) ? $cips[0] : 'unknown';
 unset($cips);
 return $cip;

方法一,利用QQWry.Dat IP库,我们只胖乎乎

用简单的办法。

使用示例

示例一:

 代码如下 复制代码

$IpLocation = new IpLocation();
$client = $IpLocation->getlocation();
print_r($client);

示例二:

 代码如下 复制代码

$IpLocation = new IpLocation('../qqwry/QQWry.Dat');
$client = $IpLocation->getlocation('115.148.101.72');
print_r($client);

具体的IP库与Iplocation类文件这里不介绍了大家百度搜索吧。


方法二,利用api接口

示例一,

 代码如下 复制代码

  /**
  * 获取IP地区
  * Enter description here ...
  * @param unknown_type $ip
  */
 function GetArea($ip){

 $url = "http://ip168.com/ip/?ip=".$ip;
 $contents = file_get_contents($url);
// preg_match_all('/<h3[sS]*?(<a[sS]*?</h3>)/',$contents,$rs);
 preg_match_all('|<div>本站主数据:.*</div>|',$contents,$rsR);
 $rsR[0][0] = str_replace("<div>本站主数据:", "", $rsR[0][0]);
 $rsR[0][0] = str_replace("</div>", "", $rsR[0][0]);
 return $rsR[0][0];
 }


示例二,


下面这个函数是用php的curl函数从网路上获取详细地区

 代码如下 复制代码

function lazdf($ip){

$curl= curl_init();

curl_setopt($curl,CURLOPT_URL,"http://www.ip138.com/ips138.asp?ip=".$ip);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
$ipdz=curl_exec($curl);
curl_close($curl);
preg_match("/<ul class="ul1"><li>(.*?)</li>/i",$ipdz,$jgarray);
preg_match("/本 www.111cn.net 站主数据:(.*)/i", $jgarray[1],$ipp);

return  "<div class="global_widht global_zj zj" style="background: none repeat scroll 0% 0% rgb(226, 255, 191); font-size: 12px; color: rgb(85, 85, 85); height: 30px; line-height: 30px; border-bottom: 1px solid rgb(204, 204, 204); text-align: left;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;欢迎来自&nbsp;<b>".$ipp[1]."</b>&nbsp;的朋友!</div>";

}

echo lazdf(GetIP());//输出ip

欢迎来自长沙地区的朋友

下面本文章总结了三种把数组转换成字符串然后写入到数据库中,一是直接利用implode函数,另外就使用serialize与eval函数进行转换,下面来一起看看吧。

最简单的办法

转换implode

 代码如下 复制代码

数组->字符
$txt=implode("?",arr[]);

字符->数组
$arr[]=explode("?",txt);

使用php的serialize函数。

例子:

 代码如下 复制代码

$data = array('上海', '北京', '武汉');
$data = serialize($data);
echo $data;

如何再将从数据库中取出的数组字符串,转换成数组呢?用unserialize函数:

 代码如下 复制代码
$data = unserialize($data);
echo $data;

 
当然这样我们还可以直接写入到文件中

serialize和反序列unserialize来实现。

 代码如下 复制代码

<?php
$file="./data/file.cache";
$array = array("count" => "3000",
              "num"  =>"300");
 //缓存
file_put_contents($file,serialize($array));//写入缓存
$cacheArray = unserialize(file_get_contents($file));
print_r($cacheArray);
?>

例子

使用期php的eval函数

string2array,array2string PHP数组转字符串写入数据库,字符串数组转可执行

 代码如下 复制代码

/**
* 将字符串转换为数组
*
* @param    string  $data   字符串
* @return   array   返回数组格式,如果,data为空,则返回空数组
*/ 
 function string2array($data) {  
    if($data == '') return array();  
    @eval("$array = $data;");  
    return $array;  
}  
 /**
* 将数组转换为字符串
*
* @param    array   $data       数组
* @param    bool    $isformdata 如果为0,则不使用new_stripslashes处理,可选参数,默认为1
* @return   string  返回字符串,如果,data为空,则返回空
*/ 
function array2string($data, $isformdata = 1) {  
    if($data == '') return '';  
    if($isformdata) $data = new_stripslashes($data);  
    return addslashes(var_export($data, TRUE));  

文章先是给各位普及一下关于cookie与session的两个例子,然后再以利用cookie自动登录为例子给大家介绍了它们之间的关系及后面总结了区别,希望此文章对你理解cookie与session会有所帮助。

session的使用:

session_start();定义$_SESSION数组变量。

session_start()使用前,不能有任何形式的输出,包括php中的输出和html代码。

$_SESSION数组不可以使用数值下标,只可以使用字符串下标。

php.ini中的session_save_path配置项决定了session的保存位置。

默认情况下,session是保存在文件中。我们可以使用session_set_save_handler()函数来重写session机制。

设置有效时间

 代码如下 复制代码
SESSION:
ini_set('session.gc_maxlifetime',24*3600);//session保存一天
session_start();
$_SESSION[‘web_name’]='网易';

说明:好像默认是时间是:20-24分钟,但是关闭浏览器session就自动消失了!

删除session:

删除某个元素 unset($_SESSION[key]);

删除所有session $_SESSION=array();

删除保存session数据的文件 session_destroy();

session_distroy()方法只是删除了服务器端的session文件,并不会释放内存中的$_SESSION变量,如果我们在session_distroy()后,立即var_dump($_SESSION),仍然可以看到session输出。因此如果想完全的释放session,必须配合使用$_SESSION=array()。

cookie的使用:

设置cookie:setcookie(变量名,变量值,生存时间(时间戳))。

删除cookie:setcookie(变量名,值,time()-1)。原理:设置cookie的生存时间过期。

读取cookie:$_COOKIE[变量名]。

$path="/";  //设置cookie存放的路径;1.默认存放是本目录,只有本目录下才能访问,2.“/”表示存放在根目录,3.“/foo/”只有foo文件夹下面文件才能访问

 代码如下 复制代码


setcookie("cookiename","网易'", time()+intval(24*3600),$path); /* 有效期 1天 */

注意:cookie存放的值只能是string类型的,但是要存放数值怎么解决呢!

存储:

 代码如下 复制代码

$array=array('a','b');
//"serialize:"返回值是一个字符串。有的时候为了把一些数据转为字符串存起来,但是希望保持数据原来有结构和内容。就要用到这个函数。
$res=serialize($array);
setcookie("snsresult",$res,time()+intval(24*3600));

读取:

 代码如下 复制代码

//恢复serialize对象

 $other = StripSlashes($_COOKIE['snsresult']);//必须执行这步
  $arr=unserialize($other);//先将加密cookie进行解码 www.111Cn.net

注意:setcookie在代码中存取值时前面是不可以输出任何内容的,空行也不可以,不然cookie是没有值的。

1、$_COOKIE只可以读取cookie的值,并不能对cookie进行设置。

2、在使用setcookie之前,不能有任何类型的输出。

3、在脚本第一次设置cookie后,是不能在当前脚本使用$_COOKIE获取到的。需刷新页面或者在其他脚本中获取。

自动登录

 代码如下 复制代码

//检查用户是否登录


function checklogin(){ 
     if(empty($_SESSION['user_info'])){    //检查一下session是不是为空 
     if(empty($_COOKIE['username']) || empty($_COOKIE['password'])){  //如果session为空,并且用户没有选择记录登录状 
     header("location:login.php?req_url=".$_SERVER['REQUEST_URI']);  //转到登录页面,记录请求的url,登录后跳转过去,用户体验好。 
}else{   //用户选择了记住登录状态 
     $user = getUserInfo($_COOKIE['username'],$_COOKIE['password']);   //去取用户的个人资料 
     if(empty($user)){    //用户名密码不对没到取到信息,www.111Cn.net 转到登录页面 
     header("location:login.php?req_url=".$_SERVER['REQUEST_URI']); 
     }else{ 
     $_SESSION['user_info'] = $user;   //用户名和密码对了,把用户的个人资料放到session里面 
     } 
     } 
     } 
}


二,用户提交登录信息


username = trim($_POST['username']); 
$password = md5(trim($_POST['password'])); 
$validatecode = $_POST['validateCode']; 
$ref_url = $_GET['req_url']; 
$remember = $_POST['remember']; 
 
$err_msg = ''; 
if($validatecode!=$_SESSION['checksum']){ 
$err_msg = "验证码不正确"; 
}elseif($username=='' || $password==''){ 
$err_msg = "用户名和密码都不能为空"; 
}else{ 
$row = getUserInfo($username,$password); 
 
if(empty($row)){ 
$err_msg = "用户名和密码都不正确"; 
}else{ 
$_SESSION['user_info'] = $row; 
if(!empty($remember)){     //如果用户选择了,记录登录状态就把用户名和加了密的密码放到cookie里面 
setcookie("username", $username, time()+3600*24*365); 
setcookie("password", $password, time()+3600*24*365); 

if(strpos($ref_url,"login.php") === false){ 
header("location:".$ref_url); 
}else{ 
header("location:main_user.php"); 


}


三,当用户点退出时,清出记录登录状态


//退出登录


function logout(){ 
unset($_SESSION['user_info']); 
if(!empty($_COOKIE['username']) || !empty($_COOKIE['password'])){ 
setcookie("username", null, time()-3600*24*365); 
setcookie("password", null, time()-3600*24*365); 

}

两者的联系与区别:

联系:

两者都被成为会话技术,用于解决http的无状态性。

sessionID是保存在cookie中的。默认情况下,session是依赖cookie的,如果浏览器端完全禁用了cookie,那么session也就不能用了。但是我们有其他的方法可以让session继续有用。比如url重写,将sessionID放在url中;给表单增加隐藏域,讲sessionID存放在隐藏域中,发送至浏览器。

区别:

cookie保存早浏览器端,每次访问服务器的时候,都会讲cookie带过去,保证让服务器知道两次请求来自于同一个客户端。安全性较低。

session保存在服务器,每次请求都会通过cookie带来的sessionID去服务器匹配。安全性较高。

session的有效期从session_start()开始,到浏览器关闭结束。

cookie可以设定有效期。默认为浏览器关闭cookie就失效,sessionID丢失,即使服务器端的session文件还在,也不会被找到。

正则表达试是我们在开发验证时会常用到的一些规则,下面我整理了在我们用户数据提交时的一些常用的正则表达式,希望这些整理数据对你有帮助。

正则表达式一直以来是我比较头痛的东西,不过工作中是离不开正则表达式的,代码、vim编辑器、awk等Linux命令都广泛应用正则表达式。这是我收集并且测试过的PHP代码中常用的正则表达式,首先建立测试函数:

 代码如下 复制代码

function regTest( $pattern, $str ) {
    var_dump( preg_match($pattern, $str) );
    preg_match_all($pattern,$str,$matches);
    var_dump( $matches );
    var_dump( preg_replace($pattern,$str,'Test') );
}

1. 匹配中文字符

 代码如下 复制代码

$pattern = "/[x{4e00}-x{9fa5}]/u";
$str = "飞晏-feiyan";
regTest( $pattern, $str );
//依次输出结果
//int(1)
//array(1) { [0]=> array(2) { [0]=> string(3) "飞" [1]=> string(3) "晏" } }
//string(28) "TestTest-feiyan"

关于汉字的匹配,网上很多给的都是“[u4e00-u9fa5]”,这个正则不一定完全正确。

2. 匹配tab缩进、空格和换行

 代码如下 复制代码

$pattern = "/[x{4e00}-x{9fa5}]/u";
$str = "飞晏-feiyan";
regTest( $pattern, $str );
//依次输出结果
//int(1)
//array(1) { [0]=> array(2) { [0]=> string(3) "飞" [1]=> string(3) "晏" } }
//string(28) "TestTest-feiyan"
//string(21) "HelloTestTest,TestPHP"

3. 匹配Email地址

 代码如下 复制代码
$pattern = "[w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*]";
$str = '如有问题,请联系service@lenovo.com或者contact@ibm.com。';
regTest( $pattern, $str );
//依次输出结果
//int(1)
//array(4) { [0]=> array(2) { [0]=> string(18) "service@lenovo.com" [1]=> string(15) "contact@ibm.com" } [1]=> array(2) { [0]=> string(0) "" [1]=> string(0) "" } [2]=> array(2) { [0]=> string(0) "" [1]=> string(0) "" } [3]=> array(2) { [0]=> string(0) "" [1]=> string(0) "" } }
//string(41) "如有问题,请联系Test或者Test。"

  
//使用Filter函数
filter_var($email, FILTER_VALIDATE_EMAIL);

我一般不自己写正则表达式去验证邮箱,使用PHP内置filter函数可以很方便的完成邮箱地址的验证。

4. 匹配国内手机号码和电话号码

 代码如下 复制代码
//固定电话匹配
$pattern = "[d{3,4}-d{7,8}]";
$str = '联系电话010-12345678';
regTest( $pattern, $str );
  
//最简单的匹配手机号匹配
$pattern = "[1d{10}]";
$str = '联系电话15812345678';
regTest( $pattern, $str );

5. 匹配HTML中的图片地址

 代码如下 复制代码

$pattern = '/<[img|IMG].*?src=['|"](.*?(?:[.gif|.jpg]))['|"].*?[/]?>/'; 

$str = '<img id="test_img" src="images/123.gif" alt="test" />'; 

regTest( $pattern, $str );


/**
     * 验证邮政编码
     * @param string $value
     * @param string $match
     * @return boolean
     */
    public static function isPostcode($value,$match='/d{6}/'){
$v = trim($value);
if(empty($v))
    return false;
return preg_match($match,$v);
    }
    /**
     * 验证IP
     * @param string $value
     * @param string $match
     * @return boolean
     */
    public static function isIP($value,$match='/^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]).(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0).(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0).(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$/'){
$v = trim($value);
if(empty($v))
    return false;
return preg_match($match,$v);
    }

    /**
     * 验证身份证号码
     * @param string $value
     * @param string $match
     * @return boolean
     */
    public static function isIDcard($value,$match='/^d{6}((1[89])|(2d))d{2}((0d)|(1[0-2]))((3[01])|([0-2]d))d{3}(d|X)$/i'){
$v = trim($value);
if(empty($v))
    return false;
else if(strlen($v)>18)
    return false;
return preg_match($match,$v);
    }

    /**
     * *
     * 验证URLwww.111cn.net
     * @param string $value
     * @param string $match
     * @return boolean
     */
    public static function isURL($value,$match='/^(http://)?(https://)?([wd-]+.)+[w-]+(/[dw-./?%&=]*)?$/'){
$v = strtolower(trim($value));
if(empty($v))
    return false;
return preg_match($match,$v);  
    }

补充

表单验证匹配
验证账号,字母开头,允许 5-16 字节,允许字母数字下划线:^[a-zA-Z][a-zA-Z0-9_]{4,15}$

验证账号,不能为空,不能有空格,只能是英文字母:^S+[a-z A-Z]$

验证账号,不能有空格,不能非数字:^d+$

验证用户密码,以字母开头,长度在 6-18 之间:^[a-zA-Z]w{5,17}$

验证是否含有 ^%&',;=?$ 等字符:[^%&',;=?$x22]+

匹配Email地址:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*

匹配腾讯QQ号:[1-9][0-9]{4,}

匹配日期,只能是 2004-10-22 格式:^d{4}-d{1,2}-d{1,2}$

匹配国内电话号码:^d{3}-d{8}|d{4}-d{7,8}$
评注:匹配形式如 010-12345678 或 0571-12345678 或 0831-1234567

匹配中国邮政编码:^[1-9]d{5}(?!d)$

匹配身份证:d{14}(d{4}|(d{3}[xX])|d{1})
评注:中国的身份证为 15 位或 18 位

不能为空且二十字节以上:^[s|S]{20,}$

目前最为流行的微信游戏了,就是抽奖活动,下面我看一站长整理了这款抽奖源码出来,下面我也转过来与各位朋友分享。

在做微信的过程中用到了微信抽奖,看了其他的作者都只是吧微信抽奖的页面共享出来了。我现在把转盘抽奖程序和微信抽奖页面都共享出来,有需要的自己把两者组合一下即可。

微信(weixin)大转盘抽奖

部份源码:配置文件

 代码如下 复制代码
<?php
return array (
  'DB_TYPE' => 'mysql',
  'DB_HOST' => '127.0.0.1',
  'DB_NAME' => 'ites',
  'DB_USER' => 'root',
  'DB_PWD' => '111111',
  'DB_PORT' => 3306,
  'DB_PREFIX' => 'it_',
  'APP_DEBUG' => 1,
  'SHOW_ERROR_MSG' => 1,
  'SHOW_PAGE_TRACE' => 1,
  'DATA_CACHE_TYPE' => 'Redis',
  'REDIS_HOST' => '127.0.0.1',
  'REDIS_PORT' => 6379,
  'DATA_CACHE_TIME' => 3600,
  'URL_CASE_INSENSITIVE' => true,
  'TMPL_STRIP_SPACE' => false,
  'URL_HTML_SUFFIX' => '',
  'SITE_NAME' => '11111',
  'SITE_URL' => 'http://www.111cn.net/',
  'WECHAT_TOKEN' => '你的',
  'WECHAT_APPID' => '你的',
  'WECHAT_APPSECRET' => '你的',
  'DATA_AUTH_KEY' => 'abcdddd',
);
?>

commond.php文件

 代码如下 复制代码

<?php
function isMobile($mobile) {
 return preg_match("/^(?:13d|14d|15d|18[0123456789])-?d{5}(d{3}|*{3})$/", $mobile);
}

function isEmail($email) {
 return strlen($email) > 6 && preg_match("/^[w-.]+@[w-.]+(.w+)+$/", $email);
}

/**
 * 发送HTTP请求方法,目前只支持CURL发送请求
 * @param  string $url    请求URL
 * @param  array  $params 请求参数
 * @param  string $method 请求方法GET/POST
 * @return array  $data   响应数据
 */
function http($url, $params, $method = 'GET', $header = array(), $multi = false){
 $opts = array(
   CURLOPT_TIMEOUT        => 30,
   CURLOPT_RETURNTRANSFER => 1,
   CURLOPT_SSL_VERIFYPEER => false,
   CURLOPT_SSL_VERIFYHOST => false,
   CURLOPT_HTTPHEADER     => $header
 );

 /* 根据请求类型设置特定参数 */
 switch(strtoupper($method)){
  case 'GET':
   $opts[CURLOPT_URL] = $url . '?' . http_build_query($params);
   break;
  case 'POST':
   //判断是否传输文件
   //$params = $multi ? $params : http_build_query($params);
   $opts[CURLOPT_URL] = $url;
   $opts[CURLOPT_POST] = 1;
   $opts[CURLOPT_POSTFIELDS] = $params;
   break;
  default:
   throw new Exception('不支持的请求方式!');
 }

 /* 初始化并执行curl请求 */
 $ch = curl_init();
 curl_setopt_array($ch, $opts);
 $data  = curl_exec($ch);
 $error = curl_error($ch);
 curl_close($ch);
 if($error) throw new Exception('请求发生错误:' . $error);
 return  $data;
}

/**
 * 不转义中文字符和/的 json 编码方法
 * @param array $arr 待编码数组
 * @return string
 */
function jsencode($arr) {
 $str = str_replace ( "\/", "/", json_encode ( $arr ) );
 $search = "#\u([0-9a-f]+)#ie";
 
 if (strpos ( strtoupper(PHP_OS), 'WIN' ) === false) {
  $replace = "iconv('UCS-2BE', 'UTF-8', pack('H4', '\1'))";//LINUX
 } else {
  $replace = "iconv('UCS-2', 'UTF-8', pack('H4', '\1'))";//WINDOWS
 }
 
 return preg_replace ( $search, $replace, $str );
}

// 数据保存到文件
function data2file($filename, $arr=''){
 if(is_array($arr)){
  $con = var_export($arr,true);
  $con = "<?php return $con; ?>";
 } else{
  $con = $arr;
  $con = "<?php $con; ?>";
 }
 write_file($filename, $con);
}

/**
 * 系统加密方法
 * @param string $data 要加密的字符串
 * @param string $key  加密密钥
 * @param int $expire  过期时间 单位 秒
 * @return string
 * @author winky
 */
function encrypt($data, $key = '', $expire = 0) {
    $key  = md5(empty($key) ? C('DATA_AUTH_KEY') : $key);
    $data = base64_encode($data);
    $x    = 0;
    $len  = strlen($data);
    $l    = strlen($key);
    $char = '';

    for ($i = 0; $i < $len; $i++) {
        if ($x == $l) $x = 0;
        $char .= substr($key, $x, 1);
        $x++;
    }

    $str = sprintf('%010d', $expire ? $expire + time():0);

    for ($i = 0; $i < $len; $i++) {
        $str .= chr(ord(substr($data, $i, 1)) + (ord(substr($char, $i, 1)))%256);
    }
    return str_replace(array('+','/','='),array('-','_',''),base64_encode($str));
}

/**
 * 系统解密方法
 * @param  string $data 要解密的字符串 (必须是encrypt方法加密的字符串)
 * @param  string $key  加密密钥
 * @return string
 * @author winky
 */
function decrypt($data, $key = ''){
    $key    = md5(empty($key) ? C('DATA_AUTH_KEY') : $key);
    $data   = str_replace(array('-','_'),array('+','/'),$data);
    $mod4   = strlen($data) % 4;
    if ($mod4) {
       $data .= substr('====', $mod4);
    }
    $data   = base64_decode($data);
    $expire = substr($data,0,10);
    $data   = substr($data,10);

    if($expire > 0 && $expire < time()) {
        return '';
    }
    $x      = 0;
    $len    = strlen($data);
    $l      = strlen($key);
    $char   = $str = '';

    for ($i = 0; $i < $len; $i++) {
        if ($x == $l) $x = 0;
        $char .= substr($key, $x, 1);
        $x++;
    }

    for ($i = 0; $i < $len; $i++) {
        if (ord(substr($data, $i, 1))<ord(substr($char, $i, 1))) {
            $str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));
        }else{
            $str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));
        }
    }
    return base64_decode($str);
}

function getTaskStatusStr($status = 0,$type = 'apply' , $company = ''){
 if ($type == 'comment') return '尚未作出评价';
 switch ($status) {
  case 0:
   return $type == 'apply' ? '已发出任务申请' : $company.'对你发出了任务邀请';
  break;
  case 1:
   return $type == 'apply' ? '企业已通过申请' : '已同意企业的邀请';
  break;  
  case 2:
   return $type == 'apply' ? '企业已忽略你的申请' : '你已经忽略企业的邀请';
  break;
  case 3:
   return $type == 'apply' ? '你已完成该任务' : '该任务已经完成';
  break;  
  default:
   return '未知的状态';
  break;
 }
}


function getArea($cache = true){
 $area = S ( 'S_Area' );
 if (empty ( $area ) || ! $cache) {
  // 缓存不存在,或者参数读取缓存。
  $areaModel = D('Area');
  $area = $areaModel -> where ('status = 3')->order ( 'sort,itemid' )->getField('itemid,title,pid,arrparentid,child');
  //把市的省拚出来
  foreach ($area as $k=>$v){
   //如果是顶级
   if ($v['pid']==0){
    $areaArr[$v['itemid']]['itemid'] = $v['itemid'];
    $areaArr[$v['itemid']]['title'] = $v['title'];
    $areaArr[$v['itemid']]['pid'] = $v['pid'];
    $areaArr[$v['itemid']]['arrparentid'] = $v['arrparentid'];
    $areaArr[$v['itemid']]['child'] = $v['child'];
    //上级
    $areaArr[$v['itemid']]['upitemid'] = $v['itemid'];
    $areaArr[$v['itemid']]['uptitle'] = $v['title'];
   }
   //查出上级的名称和ID
   else {
    $areaArr[$v['itemid']]['itemid'] = $v['itemid'];
    $areaArr[$v['itemid']]['title'] = $v['title'];
    $areaArr[$v['itemid']]['pid'] = $v['pid'];
    $areaArr[$v['itemid']]['arrparentid'] = $v['arrparentid'];
    $areaArr[$v['itemid']]['child'] = $v['child'];
    //上级
    $areaArr[$v['itemid']]['upitemid'] = $area[$v['pid']]['itemid'];
    $areaArr[$v['itemid']]['uptitle'] = $area[$v['pid']]['title'];
   }
  }
  $area = $areaArr;
  S ( 'S_Area' , $area );
 }
 return $area;
}

?>

源码下载地址

http://file.111cn.net/upload/2014/3/wx.rar

 

[!--infotagslink--]

相关文章

  • PHP成员变量获取对比(类成员变量)

    下面本文章来给大家介绍在php中成员变量的一些对比了,文章举了四个例子在这例子中分别对不同成员变量进行测试与获取操作,下面一起来看看。 有如下4个代码示例,你认...2016-11-25
  • php 获取用户IP与IE信息程序

    php 获取用户IP与IE信息程序 function onlineip() { global $_SERVER; if(getenv('HTTP_CLIENT_IP')) { $onlineip = getenv('HTTP_CLIENT_IP');...2016-11-25
  • php获取一个文件夹的mtime的程序

    php获取一个文件夹的mtime的程序了,这个就是时间问题了,对于这个问题我们来看小编整理的几个例子,具体的操作例子如下所示。 php很容易获取到一个文件夹的mtime,可以...2016-11-25
  • 不打开网页直接查看网站的源代码

      有一种方法,可以不打开网站而直接查看到这个网站的源代码..   这样可以有效地防止误入恶意网站...   在浏览器地址栏输入:   view-source:http://...2016-09-20
  • php 调用goolge地图代码

    <?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
  • 如何获取网站icon有哪些可行的方法

    获取网站icon,常用最简单的方法就是通过website/favicon.ico来获取,不过由于很多网站都是在页面里面设置favicon,所以此方法很多情况都不可用。 更好的办法是通过google提供的服务来实现:http://www.google.com/s2/favi...2014-06-07
  • JS基于Mootools实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • JS实现自定义简单网页软键盘效果代码

    本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
  • php 取除连续空格与换行代码

    php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
  • jquery如何获取元素的滚动条高度等实现代码

    主要功能:获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 :$(window).width(); 获取页面的文档高度 $(document).height(); 获取页面的文档宽度 :$(document).width();...2015-10-21
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • PHP实现清除wordpress里恶意代码

    公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
  • jquery获取div距离窗口和父级dv的距离示例

    jquery中jquery.offset().top / left用于获取div距离窗口的距离,jquery.position().top / left 用于获取距离父级div的距离(必须是绝对定位的div)。 (1)先介绍jquery.offset().top / left css: 复制代码 代码如下: *{ mar...2013-10-13
  • Jquery 获取指定标签的对象及属性的设置与移除

    1、先讲讲JQuery的概念,JQuery首先是由一个 America 的叫什么 John Resig的人创建的,后来又很多的JS高手也加入了这个团队。其实 JQuery是一个JavaScript的类库,这个类库集合了很多功能方法,利用类库你可以用简单的一些代...2014-05-31
  • js识别uc浏览器的代码

    其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
  • JS实现双击屏幕滚动效果代码

    本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
  • JS日期加减,日期运算代码

    一、日期减去天数等于第二个日期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
  • PHP开发微信支付的代码分享

    微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
  • PHP常用的小程序代码段

    本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24