-4

これが私のコードです。ifステートメントを機能させることができません。名前が存在しない場合、「レコードが見つかりました」と表示され、page3.phpにパスワードが一致しないと表示されます誰かがこれで私を助けてくれますありがとう

<?php
session_start();
//$_SESSION["authorized"]=0;
$name =  $_POST["name"];
$pass = ($_POST["password"]);

$connect = mysql_connect("localhost","tina","tinapassword") or die("Could not connect");

$selected = mysql_select_db("tinadatabase", $connect) or die("Could not connect to database");

$query = "SELECT * FROM users WHERE Uname='$name'"; 
$result = mysql_query($query, $connect);

$row = mysql_fetch_assoc($result);

if ($result)
{
    //$row ==1;
    print "Record found";

}
else
{
    //$row == 0;
    print "Record not found";   
}
print "<br>";

md5($pass);
if($name == $result["Uname"] && md5('$pass') == $result["Upassword"])
{   
    $_SESSION["authorized"] = 1;    
}
else
{
    $_SESSION["authorized"] = 0;
}
print "<br>";
print"<a href='page3.php'> continue</a>";
?>
4

4 に答える 4

0

mysql_queryクエリが成功したかどうかを返します。ゼロ レコードの検索は成功です。

を確認するか$row、結果セットの長さを確認する必要があります。

注: コメントを確認してください。コードには多くの問題があります。

于 2013-07-20T18:12:58.670 に答える
0

$result行が返されなくても、クエリでエラーが発生しない限り、真の値になります。一致するものがあるかどうかを確認するには、行数をカウントする必要があります。

(ただし、質問に対する私のコメントを参照してください。そもそもそのデータベース API を使用するべきではありません)。

于 2013-07-20T18:13:14.930 に答える
0

他の人が言及したように、mysql_num_rows()ここにあなたの答えがあります。ここで重要なことの 1 つは、 を使用$resultする必要があるときに、連想配列としても使用していることです$row。私はあなたのコードを書き直しました:

<?php

session_start();

$name =  $_POST["name"];
$pass = $_POST["password"];

$conn = mysql_connect("localhost","tina","tinapassword") or die("Could not connect to MySQL server.");

if (!$conn) {
    echo "Unable to connect to DB: " . mysql_error();
    exit;
}

if (!mysql_select_db("tinadatabase")) {
    echo "Unable to select <strong>tinadatabase</strong>: " . mysql_error();
    exit;
}

$sql = "SELECT * FROM users WHERE Uname='$name'";

$result = mysql_query($sql);

if (!$result) {
    echo "Could not successfully run query (<strong>$sql<strong>) on DB: " . mysql_error();
    exit;
}

if (mysql_num_rows($result) == 0) {
    echo "Record not found.";
    exit;
} else
    echo "Record found."

$row = mysql_fetch_assoc($result);

print "<br>";

md5($pass);

if($name == $row["Uname"] && md5($pass) == $row["Upassword"]) {
    $_SESSION["authorized"] = 1;
    print "<a href='page3.php'>continue</a>";
} else {
    $_SESSION["authorized"] = 0;
    print "Username or password incorrect.";
}

mysql_free_result($result);

?>

今、私はそれをテストしていませんが、それは私にとっては正しいように見えます. それがうまくいくかどうか教えてください!

于 2013-07-20T18:27:51.963 に答える