如何检查是否有任何变量通过URL传递?

时间:2012-07-29 10:38:06

标签: php

我想将变量(foo=bar)传递给URL 如果网址已有变量,则foo应附加到包含&foo=bar的当前网址。 但是,如果地址栏没有任何变量,那么当前网址应附加?foo=bar

那么如何检查当前URL中是否存在任何变量?

3 个答案:

答案 0 :(得分:0)

URL中传递的变量称为GET参数。您可以使用$_GET数组使用PHP检索它们。

给定网址 - http://mycoolsite.com?foo=bar&stack=overflow

print_r()上执行$_GET会给你 -

Array ( 
  [foo] => bar 
  [stack] => overflow 
)

拥有此数组后,您可以使用in_array()函数测试某个变量的存在。

if (in_array('foo',$_GET)){
  // the foo variable is was passed
}

或者,您可以简单地遍历您传递的所有参数,然后以这种方式进行检查 -

foreach($_GET AS $key=>$value){
  // $key = the name of the variable
  // $value = the value of the variable
}

资源

答案 1 :(得分:0)

我想你想把var = foo和stack = overflow变量传递给当前的URL。换句话说,您希望将用户重定向到当前地址+新变量。你可以试试这个:

$url = 'http'.(empty($_SERVER['HTTPS'])?'':'s').'://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
if(strpos("?", $url) !== FALSE){
    $url .= "&var=foo&stack=overflow";
}else{
    $url .= "?var=foo&stack=overflow";
}

header("Location: ".$url);
exit();

获取当前网址,检查其中是否已有?。如果是,则附加var&使用&进行堆叠,否则使用?&进行堆叠。

答案 2 :(得分:0)

正确的方法是:

$url = 'http'.(empty($_SERVER['HTTPS'])?'':'s').'://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
    if(strpos($url, "?") !== FALSE){
            $url .= "&var=foo&stack=overflow"; 
}else{

 $url .= "?var=foo&stack=overflow"; 
}

header("Location: ".$url); 
exit();

strpos reverse order;) 这是一个例子:

$mystring = 'abc'; 
$findme   = 'a'; 
$pos = strpos($mystring, $findme);