<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>城市切换</title>
<style type="text/css">
</style>
</head>
<body>
<div id="wrap">
<?Php
if (!isset($_COOKIE['mycity']))
{
function IP_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 = "125.216.3.255";
return $cip;
}$IP_ip=IP_GetIP(); //$IP_ip可以任意改成其他域名或者是ip地址//本机测试 请取消下一行注释代替上一行
$IP_ip='125.216.3.255';
 
$IP_str=file_get_contents('http://int.dpool.sina.com.cn/iplookup/iplookup.php?ip='.$IP_ip); 
$IP_tmp = explode(" ", $IP_str);
//gbk页面请注释下一行
$IP_city=iconv("GBK", "UTF-8", $IP_tmp[5]);
echo $IP_city;$expire=time()+60*60*24;
setcookie('mycity', $IP_city, $expire);
}
else
{
echo '<h3>当前所在城市:<a href="city.php?id='.$_COOKIE['mycity'].'">'.$_COOKIE['mycity'].'</a></h3>';

}?>
<div style="display:none">
<script type="text/javascript">
var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://");
document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3Fd7c7c1f81dc456fa485b5e6c4c2fc01e' type='text/javascript'%3E%3C/script%3E"));
</script>
</div>
</div>
</body>
</html>

解决方案 »

  1.   

     当然不会变了,你就第一次打开页面才会进入到if (!isset($_COOKIE['mycity']))代码块。 其他的都直接进入到else
    {
     echo '<h3>当前所在城市:<a href="city.php?id='.$_COOKIE['mycity'].'">'.$_COOKIE['mycity'].'</a></h3>';}这里了。$_COOKIE['mycity']值没有被重新设置。
      

  2.   

    记住cookie了,时长24小时,再刷新变成读历史了,要是存在需要随时变ip的考虑情况,就不要存cookie了,要不然取出来与新的ip比较一下,不相同就用新的吧
      

  3.   

    放数据库,每次拿出来吧。或者session
      

  4.   

    //本机测试 请取消下一行注释代替上一行
    $IP_ip='125.216.3.255';
    这个ip定死了吗,你修改一下

    $expire=time()+60*60*24;
    setcookie('mycity', $IP_city, $expire);
    注释掉