簡體   English   中英

PHP:在file.php之后使用?…

[英]PHP: Using ?… after file.php

我有這個:

pm.php?v=unread

現在處於未讀狀態,您也可以通過按“消息”或“邀請”來進行過濾,鏈接如下所示:

<a href="?f=msgs">Msgs</a> | <a href="?f=invites">Inv.</a>

如果您在pm.php?v=unread,內部pm.php?v=unread,然后按Msgs,則結果將顯示為pm.php?f=msgs 我希望它是pm.php?v=unread&f=msgs

我怎樣才能做到這一點?

如果要維護所有 $ _GET變量並向鏈接添加其他變量,請考慮array_merge()http_build_query()

$gets=array_merge($_GET,array('f'=>'msgs'));//returns array with your new values overriding any old values
$getstring=http_build_query($gets);
$link="<a href="?$getstring>Msgs</a>";
<a href="?<?=($_GET['v']=="unread"?'v=unread&':'')?>f=msgs">Msgs</a>

要么

<a href="?<?=($_GET['v']?'v='.$_GET['v'].'&':'')?>f=msgs">Msgs</a>
<a href="pm.php?f=msgs&v=<?php echo $_REQUEST['v']; ?>">Msgs</a>

您必須找出所有的get變量並將它們添加到URL中。 例如,您可以在pm.php中執行以下操作:

$params = ((isset($_GET['v'])?'v=' . $_GET['v']:'');
$params .= //do the same for all your expected variables

在頁面中,您將執行以下操作:

<a href="?f=msgs&<?php echo $params; ?">Msgs</a> | <a href="?f=invites&<?echo $params; ?>">Inv.</a>

這顯然很短而且很臟。 假設您將始終具有params等。

這是一個有趣的問題。 因為如果您沒有使用任何$ _GET值並單擊消息怎么辦? 然后它會去pm.php&f = msgs現在這是我的解決方案:)

function appendURL($name, $value) 
{ 
    // if we have a variable holding the '?' position
    if(strpos($_SERVER['REQUEST_URI'], '?')) 
    { 
        // append the value in the & position
        return $_SERVER['REQUEST_URI'] . "&$name=$value"; 

    } 
    // otherwise, append it in the ? position
    return $_SERVER['REQUEST_URI'] . "?$name=$value";
}

現在你的情況

<a href="<?=appendURL('f', 'msgs')?>">Messages</a>

好一陣子沒做過,所以如果有什么小問題,請不要把我釘在十字架上! :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM