2012-08-07 32 views
1

我有一個關於PHP格式化URL參數問題PHP:URL參數

第1頁能有這兩個網址

http://somewhere.com/page1.php?foo=1 
and 
http://somewhere.com/page1.php 
現在

第1頁上,當我點擊一個按鈕,我希望它重定向到它自己,但在URL中的附加參數像這樣

http://somewhere.com/page1.php?foo=1&bar=2 
or 
http://somewhere.com/page1.php?bar=2 

取決於當前的網址。我怎樣才能做到這一點在PHP?

感謝, Vidhu

+0

看一下print_r($ _ SERVER)的輸出; – Cups 2012-08-07 14:55:11

回答

1

首先,檢查是否在一定$_GET參數被設置時,使用isset
如果是,echo確定鏈接。如果沒有,echo有不同的鏈接。

if(!isset($_GET['bar'])){ 
    echo '<a href="?bar=2">link</a>'; 
} 
else{ 
    echo '<a href="page1.php">link</a>'; 
} 
0

下面的表格將提交相同的URL與參數添加。

<form action="<?php echo "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; ?>" method="get"> 
    <?php 
     // Iterate through our query string and add each key value pair as a hidden input 
     foreach ($_GET as $key => $value) 
     { 
      ?> 
       <input type="hidden" name="<?php echo $key; ?>" value="<?php echo $value; ?>"/> 
      <?php 
     } 
    ?> 

    <!-- new parameter to add --> 
    <input type="hidden" name="foo" value="1"/> 
    <input type="submit"/> 
</form> 
0

你可以做一個簡單的GET系統,所以,你需要檢查是否?foo=1設置,如果它是你可以呼應其內容。如果您想要顯示bar=2的內容,請檢查它的設置並回顯其內容。儘管如此,這只是一種簡單的方法。

0

只要你可以用$_SERVER['PHP_SELF']

做例如

<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="get"> 
    <input type="hidden" name="foo" value="1"/> 
    <input type="submit"/> 
</form> 

這裏htmlentities()用來避免PHP_SELF開發;爲安全起見

如果你想避免隱藏的輸入字段,你可以附加查詢參數,如action="<?php echo $_SERVER['PHP_SELF']; ?>?foo=1&bar=2"

+1

我認爲這也會起作用,但是當您提交表單時,操作中的查詢字符串將被刪除。 – Samuel 2012-08-07 15:09:52

+0

@Samuel Ya,它的真實性,它被取代。謝謝指出。 – 2012-08-07 15:27:33

0

我使用這些PHP函數來幫助我建立正確的網址:

  • parse_str()
  • parse_url()
  • http_build_query()
  • http-build-url()

例子:

<?php 

function add_parameters($parameters) { 
    parse_str($_SERVER['QUERY_STRING'], $old_parameters_as_array); 
    return $_SERVER['PHP_SELF'].'?'.http_build_query(array_merge($old_parameters_as_array, $parameters)); 
} 

echo '<a href="'.add_parameters(array('bar' => 2)).'">Link</a>';