2012-01-02 106 views
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

+3

「我基本上從一個教程複製這個」 ---作爲一個程序員的東西不僅僅是複製和粘貼,你知道...教程是由新手編寫的,這就是爲什麼你得到錯誤 – zerkms 2012-01-02 05:25:28

+0

所以,因爲你承認複製和粘貼我不會給你答案:)但我會給你一個提示,看看你的輸入名稱和$ _GET索引名稱​​。希望這將有助於 – Robert 2012-01-02 05:28:41

+1

我沒有複製和粘貼。 – 2012-01-02 05:29:09

回答

2

迪倫,我強烈建議你RTM。如果你不明白未定義的索引錯誤,那麼開始編寫代碼可能不是一個好主意。

這是在第7行(如錯誤狀態)在$_GET['login']處引發的。由於login不是$_GET陣列中的關鍵字,因此引發此錯誤。所以,PHP會拋出通知。您可以添加isset()!empty()檢查,以避免錯誤,像這樣的:

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

從教程複製這本通知情況,當你試圖訪問一個不存在的數組元素。要檢查它是否 - 使用isset()

if (isset($_GET['login']) && $_GET['login'] == "failed") { 
0

假設你在http://localhost/yoursite

如果給瀏覽器這樣的地址運行代碼。不會發生錯誤。因爲您已將$ _GET ['login']賦值爲「failed」。

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

但是,如果你不提供 「登錄失敗=」 在地址

http://localhost/yoursite/index.php

$ _GET [ '登錄']是不是設置和PHP無法找到$ _GET數組中的'登錄'索引,它會引發錯誤:)

解決方法是檢查$ _GET ['login']是否在檢查其值之前設置。

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

empty($_GET['login'])返回true,如果$_GET['login']未設置

相關問題