希望有人可以帮助我, 我创建了一个超过1个用户的系统,每个用户都有一个唯一的用户名和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 :(得分:1)
首先,我打赌这段代码根本不起作用:
$query = mysql_query ("SELECT * FROM keyaku WHERE username='$username'&&password='$password'");
......没有&amp;&amp;和在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
部分。