PHP Если оператор всегда срабатывает как истинный

Прежде всего, я знаю, что это уже было задано в миллион раз, но ни один из ответов, которые я нашел, похоже, не работает. У меня есть следующая инструкция if на моей странице «Header.php»:

<?php $currentpage = $_SERVER['REQUEST_URI']; echo($currentpage); if($currentpage == "/recap-2013.php" || "/index.php" ) { ?> <script src=... a bunch of HTML <?php } ?> 

Идея состоит в том, чтобы вставить некоторую JS, если $ currentpage равна либо recap-2013.php, либо index.php, а если нет, ничего не делать.

Я добавил echo($currentpage) чтобы проверить, что такое REQUEST_URI .

Проблема в том, что даже если URI запроса является /someotherpage.php, оператор оценивается как истинный, а JS появляется в моем теге заголовка. Я уверен, что это что-то маленькое, что мне не хватает, но я не могу понять, что.

Заранее благодарю за любую помощь!

Неправильная логика оператора if. Что вы на самом деле имеете в виду:

 if($currentpage == "/recap-2013.php" || $currentpage == "/index.php" ) { ?> 

В вашей текущей логике второе выражение всегда будет истинным, потому что PHP не будет печатать строку, которая будет оцениваться как логическая, и непустая строка всегда верна.

Он всегда будет ОГРОМНЫМ как истинный. Зачем? как вы можете видеть, независимо от того, какой результат первого условия он будет ЧУВСТВИТЕЛЬНО И ВСЕГДА будет правдивым на втором …

Хорошо, давайте посмотрим …

 if($currentpage == "/recap-2013.php" || "/index.php" ) 

Таким образом, первое условие:

 if($currentpage == "/recap-2013.php") 

Предположим, что результат этого будет ЛОЖНЫ .

Итак, перейдем ко второму условию:

 if("/index.php") 

ОДНОВРЕМЕННО И ВСЕГДА ИСТИННО!

Зачем? Поскольку в условных операторах только FALSE (bool), 0, NULL, пустая строка и т. Д. Считаются ложными. В вашей ситуации «/index.php» не является пустой строкой или не является NULL , поэтому всегда будет TRUE .

Как я понял о ваших условиях, вы пытаетесь понять:

 if($currentpage == "/recap-2013.php" || $currentpage == "/index.php" ) 

ПРИМЕЧАНИЕ. Всегда будьте осторожны с условными утверждениями, это всегда очень много программистов.