目标: 当URL等于“enhanced.php”时,尝试将翻转按钮状态保持为“ON”。
问题: 当URL等于“enhanced.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>
当前网址为“enhanced.php”时,任何人都会看到为什么按钮状态不会保持“ON”的原因。 TIA
答案 0 :(得分:12)
strpos
在成功时返回int,在失败时返回FALSE。
将if($pos === true)
更改为if($pos !== false)
。
===
运算符会比较值和类型。因此,成功strpos
返回一个int,它可能具有与TRUE相同的值,但它的类型不同。
$enhancedstate = OFF
至$enhancedstate = 'OFF'
PHP非常宽容,并允许你使用未引用的字符串,但你应该尽量不要,除非ON和OFF实际上是常量。
答案 1 :(得分:1)
strpos()
永远不会返回bool(true)
作为值。它可以是bool(false)
或int
。
因此,通过执行以下操作:
if($pos === true)
您基本上在寻找永远不会发生的bool(true)
值(===
检查类型和值)。
将其更改为:
if($pos !== false)
请勿使用$pos == true
,因为如果字符串以enhanced.php
开头,则会失败。
答案 2 :(得分:0)
你的字符串需要引号。没有它们,“ON”被视为常数。
$enhancedstate = 'ON';
答案 3 :(得分:0)
$ enhancedstate = stripos($ _ SERVER ['PHP_SELF'],'enhanced.php')!== false? '开':'关';
我从未使用过script_name,但试试这个,看它是否有效。
答案 4 :(得分:0)