2012-05-27 26 views
0

我試圖登錄使用此代碼:成功登錄後PHP日誌中的錯誤未定義指數

session_start(); 

require "connect.php"; 

$username = $_POST['username']; 
$password = $_POST['password']; 

    if($username&&$password) 
{ 
$query = mysql_query("SELECT * FROM users WHERE username='$username'"); 
$numrow = mysql_num_rows($query); 

if($numrow!=0) 
{ 
    while($row = mysql_fetch_assoc($query)) 
    { 
     $db_username = $row['username']; 
     $db_password = $row['password']; 
    } 

    if($username==$db_username&&$password==$db_password) 
    { 
     //echo 1; 
     header("Location: members.php"); 
     $_SESSION['username']=$db_username; 

    } 
    else echo 0; 
} 
else die("That user doesn't exist"); 
    } 
    else die("Please enter a username and password"); 

在它應該帶我去members.php:

session_start(); 
if($_SESSION['username']) <------ this is line 5 
    { 
echo "20730312"; 
echo " You are logged in as: ".$_SESSION['username']; 
echo "<p><a href='logout.php'>Click here to logout</a>"; 
    } 

,但是當我請求members.php在我的應用它給了我:

Notice: Undefined index: username in E:\Program Files\xampp\htdocs\adddrop\members.php on line 5 

請注意,我採用了android的WebView成功LO後要求members.php克在,是這樣嗎?我究竟做錯了什麼 ?

回答

3

在旁註:你有一個SQL注入。可能需要閱讀更多:http://en.wikipedia.org/wiki/SQL_injection

你所面臨的問題是,用戶名不是總是POST'd(當你只是加載網頁第一次):

$username = isset($_POST['username']) ? $_POST['username'] : null; 
$password = isset($_POST['password']) ? $_POST['password'] : null; 

這應該修復它。基本上,我檢查是否設置了POST索引,並且僅當它嘗試訪問它時,否則將其設置爲null

而且,你可能想要做這樣的:

$query = mysql_query("SELECT * FROM users WHERE username='" . mysql_real_escape_string($username) . "'"); 

防止SQL注入漏洞。

,並添加exit;

header("Location: members.php"); 
$_SESSION['username']=$db_username; 
exit; // Add this. 
+0

感謝您的回答,但我試過你的解決方案,它仍然給我同樣的通知。和關於SQL注入我不擔心安全問題,但無論如何感謝。 – Jawad

0

與往常一樣。您不會發布到該網址。驗證您嘗試發佈到的URL。

+0

服務器在我的本地主機上,我從login.php登錄成功,但我的問題是請求第二頁mambers.php – Jawad

0

也許這:

header("Location: members.php"); 
$_SESSION['username']=$db_username; 

應改爲(反向):

$_SESSION['username']=$db_username; 
header("Location: members.php"); 
+0

其實它不會改變任何東西 – zerkms

+0

我已經嘗試過這似乎並沒有解決問題 – Jawad

0

,因爲它說,你沒有來自POST的指定數據。確保你的表單行爲是正確的,並且你填寫了用戶名。

此外,你可能想考慮哈希你的密碼。從我在這裏可以看到的你比較純文本密碼(或者你已經得到散列密碼到你的腳本,這將是好的)。