我做了个ip判断城市进行跳转,放到公共文件就出现不停访问跳转了
回复讨论(解决方案)
你所谓的公共文件是不是被很多其他文件包含进去了?
你所谓的公共文件是不是被很多其他文件包含进去了?
类文件、配置文件、公共函数文件、分页函数文件之类的走在一个init.php里面,这个init.php就是公共文件,每个页面都会调用到
贴出你的代码
不知道你是怎么写的,如何知道怎么改?
$useripNum || $userip2num $useripNum) { $EndNum = $Middle; continue; } //取完上一个索引后取下一个索引 $DataSeek = fread($fd, 3); if(strlen($DataSeek) 这个是ipaddress.php页面require (ROOT_PATH . 'include/config.php');require (ROOT_PATH . 'include/smarty/Smarty.class.php');require (ROOT_PATH . 'include/mysql.class.php');require (ROOT_PATH . 'include/action.class.php');require (ROOT_PATH . 'include/check.class.php');require (ROOT_PATH . 'include/page.class.php');require (ROOT_PATH . 'include/ipaddress.php'); 这个是判断ip切换城市的这是公共调用文件的一部分
网站只有一个index.php页面
中,无论 city 是什么内容,总是要跳转的
那么你究竟想转到哪里去?
中,无论 city 是什么内容,总是要跳转的
那么你究竟想转到哪里去?
这里我解释一下,这个我还没有添加动态程序,默认打开直接就是 http://www.0971my.com,如果在西宁市的话打开也是 http://www.0971my.com,如果是其他城市则跳转至二级域名
既然你默认打开的是 http://www.js0971.com/
那么在 西宁市 就不需要跳转了
if(city.indexOf("西宁市")>=0){
//window.location.href="http://www.js0971.com/";
}else{
window.location.href="http://bj.0971my.com/"; //不是西宁市才需要跳转
}
既然你默认打开的是 http://www.js0971.com/
那么在 西宁市 就不需要跳转了
if(city.indexOf("西宁市")>=0){
//window.location.href="http://www.js0971.com/";
}else{
window.location.href="http://bj.0971my.com/"; //不是西宁市才需要跳转
}
现在问题是,只要一打开这个网址就不停的在访问跳转,就是在执行上面那句代码,现在问题是我怎么知道这个IP已经访问过了,直接打开这个城市的域名,而不是一直在跳转
注释掉不就不执行了吗?
难道你在 bj.0971my.com 也判断是否 西宁市 吗?
注释掉不就不执行了吗?
难道你在 bj.0971my.com 也判断是否 西宁市 吗?
版主没明白我的意思呢,二级域名下面也是这个网站,只是城市不同而已,用的都是一个index.php页面,这样的话就会出现不停跳转。
不同的二级域名,判别条件也不同,你都写死了,当然就不行啦
不同的二级域名,判别条件也不同,你都写死了,当然就不行啦
我没有写死啊, 这句我只是放了个例子,具体程序我还没写到里面去,只是测试一下就出来问题了,主要就是网址打开最先访问的都是这个index.php页面而且是唯一一个页面,区别就是不同城市显示不同东西。现在我要解决的就是怎么实现这个,要怎么做才不会出现我上述的问题。
就是人家58那样,不同城市打开不同的内容,但是都是一个index.php,要么就是人家解析到别的文件夹去了,这个我就不清楚了。
用cookie或session存一个city的标记,例:为0时进入ip判断力跳转,并修改标记city>0
其实你这段 js 代码是不需要的
你既然是根据用户的 ip 跳转对应的二级域名,那么你就应该有一个城市(地区)与二级域名的对照表
当从 ip 取得城市(地区)名时,从此表查得二级域名进行跳转就可以了(header 函数),当然还要和 $_SERVER['HTTP_HOST'] 比较一下,已经是了就不再跳转了
其实你这段 js 代码是不需要的
你既然是根据用户的 ip 跳转对应的二级域名,那么你就应该有一个城市(地区)与二级域名的对照表
当从 ip 取得城市(地区)名时,从此表查得二级域名进行跳转就可以了(header 函数),当然还要和 $_SERVER['HTTP_HOST'] 比较一下,已经是了就不再跳转了
城市(地区)与二级域名的对照表这个我已经有了,这段是我在ipaddress下面判断的代码:
query("select * from ".$db->table('area')." where title like '%".$city."%'");$row=$db->fetch_array($sql);if(!$row){ header("Location:http//www.0971my.com");}else{ if($row['title']=='西宁市'){ header("Location:http://www.0971my.com"); }else{ header("Location:".$row['dns'].""); }}?>
如果用header()跳转的话,就会直接是这个结果http://www.0971my.com/http//www.0971my.com
地址后面给个标志位比如,transf=1 ,页面首先接受request[""]==1,则不执行判断。
你这样写死了怎么行。。。。
地址后面给个标志位比如,transf=1 ,页面首先接受request[""]==1,则不执行判断。
你这样写死了怎么行。。。。
这样的话点击到其他页面,那transf=1不是丢失了,这是不是还必须的session或者cookies呢?
很简单, 主域名 www.xxx.com
分站域名, bj.xxx.com, xa.xxx.com, gz.xxx.com ....
从www来的请求,根据ip跳转到分站, 分站的代码不需要跳转,简单判断域名然后用header()跳转就好了。
其实你这段 js 代码是不需要的
你既然是根据用户的 ip 跳转对应的二级域名,那么你就应该有一个城市(地区)与二级域名的对照表
当从 ip 取得城市(地区)名时,从此表查得二级域名进行跳转就可以了(header 函数),当然还要和 $_SERVER['HTTP_HOST'] 比较一下,已经是了就不再跳转了
版主你说的这个该怎么去判断呢,望告知,谢谢~!
很简单, 主域名 www.xxx.com
分站域名, bj.xxx.com, xa.xxx.com, gz.xxx.com ....
从www来的请求,根据ip跳转到分站, 分站的代码不需要跳转,简单判断域名然后用header()跳转就好了。
脑子有点短路,不知道你那个具体该怎么操作?
谢谢,各位我已经弄出来了,但是现在还有一个问题么考虑到,就是手动选择城市,这里的cookie是不是跨域访问了?
你针对的是二级域名,指定 setcookie 的4个参数即可
你针对的是二级域名,指定 setcookie 的4个参数即可
谢谢版主的回答,setcookie的参数我已经写出,这个问题我会在另一个提问里面提出来,望版主前去看下,谢谢!