我有使用GET的搜索功能,就像我搜索“Apple”一样,它会重定向到这个特定的URL: /search.php?search=Apple
。
现在,如果我在购物车中添加此产品,它将转到addtocart.php文件&应该重定向到当前页面。在addtocart.php文件中,我的代码是这样的,如果一切顺利,它应该转到URL: $page?message=Product has been added to your cart
。现在问题是两个'?'在URL中,它不会在第一个地方显示消息&不显示包含搜索结果的页面。
为了找到当前页面的URL,我有这段代码。
$page = $_SERVER["REQUEST_URI"];
$page=(stristr($page,"/"));
$_SESSION['page'] = $page;
在addtocart.php文件中,我在购物车中添加产品后,将$ page重定向到同一页面。 所以我有这个重定向代码:
header ("Location: $page?message=Product added to your cart");
因此,重定向到的最终网址最终为:search.php?search=apple?message=Product added to your cart
。并且它实际上没有通过参数&因此无法进行搜索。我错过了什么,你可以帮忙吗?
答案 0 :(得分:1)
传递第二个参数时,您需要使用&
而不是第二个?
。
标题路径将是:
header ("Location: $page&message=Product added to your cart");
如果您可能有一些不包含初始值的路径,您可以检查是否存在?
,然后更改附加字符。
E.g。
<?php if(preg_match('/\?/', $_SERVER['REQUEST_URI'])) { $page .= '&'; }
else{ $page .= '?'; }
$page .= "message=Product added to your cart";
header ("Location: $page");
?>
答案 1 :(得分:0)
试试这个
header ("Location: $page&message=Product added to your cart");
答案 2 :(得分:0)
$delimiter = parse_url($url, PHP_URL_QUERY) ? '&' : '?';
header("Location: {$page}{$delimiter}message=$message");
此外,您可以使用strrpos($url, '?') !== false
代替parse_url($url, PHP_URL_QUERY) === ''
。