Или оператор не отображает контент

Я пытаюсь получить что-то, что будет отражено, если пользователь находится на одной из двух страниц, но это не отражается

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

-1

Решение

Прежде всего, $_SERVER['REQUEST_URI'] даст вам URI, который был дан для доступа к этой странице, а не фактическое имя страницы. использование basename($_SERVER['PHP_SELF']) чтобы получить реальное имя страницы.

И во-вторых, состояние вашего if предложение тоже неверно. От руководство по stripos() функция:

Возвращает позицию, в которой находится игла, относительно начала строки стога сена (независимо от смещения). Также обратите внимание, что строковые позиции начинаются с 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

Другие решения

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

Обратите внимание на функцию stripos в предложении после ||.

0

Оберните каждый условный аргумент в отдельный блок с круглыми скобками. Каждая функция, добавленная к условию, должна содержать 2 скобки.

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

if (
(stripos($_SERVER['REQUEST_URI'], 'user.php')) ||
(stripos($_SERVER['REQUEST_URI'], 'message.php'))
) {
echo 'hello';
}
0
По вопросам рекламы [email protected]