-8

PHP コードでエラーが発生します。私の考えは、ユーザー名とパスワードがデータベースに存在するかどうかを確認し、それを URL にリダイレクトすることでした。

ここにコードを入力 2 つのページを作成しました。1 つはインデックスで、もう 1 つはリダイレクトです。リダイレクト コードが問題を引き起こしています。

<!DOCTYPE html>
<html>
<body>
<?php
//echo $_POST['uname'];
//echo $_REQUEST['uname'];
$uname=$_POST['uname'];
$pwd=$_POST['pwd'];
//echo $_POST['pwd'];
//echo $_REQUEST['pwd'];
//echo $uname;
//echo $pwd;
$con = mysql_connect("localhost","root","root");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

  $db_found=mysql_select_db("sn", $con);  

 //$result = mysql_query("SELECT fname,password FROM udata");

if ($db_found) 
{
$result = mysql_query("SELECT fname,password FROM udata");
while ( $db_field = mysql_fetch_assoc($result) ) 
{
if ($db_field['uname']==$uname && $db_field['password']==$pwd)
header( 'Location: www.youtube.com' ) ;

/*print $db_field['fname'] . "<BR>";
print $db_field['lname'] . "<BR>";
print $db_field['uname'] . "<BR>";
print $db_field['password'] . "<BR>";
*/
}

mysql_close($con);

}
else 
{

print "Database NOT Found ";
mysql_close($db_handle);


}
?>


</body>
</html>

これで私を助けてください。

4

3 に答える 3

2

私はあなたがこれを変更しなければならないと思います:

if ($db_field['uname']==$uname && $db_field['password']==$pwd)

これに:

if ($db_field['fname']==$uname && $db_field['password']==$pwd)
于 2013-01-25T22:02:17.033 に答える
1

あなたのコードはエラーでいっぱいです。適切にインデントすると、いくつかの欠落した開閉ブレースが表示されます。自分でそれらを見つけることができるはずです。


さらに、HTMLページの出力を直接開始します。しかし、後で使用します

header( 'Location: www.youtube.com' ) ;

ユーザー名とパスワードが正しい場合は、ブラウザを別のページにリダイレクトします。HTMLページの出力を開始した後でHTTPヘッダーを送信することはできません(いくつかの高度なトリックなしで)


リダイレクト後、を使用してプログラムフローを停止する必要があります(もう問題ではないため)exit()


テーブルに複数のユーザーがいると仮定するとudata、クエリに検索条件を追加する必要があります。多くの可能性があります、これは1つです:

$result = mysql_query("SELECT password FROM udata WHERE fname='$uname'");

これで、これがレコードを返したかどうか(ユーザーが存在しない場合)、およびパスワードが正しいかどうかを確認できます。

注:$_POST[]値を直接使用すると、アプリケーションは(とりわけ)SQLインジェクション攻撃に対して脆弱になります。これらの入力をサニタイズする必要があります。

追記/アドバイス:データベースにパスワードを直接保存するのは悪いことです(tm)。代わりにハッシュとソルトを使用してください(お気に入りの検索エンジンで検索してください)


njkがすでにコメントしているように、減価償却されたmysql_*関数はもう使用しないでください。

于 2013-01-25T22:02:37.960 に答える
0

あなたはいくつか欠けているので、あなたの後に{追加する必要がありますexit();header('Location: www.youtube.com');

<?php
    $uname=$_POST['uname'];
    $pwd=$_POST['pwd'];
    $con = mysql_connect("localhost","root","root");
    if (!$con) {
        die('Could not connect: ' . mysql_error());
    }

    $db_found=mysql_select_db("sn", $con);  


    if ($db_found) {
        $result = mysql_query("SELECT fname,password FROM udata");
        while ( $db_field = mysql_fetch_assoc($result) ) {
            if ($db_field['fname']==$uname && $db_field['password']==$pwd) {
               header('Location: www.youtube.com');
               exit();
            }
        }

        mysql_close($con);

    } else {
        print "Database NOT Found ";
        mysql_close($db_handle);
    }
?>
于 2013-01-25T22:05:33.097 に答える