如果用户在两个页面之一上,我试图让某些东西得到回显,但它没有被回显
if(stripos($_SERVER['REQUEST_URI'], 'user.php') || ($_SERVER['REQUEST_URI'], 'message.php')) {
echo 'hello';
}
首先,$_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';
}
if(stripos($_SERVER['REQUEST_URI'], 'user.php') || stripos($_SERVER['REQUEST_URI'], 'message.php')) {
echo 'hello';
}
注意 || 之后的子句中的 stripos 函数。
用括号将每个条件参数包装在其自己的块中。添加到条件的每个函数都必须包含 2 个括号。
IF ( ($a == $x) or ($b == $y) ) {}
if (
(stripos($_SERVER['REQUEST_URI'], 'user.php')) ||
(stripos($_SERVER['REQUEST_URI'], 'message.php'))
) {
echo 'hello';
}