或者操作员不显示内容

时间:2016-04-30 19:48:21

标签: php stripos

如果用户在两个页面中的一个页面上,我试图让某些东西得到回应,但它没有被回应

if(stripos($_SERVER['REQUEST_URI'], 'user.php') || ($_SERVER['REQUEST_URI'], 'message.php')) {
echo 'hello';
}

3 个答案:

答案 0 :(得分:1)

首先,$_SERVER['REQUEST_URI']将为您提供为访问此页面而提供的URI,而不是实际的页面名称。使用basename($_SERVER['PHP_SELF'])获取实际的页面名称。

第二,你的if条款的条件也是错误的。来自the manual of stripos() function

  

返回针相对于haystack字符串的beginnning存在的位置(与offset无关)。 另请注意,字符串位置从0开始,而不是1

     

如果未找到针,则返回FALSE。

因此,如果针与干草堆完全匹配,则两个条件都将失败。而是检查这样的条件:

if(stripos($haystack, $needle) !== false || stripos(stripos($haystack, $needle)) !== false) {
    echo 'hello';
}

所以解决方案是这样的:

if(stripos(basename($_SERVER['PHP_SELF']), 'user.php') !== false || stripos(basename($_SERVER['PHP_SELF']), 'message.php') !== false) {
    echo 'hello';
}

答案 1 :(得分:0)

if(stripos($_SERVER['REQUEST_URI'], 'user.php') || stripos($_SERVER['REQUEST_URI'], 'message.php')) {
echo 'hello';
}

注意||。

之后的子句中的stripos函数

答案 2 :(得分:0)

用括号将每个条件参数包装在自己的块中。添加到条件中的每个函数都必须包含2个括号。

IF ( ($a == $x) or ($b == $y) ) {}

if (
    (stripos($_SERVER['REQUEST_URI'], 'user.php')) ||
    (stripos($_SERVER['REQUEST_URI'], 'message.php')) 
) {
  echo 'hello';
}