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


How to check whether any variable is passed through URL or not?

我想将一个变量(foo=bar(传递给URL。
如果 URL 已经有一个变量,则应将foo附加到当前 URL 中,并带有 &foo=bar
但是,如果地址栏没有任何变量,则应在当前 URL 后附加 ?foo=bar

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

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

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

$_GET做一个print_r()会给你——

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
}

资源

  • $_GET - http://php.net/manual/en/reserved.variables.get.php
  • in_array() - http://php.net/manual/en/function.in-array.php

我想你想将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();

它获取当前 URL,检查其中是否已包含?。如果是,它会在 var & stack 后附加一个&,否则附加一个?并相应地&

正确的方法是:

$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 颠倒顺序;)这是一个示例:

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