0

MYSQLを使用してデータベースに保存する簡単なログインフォームを作成しています。チュートリアルを使用しましたが、最後にテストしたときにエラーが発生しました。

'Notice: Undefined index: login in C:\wamp\www\database_test\login.php on line 7'

これが何を意味するのかわからず、インターネットを検索した後でもそれを理解することはできません。これが私のコードです。助けてください。ありがとう!

 <?php

     session_name('MyLogin');
     session_start();
     session_destroy();

     if ($_GET['login'] == "failed") {    //<------This is line 7//
         print $_GET['cause'];
     }

 ?>
 <html>
     <body>
         <form name='login_form' method='post' action='log.php?action=login'>
             Login: <input type='text' name='user'><br />
             Password: <input type='password' name='pwd'><br />
             <input type='submit'>
         </form>
     </body>
 </html>

私は基本的にこれをチュートリアルからコピーしました

http://www.howtodothings.com/computers-internet/how-to-make-a-login-system-for-your-website

4

3 に答える 3

2

この通知は、配列に存在しない要素にアクセスしようとしたときに発生します。そうかどうかを確認するには-を使用しますisset()

if (isset($_GET['login']) && $_GET['login'] == "failed") {
于 2012-01-02T05:26:50.287 に答える
2

ディラン、RTMを強くお勧めします。未定義のインデックスエラーを理解していない場合は、まだコードの記述を開始することはお勧めできません。

これは、7行目(エラー状態など)のでスローされ$_GET['login']ます。は配列loginにキーが見つからないため、このエラーがスローされました。$_GETしたがって、PHPは通知をスローします。isset()次のように、または!empty()チェックを追加してエラーを回避できます。

if (!empty($_GET['login']) && $_GET['login'] == "failed" )
于 2012-01-02T05:29:12.303 に答える
0

http:// localhost/yoursiteでコードを実行するとします。

ブラウザにこのようなアドレスを指定した場合。エラーは発生しません。$_GET['login']に値"failed"を割り当てたためです。

http://localhsot/yoursite/index.php?login=failed

ただし、アドレスに「login=failed」を指定しない場合

http://localhost/yoursite/index.php

$ _GET ['login']が設定されておらず、phpが$_GET配列で'login'インデックスを見つけることができない場合、エラーがスローされます:)

これに対する解決策は、値をチェックする前に$_GET['login']が設定されているかどうかをチェックすることです。

if ( !empty($_GET['login']) && $_GET['login'] == "failed" )

empty($_GET['login'])$_GET['login']が設定されていない場合はtrueを返します

于 2012-01-02T07:42:57.377 に答える