2011-03-24 185 views
15

如何設置$_GET函數能夠使用的變量,而不用提交表單action = GET

+1

我知道這將是粗魯,但我忍不住:*你爲什麼想這樣做?* – fabrik 2011-03-24 05:44:08

+1

好問題。基本上我有頂級php文件中的鏈接,它包含在index.php中,但爲了知道要顯示哪個中間頁面,我需要獲取函數的變量。 – dave 2011-03-24 05:49:02

+0

哦,在這種情況下對我的誤解感到抱歉,我認爲你會想要篡改$ _GET作爲別的東西。 – fabrik 2011-03-24 05:51:08

回答

12

您可以創建一個鏈接,在href中獲取變量。

<a href="www.site.com/hello?getVar=value" >...</a> 
+0

但讓我說我怎麼做沒有鏈接? – dave 2011-03-24 05:45:34

+0

可能不是。 $ _GET可以使用網址數據或表單提交(action = GET)。 – Gaurav 2011-03-24 05:48:07

+0

kewl感謝您的幫助。 – dave 2011-03-24 05:49:56

3

您可以使用您form元素的action參數GET變量。例如:

<form method="post" action="script.php?foo=bar"> 
    <input name="quu" ... /> 
    ... 
</form> 

這會給你foo作爲GET變量,quu作爲一個POST變量。

0

$_GET變量由URL中設置的參數填充。從URL http://example.com/test.php?foo=bar&baz=buzz你可以得到$_GET['foo']$_GET['baz']。所以要設置這些變量,你只需要鏈接到該URL。

36

$_GET包含在URL中傳遞給腳本的鍵/值。

如果您有以下網址:

http://www.example.com/test.php?a=10&b=plop 

然後$_GET將包含:

array 
    'a' => string '10' (length=2) 
    'b' => string 'plop' (length=4) 


當然,作爲$_GET不是隻讀的,你也可以設置一些值從您的PHP代碼,如果需要:

$_GET['my_value'] = 'test'; 

但是這看起來並不是很好的做法,因爲$_GET應該包含來自客戶端請求的URL的數據。

+0

Thx,除了「不好的做法」是否有設置'$ _GET'的任何技術問題? (有時候PHP可能會如此令人驚訝......) – 2015-04-23 10:08:23

+0

最佳答案。不知道爲什麼另一個被標記爲有效。 – 2016-04-20 12:21:11

+0

您無法設置$ _GET – 2017-10-12 14:45:48

0

對於形式,使用方法:

<form name="form1" action="<?=$_SERVER['PHP_SELF'];?>" method="get"> 

和所獲得的價值,使用GET方法如下:

$value = $_GET['name_to_send_using_get']; 
+0

如果您要將表單提交到同一頁面,您可以將操作留空:'action =「」' – 2012-12-10 23:42:26

0

你可以使用下面的代碼到客戶端重定向到一個腳本連接了_GET變量。

header("Location: examplepage.php?var1=value&var2=value"); 
die(); 

這將導致腳本重定向,確保die();保持在那裏,或者他們可能無法重定向。

-2

我知道這是一個古老的線程,但我想我的後2美分...

使用JavaScript就可以做到這一點,而無需使用$ _ POST,從而避免重新加載頁面..

<script> 
function ButtonPressed() 
{ 
window.location='index.php?view=next'; //this will set $_GET['view']='next' 
} 
</script> 

<button type='button' onClick='ButtonPressed()'>Click me!</button> 

<?PHP 
if(isset($_GET['next'])) 
    { 
      echo "This will display after pressing the 'Click Me' button!"; 
    } 
?> 
1

如果要僞造一個$ _GET(或$ _ POST),包括一個文件時,你可以用它就像你使用任何其他的變種,像:

$_GET['key'] = 'any get value you want'; 
include('your_other_file.php'); 
0

的一種方式設置$_GET變量是使用parse_url() 解析URL,然後使用parse_str()解析$query字符串,該字符串將變量設置爲$_GET全局變量。

此方法非常有用,

  • ,如果你想測試GET參數處理而不進行實際查詢,例如用於測試傳入參數的存在和輸入過濾和消毒傳入變量。
  • ,當你不希望每次都手動構建陣列,但使用正常的URL

function setGetRequest($url) 
{ 
    $query = parse_url($url, PHP_URL_QUERY); 
    parse_str($query, $_GET); 
} 

$url = 'http://www.example.com/test.php?a=10&b=plop'; 

setGetRequest($url); 

var_dump($_GET); 

結果:$_GET包含

array (
    'a' => string '10' (length=2) 
    'b' => string 'plop' (length=4) 
) 
+0

非常好的答案..我個人喜歡它。 – 2018-02-25 10:21:45