2012-12-17 80 views
1

我想創建一個鏈接,改變一個PHP $_GET變量。例如:更改PHP獲取鏈接?

URL: http://site.com/index&variable=hello&anothervariable=dontchangeme 

<a href="variable=world">Click me</a> 

(after click) 

URL: http://site.com/index&variable=world&anothervariable=dontchangeme 

我知道你可以做到這一點,只是更改頁面(href="1.html"),但我想這樣做同樣的事情,同時保持已經存在的GET變量。

+0

使用window.location並添加必需的字段。我認爲它最好在Javascipt上完成。 –

+0

Duplicate:http://stackoverflow.com/questions/5809774/manipulate-a-url-string-by-adding-get-parameters – Jelmer

+0

您可能需要在.htaccess文件中編寫一些重寫規則 – BnW

回答

7
$query = array('variable' => 'world') + $_GET; 

printf('<a href="index?%s">Click me</a>', http_build_query($query)); 

參見http://php.net/http_build_query。這是易於理解的最小版本。正確,您還需要HTML轉義生成的查詢字符串(因爲你把它變成HTML):

printf('<a href="index?%s">Click me</a>', htmlspecialchars(http_build_query($query))); 
+0

這似乎很有趣,如果你解釋上面的代碼,它會很好:) –

+0

如果你閱讀文檔並且稍微玩一下,這是不言自明的。您將現有的$ _GET數組和您的新值合併,然後從它們構建查詢字符串並將它們放入鏈接中。 – deceze

1

可以簡單地將用戶重定向改變可變值,並使用header() ..

if(isset($_GET['variable'] && $_GET['variable'] == 'hello') { 
    header('Location: http://site.com/index&variable=world'); 
    exit; 
} 
0

在URL的變量或參數之前包含一個?,然後將它們通過&分離。

要得到什麼,你只想要使用此鏈接:

<a href="http://site.com/index?variable=world&anothervariable=dontchangeme">Click me</a> 

但這是硬編碼,並可以更改參數的值的意義不是動態的動態,所以我的答案可能不是最好的。

+0

我澄清了我的答案,我想鏈接到帶有GET變量的URL,而不更改URL中已有的其他變量 – tkbx

+0

但是,這仍然會排除URL中已有的其他變量,對吧? – tkbx

+0

是的,對不起,我剛剛閱讀了最新的問題。我的回答不是你需要的,我很抱歉!我會更新,但它可能不會像欺騙的回答 – martincarlin87

0

這應該這樣做。

<a href="variable=world <?php foreach ($_GET as $key => $value) {echo '&&'.$key.'='.$value}">Click me</a>