-2

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>";
                }
            ?>
4

3 に答える 3

1

ページの上部 (2 番目のコード例) では、$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"/>
于 2012-06-28T12:43:04.647 に答える
1

あなたの問題はここにあります:

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

やったほうがいい

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

また

value=<?php if ((isset($_GET['err']) && $_GET['err'] == 'up')
于 2012-06-28T12:44:16.830 に答える
-1

$_GET['err'] として error_logging を変更すると、err が URL にない場合に通知がスローされます。

error_reporting(E_ALL ^ E_NOTICE); またはphp.ini内

于 2012-06-28T12:45:31.740 に答える