-1

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

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

3 回答 3

1

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

其次,你的if条款的条件也是错误的。从功能手册stripos()

返回针相对于 haystack 字符串开头的位置(与偏移量无关)。另请注意,字符串位置从 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';
}
于 2016-04-30T20:04:16.780 回答
0
if(stripos($_SERVER['REQUEST_URI'], 'user.php') || stripos($_SERVER['REQUEST_URI'], 'message.php')) {
echo 'hello';
}

注意 || 之后的子句中的 stripos 函数。

于 2016-04-30T19:50:08.050 回答
0

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

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

if (
    (stripos($_SERVER['REQUEST_URI'], 'user.php')) ||
    (stripos($_SERVER['REQUEST_URI'], 'message.php')) 
) {
  echo 'hello';
}
于 2016-04-30T19:56:02.007 回答