我遇到了一个我无法解决的奇怪问题,有人可以提出解决方案吗?提前谢谢你:)
我想将一个完整的url传递给脚本,脚本会检查网址并进行元刷新以重定向到它,所以假设我的脚本是 goto.php ,我希望它重定向到:
http://www.google.com/?name=david¶m=gender
所以我在浏览器中输入:
www.mydomain.com/goto.php?u=http%3A%2F%2Fwww.google.com%2F%3Fname%3Ddavid%26param%3Dgender
但是我的goto.php脚本得到了:
http://www.google.com/?name=david¶m=gender
正如你所看到的,“&”错过了,这是我的goto.php的代码:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>checking</title>
<meta name="robots" content="noindex,nofollow" />
</head>
<body>
<?php echo $_GET ['u'];?>
</body>
</html>
虽然如果我添加
<meta http-equiv="refresh" content="0;url=<?php echo $_GET ['u'];?>" />
它适用于某些浏览器,但在其他浏览器中,它不起作用,因为$ _GET ['u']没有返回有效的URL。
再次感谢您的任何建议。
答案 0 :(得分:0)
请更改
行<?php echo $_GET['u']; ?>
到以下行
<?php echo urldecode($_GET['u']); ?>
答案 1 :(得分:0)
看起来您遇到charset编码/解码问题。什么是你的&#34; php -i&#34;?
的输出修改强>
我刚试了一次,你的脚本很好。问题是您的网址未针对HTML进行转义。如果您查看页面的来源,那么您会发现一切都很好。
在输出到HTML之前,您必须转义所有&符号(&amp;)。使用htmlspecialchars()或htmlentities()。
http://php.net/manual/en/function.htmlspecialchars.php
<?php echo htmlspecialchars($_GET['u']); ?>