2012-07-29 108 views
-3

我想將一個變量(foo=bar)傳遞給URL。
如果URL已經有一個變量,那麼foo應附加到當前的URL &foo=bar
但是,如果地址欄不具有任何變量,那麼當前的網址應該以?foo=bar如何檢查是否有任何變量通過URL傳遞?

被追加所以,我怎麼可以檢查任何變量是否存在於當前URL或不?

+1

你可以列出你的問題,也許提供了你在做什麼的例子,什麼是失敗?現在很難理解。 – DCoder 2012-07-29 10:49:26

回答

0

在URL中傳遞的變量稱爲GET參數。您可以使用$_GET陣列通過PHP檢索它們。

給出的URL - 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 
} 

資源

+0

但我不知道哪個變量通過了 – Divya 2012-07-29 10:40:38

+0

@div - 檢查我的更新。您可以使用'in_array()'函數... – Lix 2012-07-29 10:43:55

+2

@Lix:考慮到提及'?'和'&'的問題,它可能會將附加參數*傳遞到正在構建的URL中。 'echo $ my_base_url。 '?foo ='。如果$ my_base_url已經包含查詢字符串,則urlencode($ bar)'將不正確。 – DCoder 2012-07-29 10:48:13

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(); 

它得到當前的URL,檢查是否已經在它?。如果是,則它將var &堆棧附加到&,否則相應地?&

+1

我喜歡你選擇的變量;) – Lix 2012-07-29 11:46:49

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相反的順序;) 這是一個例子:

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