传递URL中的参数以及上一个参数

时间:2014-01-25 07:12:35

标签: php redirect

我有使用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。并且它实际上没有通过参数&因此无法进行搜索。我错过了什么,你可以帮忙吗?

3 个答案:

答案 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) === ''