0

まず、私はphpが初めてです。私はMySQLも初めてなので、優しくしてください。第二に、mysql_* が減価償却されていることを知っています。これは、後で詳しく理解した時点で修正される予定です。

だから私は次のコードを持っています:

        if(isset($_POST['email']) && !empty($_POST['email']) AND isset($_POST['password']) && !empty($_POST['password'])){
            $email = mysql_escape_string($_POST['email']);
            $password = mysql_escape_string($_POST['password']);

            $search = mysql_query("SELECT * FROM users WHERE email='".$email."' AND password='".$password."' AND active='1'") or die(mysql_error()); 
            $match  = mysql_num_rows($search);

            if($match > 0){
                $user=$search['forename'] .' '.$search['surname'];
                $_SESSION['username']=$user;
                $msg = 'Login Complete! Thanks, '.$user.'!';
            }else{
                $msg = 'Login Failed!<br /> Please make sure that you enter the correct details and that you have activated your account.';
            }
        }

簡単に言えば、メールとパスワードが一致することを確認しています(ハッシュ化されたパスワードではないことはわかっています...これもテストなので問題ではありません)。それらがあり、アカウントがアクティブ化されている場合は、ユーザーの姓名 (users テーブルの名/姓) を返し、それらをセッション変数に格納します。その変数が設定されている場合、この情報を使用して、ユーザーがログインしたことを確認します (したがって、特定のページにアクセスできます)。ただし、このテストはユーザー名を返さず、代わりに次を出力します。

ログイン完了!ありがとう、 !

どんな助けでも大歓迎です。

4

3 に答える 3

1

によって返される値mysql_queryはリソースであるため、結果行を連想配列としてフェッチする必要があることに注意してください。

while ($row = mysql_fetch_assoc($search)) 
{
    $user=$row['forename'] .' '.$row['surname'];
    $_SESSION['username']=$user;
}

補足として、変数のSQL Injection値が外部から取得された場合、クエリは脆弱です。予防方法については、以下の記事をご覧ください。を使用すると、値を一重引用符で囲む必要がなくなります。PreparedStatements

于 2013-02-27T14:10:51.183 に答える
0

あなたのコードを置き換えます / * ** * ** * ** * ***あなたのコード* *** / if(isset($_POST['email']) && !empty($_POST['email']) AND isset($_POST['password']) && !empty($_POST['password'])){ $email = mysql_escape_string($_POST['email']); $password = mysql_escape_string($_POST['password']);

        $search = mysql_query("SELECT * FROM users WHERE email='".$email."' AND password='".$password."' AND active='1'") or die(mysql_error()); 
        $match  = mysql_num_rows($search);

        if($match > 0){
            $user=$search['forename'] .' '.$search['surname'];
            $_SESSION['username']=$user;
            $msg = 'Login Complete! Thanks, '.$user.'!';
        }else{
            $msg = 'Login Failed!<br /> Please make sure that you enter the correct details and that you have activated your account.';
        }
    }

/ * ** * ** * ** * ***マイコード* *** /

    if(isset($_POST['email']) && !empty($_POST['email']) AND isset($_POST['password']) && !empty($_POST['password'])){
        $email = mysql_escape_string($_POST['email']);
        $password = mysql_escape_string($_POST['password']);

        $search = mysql_query("SELECT * FROM users WHERE email='".$email."' AND password='".$password."' AND active='1'") or die(mysql_error()); 
        $match  = mysql_num_rows($search);

        if($match > 0){
            $search = mysql_fetch_array($search); 
            $user=$search['forename'] .' '.$search['surname'];
            $_SESSION['username']=$user;
            $msg = 'Login Complete! Thanks, '.$user.'!';
        }else{
            $msg = 'Login Failed!<br /> Please make sure that you enter the correct details and that you have activated your account.';
        }
    }
于 2013-02-27T14:14:09.990 に答える
0

あなたがする必要があります$row = mysql_fetch_array($search);

その後

$user=$row['forename'] .' '.$row['surname'];
于 2013-02-27T14:10:48.563 に答える