0

ここで誰かが私を助けてくれることを願っています。私は複数のユーザーを持つシステムを作成しました。各ユーザーには一意のユーザー名と 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 に基づいて情報を取得したいの

4

1 に答える 1

1

まず第一に、私はこのコードがまったく機能しないに違いありません。

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

... MySQLには&&のようなものがないため、クエリは空の結果を返します。それを機能させたい場合は、少なくともこの方法で実行してください(SQLインジェクションも防止します!):

$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...トランザクションテーブルのユーザー名フィールドがプライマリ/一意キーとしてインデックス付けされている場合は、この部分も必要ありません。

于 2012-09-09T16:17:43.573 に答える