请求PHP高手帮忙一个问题 本帖最后由 wapasp 于 2011-07-08 11:40:58 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 因为这个“来路”是浏览器提供的,所以,你在php文件上下功夫是没用的。倒是有种思路你可以考虑下:B.php不做跳转,而是用socket模拟浏览器,读取C.php的内容,再展示给客户,这样,你就可以自由设定“来路”了。 或者可以试试用javascript获取来路,然后赋值给php变量. 你在B.php上也按照A的写法链接到C。或者用js跳转也可以。 echo "<script>window.location.href='C.php';</script>";试试看。 这个也不行的,这样还是检查到来路是B.php了。 可以使用cookie记录来源网址,设置一个字段,在跳转页利用这个字段,就是来源了,然后再页面清除这个cookie字段,这种方法用在重定向的比较好,其他的非重定向直接用$_SERVER["HTTP_REFERER"]就好了你看看可以吗?A.php:<?phpheader("Content-Type: text/html; charset=GB2312");echo "<a href='B.php' target='_blank'>B.php</a><br />";?>B.php:<?phpheader("Content-Type: text/html; charset=GB2312");//PRINT_R($_SERVER);//当前页的url地址,设置为cookie中$nowurl='http://'.$_SERVER['SERVER_ADDR'].$_SERVER['PHP_SELF'];//设置cookie中,记录当前页的地址,当跳转到其他可以用这个$_cookie['referer']取来源地址,然后赋给$_SERVER["HTTP_REFERER"]或直接输出$_cookie['referer'],就可以得到来源页的urlsetcookie('referer',$nowurl);header("Location: C.php");?>C.php:<?phpheader("Content-Type: text/html; charset=GB2312");//print_r($_COOKIE);//cookie中设置了来源字段if(isset($_COOKIE['referer'])){$_SERVER["HTTP_REFERER"]=$_COOKIE['referer'];setcookie('referer','',time()-3600);//清除来源cookie}else $_SERVER["HTTP_REFERER"]='';//不存在来源,设置为空echo '来源url:'.$_SERVER["HTTP_REFERER"]; ?> 有个问题:为什么重定向$_SERVER["HTTP_REFERER"]是a.php,而不是b.php呢,怎么回事啊 我理解错了。我还以为你要检测到B。你是从B跳转过去的。当然检测到来路是B啦。除非你把A传到C,这样:B.php<?phpheader("Content-Type: text/html; charset=GB2312");header("Location: C.php?a=".$_SERVER["HTTP_REFERER"]);?>C.php<?phpheader("Content-Type: text/html; charset=GB2312");echo $_GET['a']; ?> 本帖最后由 xuzuning 于 2011-07-08 14:11:16 编辑 echo "<script>window.open("C.php","","");</script>";这样可以么? <button onclick="aaa">跳转</button><script> function aaa(){ location.href="c.html"; }</script> 谢谢大家回复的,问题仍是没得到解决。用JS跳转对谷歌浏览器无效,而对IE浏览又是出现阻止弹窗。再注明一下,实际C.php是比如跳转到其它网站的URL网址,我的目的就是要让目标URL网址中无法检查到来路,因为对方检查来路不是他们网址就不能访问。 这是常见的盗链与反盗链的问题,解决办法通常是在自己网站的B.php内构造HTTP请求然后通过socket发给C.php所在的网站,在请求头内通过Referer: http://www.C网站.com/这行来告诉C网站的C.php:请求是从C网站首页链接过来的。然后把获取到的网页内容去掉HTTP头后转发给用户。 是这样的,B.php用curl取得C链接,怎么在B页面跳转链接打开C链接:header("Location: C链接");要让C链接页面不能判断到来路。 求aphache配置本地localhost任意二级域名的方法。 求高手,pop3收信 圖片解碼出錯 为什么不能动态显示图片?达人请进 使用xajax遇到的问题,请高手解答 应聘PHP程序员时如何应对??? 再请教一个小问题---phplib的安装(配两天没弄出来,惭愧) 关于执行sql存储过程出现的现象一问 各位朋友,使用header()有什么要注意的啊? 哪位兄弟有PHP无数据库留言薄? JAVA DES加密 与php兼容问题。 关于表单输入框的问题 iframe刷新子页面问题
倒是有种思路你可以考虑下:B.php不做跳转,而是用socket模拟浏览器,读取C.php的内容,再展示给客户,这样,你就可以自由设定“来路”了。
echo "<script>window.location.href='C.php';</script>";试试看。
这个也不行的,这样还是检查到来路是B.php了。
<?php
header("Content-Type: text/html; charset=GB2312");
echo "<a href='B.php' target='_blank'>B.php</a><br />";
?>B.php:
<?php
header("Content-Type: text/html; charset=GB2312");
//PRINT_R($_SERVER);//当前页的url地址,设置为cookie中
$nowurl='http://'.$_SERVER['SERVER_ADDR'].$_SERVER['PHP_SELF'];//设置cookie中,记录当前页的地址,当跳转到其他可以用这个$_cookie['referer']取来源地址,然后赋给$_SERVER["HTTP_REFERER"]或直接输出$_cookie['referer'],就可以得到来源页的url
setcookie('referer',$nowurl);header("Location: C.php");
?>
C.php:<?php
header("Content-Type: text/html; charset=GB2312");//print_r($_COOKIE);
//cookie中设置了来源字段
if(isset($_COOKIE['referer'])){
$_SERVER["HTTP_REFERER"]=$_COOKIE['referer'];setcookie('referer','',time()-3600);//清除来源cookie
}else $_SERVER["HTTP_REFERER"]='';//不存在来源,设置为空
echo '来源url:'.$_SERVER["HTTP_REFERER"]; ?>
B.php
<?php
header("Content-Type: text/html; charset=GB2312");header("Location: C.php?a=".$_SERVER["HTTP_REFERER"]);
?>
C.php
<?php
header("Content-Type: text/html; charset=GB2312");
echo $_GET['a'];
?>
这样可以么?
<script>
function aaa(){
location.href="c.html";
}
</script>
是这样的,B.php用curl取得C链接,怎么在B页面跳转链接打开C链接:header("Location: C链接");要让C链接页面不能判断到来路。