作为一个新手和初学者php学习者,我使用Code-Canyon 高级URL Shortner脚本,并做了2天的研究。很遗憾,我无法解决我的问题。
url缩短脚本是url编码的API url,它发送到脚本,在这样做是用&
代替&
符号导致url不能正确工作在最终的目标页面。
我试过使用preg_replace
, str_replace
,也试过在目标页面上使用urldecode
,但这些似乎都不起作用。下面是我当前的脚本:
$makeshort = "http://mywebsite.com/email/quote.php?quoteid=$visitor&customertype=fhbs";
$mkshrt = str_replace("/&/","%26",$makeshort);
$short = "http://shorturl.com/api?&api=REMOVED&format=text&url=".urlencode($mkshrt);
// Using Plain Text Response
$api_url = $short;
$res= @file_get_contents($api_url);
if($res)
$shorturl = $res;
$shorty = json_decode($shorturl);
$shorturl = $shorty->{'short'};
echo $shorturl;
注意:在api url中看到
&format=text
的地方,我试图使用它与&format=text
一起使用,但这没有什么区别。
我希望有一个简单而快速的方法来解决这个问题,因为我只传递了2个变量,它的第二个变量是这样显示的:
mywebsite.com/email/quote.php?quoteid=01234567890&customertype=fhbs
所以customertype变量是由于amp;
符号而弄乱的。
我真诚地希望有专业人士能告诉我最好的方法,甚至是一个简单的方法来解决这个问题,因为我真的束手无策!我的知识不足以研究准确的关键短语,以便为自己指明正确的方向。
感谢您花时间阅读这篇文章,我希望有人能好心地帮助我。
我知道这种感觉,因为我自己刚刚开始适应编码和开发。
我个人会通过两种方式之一来解决这个问题,如果你已经尝试过使用htmlspecialchars或htmlentities以及urldecode,那么实现这一点的最简单和最快的方法是读取URL字符串,然后使用str_replace将&
符号替换为&
,并对页面进行元刷新或'标头位置重定向
这是我的意思与一个简短的例子,但必须强调,一些额外的安全可能需要,这只是一个快速修复,而不是一个安全的稳定和永久的修复,虽然一个人可以玩这个,也许工作出一些自己的情况。
$url = "http://". $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if(strstr($url, "&")){
$url = "http://". $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
$url = str_replace('&', '&', $url);
echo "<meta http-equiv='refresh' content='0;URL=$url'>";
exit;
}
标题位置的替代方法:
$url = "http://". $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if(strstr($url, "&")){
$url = "http://". $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
$url = str_replace('&', '&', $url);
header("Location: $url");
exit();
}
这将完全从url中删除任何&
符号并将其替换为&
。你也可以用这个来从url字符串中删除更多的内容,并替换像/
或禁用词这样的内容。
输出的示例如下:
导致问题的原始url:
http://mywebsite.com/email/quote.php?quoteid=1234567890 &
customertype=fhbs
脚本执行并刷新页面后的新url:
http://mywebsite.com/email/quote.php?quoteid=1234567890& customertype = fhbs
正如你从上面的超链接文本中看到的,&号打破了字符串,之后的一切都不能正确读取,但是当这个脚本执行并刷新页面时,url将像第二个超链接一样,从而使url为你所需要的工作。
注意:这不是一种安全的做事方式,可能不适合你的情况,这只是一个想法,希望能有所帮助!谢谢。