2016-04-30 6 views

ответ

0
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

Вы должны объяснить свой ответ, а не просто дать блок кода. – Machavity

1

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

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

Возвращает позицию, где игла существует по отношению к beginnning строки стога (независимо от смещения). Также обратите внимание, что позиции строк начинаются с 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'; 
} 
Смежные вопросы