1

というわけで、PHPなどを学んでいるのですが、同じ名前とIPで何回も登録できてしまうのです。

これは私のregister.phpのコードです

<html>
<head>
<title>
Gebruikerspaneel
</title>
</head>
<body>
<?php
include 'connect.php';
?>
<?php
include 'functions.php';
?>
<?php
include 'titelbar.php';
?>

<h3>Registreer hier</h3>

<form method='post'>
<?php
if(isset($_POST['submit'])){
    $gebruikersnaam = $_POST['gebruikersnaam'];
    $wachtwoord = md5($_POST['wachtwoord']);
    if(empty($gebruikersnaam) or empty($wachtwoord)){
        echo "<p>Gelieve alles in te vullen!</p>";
    } else {
        mysql_query("INSERT INTO gebruikers VALUES('', '$gebruikersnaam', '$wachtwoord', '2', 'a')");
        echo "<p>U bent succesvol geregistreerd!</p>";
    }
}
?>
Gebruikersnaam:<br />
<input type='text' name='gebruikersnaam' />
<br /><br />
Wachtwoord:<br />
<input type='password' name='wachtwoord' />
<br /><br />
<input type='submit' name='submit' value='Registreren' />
</form>
</body>
</html>

エラーが発生し、情報がデータベースに送信されないようにするにはどうすればよいですか?

私はオランダ人なので、オランダ語のものがいくつかあります。

4

2 に答える 2

1

ロジックは、ユーザーを挿入する前にユーザーが存在するかどうかを確認する必要があることを示しています。あなたはそれを行うことができます:

  1. ユーザー名に一意のキーを配置し、重複エントリのエラー コードをキャプチャします。

  2. ユーザーがすでにそこにいる場合は、挿入の前に DB にクエリを実行します。

あなたが抱えている他の多くの問題には触れていません。一度に 1 つのポイントに集中してください。

反対票を投じる場合は、少なくとも理由を説明してください

于 2013-10-15T17:27:07.553 に答える
-1

あなたができる2つのこと:

  1. 次のようにして、ユーザー名が既に存在するかどうかを確認します。

    SELECT COUNT(*) FROM users WHERE username = $username;

    結果が 0 より大きい場合、エラー メッセージを表示します。

  2. MySQL Workbench またはコマンド ラインのいずれかを使用して、ユーザー名列に一意のキー制約を追加します。これは、何らかの理由でコードが重複を防止する必要がある場合に、データベースでの重複を防止するためのセーフガードとして機能します。

特筆事項:

現在、 SQL インジェクションと呼ばれる巨大なセキュリティ上の欠陥が発生しているため、SQL クエリのパラメータ化を調査してください。

于 2013-10-15T17:26:59.857 に答える