2011-09-05 88 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