0

この登録フォームは私が作成したものですが、やりたいことができません。

mysql データベースに接続して、フォームから提供された情報を保存します。md5でハッシュ$passwordして「gebruikers」テーブルに保存したい。「くそー、自分が何をしているのかわからない」などと返信しないでください。例を見てチュートリアルに従ってPHPを学んでいます。上記の数行で行き詰まったため、mysql 挿入コードが正しく入力されていないことに注意してください。

だから、私の質問は: mysql テーブルに既に含まれているかどうかを確認したいです$email。既に mysql テーブルにある場合は、PHP ページの別の場所に配置できるエラー メッセージを表示したいと考えています。指定された電子メール アドレスが一意である場合は$password、他のフォーム エントリと同様に、md5 にハッシュして mysql データベースに保存する必要があります。

それ、どうやったら出来るの?

                        <?php
                            // Fetching all the form details
                            $email = $_POST["email"];
                            $password = $_POST["password"];
                            $voornaam = $_POST["voornaam"];
                            $tussenvoegsel = $_POST["tussenvoegsel"];
                            $achternaam = $_POST["achternaam"];
                            $dag = $_POST["dag"];
                            $maand = $_POST["maand"];
                            $jaar = $_POST["voornaam"];
                            $straat = $_POST["straat"];
                            $postcode = $_POST["postcode"];
                            $woonplaats = $_POST["woonplaats"];
                            $cniveau = $_POST["cniveau"];
                            $oniveau = $_POST["oniveau"];
                            $voornaam = $_POST["voornaam"];
                            $aboutme = $_POST["aboutme"];

                            //Here's where I don't know how to continue
                            $check = mysql_query("SELECT * FROM `gebruikers` WHERE `email` = '$email'"); 
                            if($check === FALSE) {
                            //there is a user already registered 
                             echo("$email is al in gebruik. <a href='login.php'>Inloggen</a>?"); 
                            } else { 
                            //There isn't a username 
                            //mysql_query("INSERT INTO `user` (`id` ,`username` ,`password`) VALUES (NULL , '{$_POST['email']}', MD5( '{$_POST['password']}' ))"); 
                            echo("You have been registered!"); 
                            } 

PS: 私は英語を母国語としないので、文法の間違いやタイプミスは無視してください。

4

3 に答える 3

2

まず第一に、あなたは大きな間違いを犯しました: SQL インジェクションのセキュリティ ホールがあります。これを読んでください: http://php.net/manual/en/security.database.sql-injection.php 次に、mysql の代わりに mysqli を使用する必要があります。mysql は推奨されていないためです。

エラーは、結果がない場合ではなく、クエリが無効な場合にのみ SQL が false を返すことです。したがって、結果があるかどうかを確認する正しい方法は、http://php.net/manual/en/mysqli-result.num-rows.phpを使用することです

于 2013-06-26T16:27:24.997 に答える
0
$result = mysql_query("SELECT * FROM `gebruikers` WHERE `email` = '$email' LIMIT 1");

if(mysql_fetch_array($result) !== false)
{
    ...
} else { 
    ....
} 

また、SQL インジェクションの防止についてもお読みください。

于 2013-06-26T16:29:24.543 に答える