使用 PHP 更改 HTML 元素的 css 类时出错


Error changing HTML element's css class using PHP

我在没有任何GET参数的情况下加载页面时出现错误(例如:/login.php),这是我得到的错误:

 ( ! ) Notice: Undefined index: err in          C:'wamp'www'GestionImagesPublicitesAvis'login.php on line 57
    Call Stack
    #   Time    Memory  Function    Location
     1  0.0005  144120  {main}( )   ..'login.php:0

这是从第 41 行到第 58 行的代码片段:

    <input class=
            <?php if(!empty($err))
                {
                    if($err == "up")
                    {
                        echo "'"InputError'"";
                    }
                    else
                    {
                        echo "'" '"";
                    }
                }
                else
                {
                    echo "'" '"";
                } ?> 
            type="text" name="username" onclick="this.value='';" onblur="this.value=!this.value?'login...':this.value;" value=<?php if (($_GET['err'] == 'up')&& (isset($_GET['u']))){echo ("'"" . $_GET['u'] . "'"");}else{ echo "'"login...'"";} ?> id="username"/>
            <input class=<?php if($err=="up"){echo "'"InputError'"";}else{echo "'"'"";}?> type="password" name="password" onclick="this.value='';" onblur="this.value=!this.value?'motdepasse':this.value;" value="motdepasse" id="password"/>

$err在页面前面(第 15 行)中定义:"'

<?php 
            $err;
                if (isset($_GET['err']))
                {
                    switch ($_GET['err'])
                    {
                    case "up":
                        $err = "up";
                        echo "<p>Error #156</p>";
                        break;
                    }
                }
                else
                {
                    $err=null;
                    echo "<p>Error #157</p>";
                }
            ?>

在页面顶部(第二个代码示例),您只确保设置了$err而不是$_GET['err']。但是,稍后在第 57 行(第一个代码示例)中,您再次只使用 $_GET['err']

如果在初始化代码后引用代码中的$err,则应修复错误。

所以你的第 57 行应该类似于这样:

type = "text" name="username" onclick="this.value='';" onblur="this.value=!this.value?'login...':this.value;" value=<?php if (($err == 'up')&& (isset($_GET['u']))){echo ("'"" . $_GET['u'] . "'"");}else{ echo "'"login...'"";} ?> id="username"/>

你的问题在这里:

value=<?php if (($_GET['err'] == 'up')

你应该做

value=<?php if ((@$_GET['err'] == 'up')

value=<?php if ((isset($_GET['err']) && $_GET['err'] == 'up')

更改您的error_logging,因为如果 url 中没有 err,则 $_GET['err'] 将抛出通知。

error_reporting(E_ALL ^ E_NOTICE); 或在 php 内部.ini