PHP, если / иначе переключатель не работает - PullRequest
2 голосов
/ 30 сентября 2010

Цель: Попытка получить состояние кнопки прокрутки, чтобы оно оставалось "ВКЛ", когда URL-адрес равен "extended.php".

Проблема: Состояние кнопки не остается "включенным", когда URL-адрес равен "extended.php",

(кнопка правильно работает как ролловер)


sidemenu.php sidemenu.php используется как PHP-включение для всех страниц (я не знаю, имеет ли это значение

<?php

$script = $_SERVER['SCRIPT_NAME'];


//Set the default state to OFF and only turn ON if we are on the current URL.

$enhancedstate = OFF;


$pos = strpos($script, "enhanced.php");
if($pos === true) {
$enhancedstate = ON;
}


?>


 <div class="sideMenu">   

   <a href="enhanced.php" 
      onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image1','','/images/Button_ON_01.gif',1)">
      <img src="/images/Button_<? echo $enhancedstate; ?>_01.gif" name="Image1" border="0">
   </a>

Кто-нибудь видит любую причину, по которой состояние кнопки не остается включенным, если текущий URL-адрес - "extended.php". TIA

Ответы [ 5 ]

12 голосов
/ 30 сентября 2010

strpos возвращает int при успехе и FALSE при ошибке.

Изменить if($pos === true) на if($pos !== false).

Оператор === сравниваетзначения и типы.Таким образом, в случае успеха strpos возвращает значение типа int, которое может иметь то же значение, что и TRUE, но это не тот же тип.

РЕДАКТИРОВАТЬ: Как уже говорили другие, вы должны изменить:

$enhancedstate = OFF до $enhancedstate = 'OFF'

PHP очень простителен и позволяет вам использовать строки без кавычек, но вы должны стараться этого не делать, если только ON и OFF не являются константами.

1 голос
/ 30 сентября 2010

strpos() никогда не возвращает bool(true) в качестве значения.Это либо bool(false), либо int.

Итак, выполнив следующее:

if($pos === true)

В основном вы ищете значение bool(true), которое никогда не произойдет (=== проверяет тип и значение).

Измените его на:

if($pos !== false)

Не используйте $pos == true, так как это не удастся, если строка начинается с enhanced.php.

0 голосов
/ 30 сентября 2010

Используйте вместо теста

if ($pos !== false) {

.См. Пример № 2 (Использование! ==) на странице справки для strpos.

0 голосов
/ 30 сентября 2010

$ extendstate = stripos ($ _ SERVER ['PHP_SELF'], 'extended.php')! == false? 'ON': 'OFF';

Я никогда не использовал script_name, но попробуйте это и посмотрите, работает ли он.

0 голосов
/ 30 сентября 2010

Вам нужны кавычки вокруг ваших строк.Без них «ON» рассматривается как константа.

$enhancedstate = 'ON';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...