2011-09-05 110 views
0

我想找出如果該URL的末尾,例如,?vote比較字符串基名

使用basename($_SERVER['REQUEST_URI']).PHP_EOL,我以爲我可以用'?vote'字符串比較這一點,但它不工作。

$url = basename($_SERVER['REQUEST_URI']).PHP_EOL; 
if (strcasecmp($url, "?vote") == 0) 
    { 
    echo "they match"; 
    } 
    else 
    { 
    echo "they DO NOT match"; 
    } 
+1

爲什麼不簡單'isset($ _ GET ['vote'])'? – deceze

+0

問題是,url可能以「?death = 123&vote = 1&banana = alone」結尾,它仍然會匹配... –

+0

@Robert當然,但您需要一個非常好的理由來關心這種差異。 :) – deceze

回答

1

如何

if ($_SERVER['QUERY_STRING'] == 'vote') 
{ 
    echo "they match"; 
} 
else 
{ 
    echo "they DO NOT match"; 
} 
1

訪問您?vote,我們稱之爲查詢字符串,並用PHP你可以訪問它像這樣$_SERVER['QUERY_STRING']。所以你不需要使用基本名稱。

1
if(isset($_GET['vote'])) 
........................... 
0

爲了弄清楚如果vote查詢參數設置,使用方法:

isset($_GET['vote']) 

如果你真的關心到來之後?參數的位置(你不應該),匹配值爲$_SERVER['QUERY_STRING']。具體取決於vote是否應該有值,以及是否允許其他參數。 URL是被定義的,所以查詢中參數的順序對你來說確實不應該有任何改變。

+0

'votes'將匹配 – ajreal

+0

這是真的。 :)你可以做一些'preg_match'來避免這種情況。或者,如果'vote'是允許的* only *參數,則可以將問題簡化爲許多簡單的解決方案。但是真的,除非你有充分的理由關心查詢字符串中參數的*位置(我真的想不出任何),'$ _GET ['vote']'是無論如何。 – deceze

+0

刪除了可能脆弱的代碼。 :) – deceze