2012-09-09 33 views
0

希望有人能幫助我在這裏, 我創建了一個系統,擁有多個用戶,每個用戶都有一個唯一的用戶名和ID。 現在我的問題是我如何設置我的系統,使用戶登錄時,系統將根據用戶名或ID指示用戶查看數據庫中的特定行。基於用戶名或ID檢索數據庫中的特定行

我訪問數據庫的代碼是:

<?php 


$con = mysql_connect("localhost","root",""); 
mysql_select_db("uloaku", $con); 
$count = 1; 
$y = mysql_query("SELECT * FROM transaction WHERE username = '".$_SESSION['username']."' LIMIT 1"); 
if(mysql_num_rows($y) != 0){ 

echo "<table border=\"1\" width=\"800\" >"; 
echo "<tr id=\"bold\"> 
<td>No</td> 
<td align=\"center\" width=\"120\">Account Owner</td> 
<td align=\"center\" width=\"120\">Deposit Date</td> 
<td align=\"center\" id=\"bold\" width=\"150\">Current Balance</td> 
<td align=\"center\" width=\"150\">Available Balance</td> 
<td align=\"center\">Account Status</td> 
</tr>"; 

while ($z = mysql_fetch_array($y, MYSQL_BOTH)){ 
     echo "<tr> 
     <td>".$count++."</td> 
     <td id=\"color\" align=\"center\">".$z[1]."</td> 
     <td id=\"color\" align=\"center\">".$z[2]."</td> 
     <td id=\"color\" align=\"center\">".$z[3]."</td> 
     <td id=\"color\" align=\"center\">".$z[4]."</td> 
     <td id=\"color3\" align=\"left\">".$z[5]."</td> 
     </tr>"; 
    } 
    echo "</table>"; 
    } 
?> 

我的登錄頁面看起來是這樣的:

<?php 

session_start(); 

$_SESSION['username'] = $username; 

$username = $_POST['username']; 

$password = $_POST['password']; 

if ($username&&$password) 

{ 
$connect = mysql_connect("localhost","root","") or die("cannot connect!"); 
mysql_select_db("uloaku") or die("cannot find data base!"); 
$query = mysql_query ("SELECT * FROM keyaku WHERE username='".mysql_real_escape_string($username)."' AND  password='".mysql_real_escape_string($password)."'"); 
$numrows = mysql_num_rows($query); 

if ($numrows!=0) 
{ 
while ($row = mysql_fetch_assoc($query)) 
{ 
    $dbusername = $row['username']; 
    $dbpassword = $row['password']; 
} 
if ($username==$dbusername&&$password=$dbpassword) 
{ 
    echo "Welcome $username"; 
} 
else 
    echo "Invalid Password"; 
} 
else 
die("Invalid User"); 

} 

else 
die("Please Enter a UserName and Password."); 

?> 

到目前爲止,我登錄的工作,我想它,我的數據庫檢索信息唯一的問題是,它檢索數據庫中的所有信息,但我希望它根據登錄人員的用戶名或ID檢索信息。

+0

閱讀[HEREDOC](http://php.net/heredoc)並停止使用那些醜陋的多行加轉義回聲語句。你的代碼維護者會爲你感謝你。 –

回答

1

首先,我敢打賭,這一段代碼不會在所有的工作:

$query = mysql_query ("SELECT * FROM keyaku WHERE  username='$username'&&password='$password'"); 

...有沒有這樣的事情在MySQL & &,因此查詢將返回空的結果。如果你想要的工作,做到這一點,至少這種方式(防止SQL injection,太!):所有的

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

其次,你需要一些方法來存儲您的登錄信息,所以它可以在以後重複使用。如果您可以使用會話,最簡單的方法是存儲的用戶名(或任何信息被鏈接到你所需要的行):

$_SESSION['username'] = $username; 

然後,在你的第一個頁面,更新SQL改爲如下(改列按您的需求ID):

$y = mysql_query("SELECT * FROM transaction WHERE username = '".$_SESSION['username']."' LIMIT 1"); 

...你甚至都不需要LIMIT 1的一部分,如果在交易表中您的用戶名字段建立索引作爲主/唯一鍵。

+0

嗨Zathrus,感謝您的回覆,我修改我的第一頁訪問數據庫如下。參考我上面的代碼。並且仍然收到一條錯誤信息:注意:未定義的變量:用戶名在第82行的C:\ wamp \ www \ ct001 \ viewacct.php中,第82行是我添加的部分$ _SESSION ['username'] = $ username;幫助我,我想我在這裏做錯了什麼。謝謝 –

+0

'$ _SESSION ['username'] = $ username;'line屬於你的登錄頁面 - 它存儲登錄的用戶名,所以你可以爲它們檢索一個數據庫行 –

+0

Hi Zathrus,Am still得到相同的錯誤,你介意幫助編輯我的問題的代碼,所以我可以從那裏更正。或者如果還有其他更好的方法建議我重新編寫我的代碼,只需說明它是否適用於更改。謝謝 –

相關問題