2015-09-08 15 views
1

我知道這個問題被張貼了個遍,我已經嘗試過與未定義的變量:用戶名和密碼,

修復它,如果(isset($ _ POST [「名」])){} ...並檢查$ _POST是否帶有大寫字母,並查看它們是否在登錄表單和check_login腳本中聲明爲正確,我無法找到爲什麼會發生這種情況。

昨天是所有工作正常,今天當我打開我的電腦我只是嘗試更進一步,突然不工作了還數據庫表用戶是空的?我通過xampp在本地存儲數據庫,所以沒有人能夠進入它,我不知道是什麼改變了。

這是我的登錄表單:


<?php 
session_start(); 
if(isset($_SESSION['memberlogged'])== true) 
{ 
    header("location: login_success.php"); 
} 
?> 
<!DOCTYPE HTML> 
<html> 
<head> 
<link rel="stylesheet" type="text/css" href="style.css"> 
</head> 
<center> 
<body style="background-color:rgb(248,248,248);"> 
<div id="loginmenu"> 
<img src="/img/choose.jpg"><br> 
<input type="text" name="username" id="unu" placeholder="username"> <br /><br> 
<input type="password" name="password" id="unu" placeholder="password"> <br /> 
<br><input type="submit" value="Log in" id="button" onClick="parent.location='check_login.php'"> 
<div class="divider"></div> 
<input type="submit" id="button2" onClick="parent.location='index.php'" value='Leave' name="leave"> 
</center> 
</div> 
</body> 
</html> 

,這是我check_login.php腳本


<?php 
include ("config.php"); 
// username and password sent from form 
$password=$_POST['password']; 
$username=$_POST['username']; 
// To protect MySQL injection 
$username = stripslashes($username); 
$password = stripslashes($password); 
$username = mysql_real_escape_string($username); 
$password = mysql_real_escape_string($password); 
$query="SELECT * FROM users WHERE username='$username' and password='$password'"; 
$result=mysql_query($query); 
// Mysql_num_row is counting table row 
if($query) 
{ 
$count=mysql_num_rows($result);} 
else 
{die ("something is not good");} 
// If result matched $myusername and $mypassword, table row must be 1 row 
if($count==1){ 
// SAVE SESSION VARIABLES AND REDIRECT TO "login_success.php" 
    $_SESSION['username'] = $username; 
    $_SESSION['memberlogged'] = true; 
    header("location:login_success.php"); 
    exit; 
} 
else { 
echo "Wrong Username or Password"; 
} 
?> 

,當我嘗試連接( Ť他登錄的數據都是100%corect)我得到

注意:未定義的變量:用戶名在********* \ check_login.php第6行

注意:未定義的變量:在密碼**第7行 錯誤的用戶名或密碼

+0

使用了'如果($查詢)'檢查查詢工作正常。然而,你的'if'語句實際上是檢查'$ query'是否爲空。你需要使用'if($ result)'。另外,停止使用'mysql_'函數 - 它們將在PHP 7中被刪除。使用PDO或'mysqli_'並學習準備好的語句。此外,您實際上並不記錄錯誤是什麼,所以你要調試此使用僥倖 – DaveyBoy

+0

「你不是實際登錄錯誤是什麼,所以你要調試此使用僥倖」我不是確定你的意思,你想說我沒有指出錯誤報告最新的問題? – mrwhite

+0

爲了幫助調試,您需要知道錯誤是什麼。唯一出現錯誤的地方是標準的PHP錯誤日誌(假設你已經設置了'error_reporting'配置變量。如果您在訪問MySQL數據庫時遇到錯誤,您如何確定錯誤是出現在您的代碼中還是數據庫服務器本身存在問題?如果您在代碼中添加了一些調試日誌記錄,那麼當發生錯誤時,您可以記錄變量,錯誤消息等,這將使調試更容易。始終處理錯誤並給用戶提供有用的信息 – DaveyBoy

回答

1

您需要添加form HTML和action屬性******* \ check_login.php ...

<form action="check_login.php" method="POST"> 
<input type="text" name="username" id="unu" placeholder="username"> <br /><br> 
<input type="password" name="password" id="unu" placeholder="password"> <br /> 
<br><input type="submit" value="Log in" id="button"> 
<div class="divider"></div> 
<a href="index.php" class="stlying_class">Leave</a> 
</form> 

這告訴的形式發送到哪裏$_POST[x]信息n以及使用什麼方法POST

您可以刪除onClick="parent.location='check_login.php'",因爲這只是在不發送任何信息的情況下更改頁面。

我們可以離開了提交給submut HTML輸入型。

正如你正確地指出,「保留」按鈕,將仍透過形式,所以我改變了對超鏈接,這可以爲你喜歡的編輯。

另外,您可以無類型將其添加爲input,並保持on-click事件!

+0

謝謝你回答如此之快,但我怎樣才能保持另一個名爲「離開」的按鈕?因爲如果我使用action屬性插入表單,兩個按鈕都會做同樣的事情,我怎麼區分它們? – mrwhite

+0

@mrwhite我已經更新了答案,你說得對,因爲請假會提交表格。 – Pogrindis