0
私はこのコードを書いていますが、ユーザーを追加する作業はしていますが、重複したユーザーに対しては同じユーザー名の値を再度保存しました。私はusernameが既に取られている場合、ポップアップメッセージを与えたい。私は初心者を助けてください。ユーザー名の検証は機能しません
<?php
ob_start();
include("db.php");
if(isset($_POST['send'])!="") {
$username = mysqli_real_escape_string($con, $_POST['username']);
$usermail = mysqli_real_escape_string($con, $_POST['usermail']);
$usermobile = mysqli_real_escape_string($con, $_POST['usermobile']);
$bool = true;
$con = mysqli_connect("localhost","root","","demo");
$result = mysqli_query("SELECT `username` FROM `sample` WHERE username = '$username'");
if(mysqli_num_rows($result)>0)
{
Print '<script>alert("Username has been taken!");</script>';
}
if ($bool) {
$inssql = "insert into sample set
username = '" . $username . "',
emailid = '" . $usermail . "',
mobileno = '" . $usermobile . "',
created = now()";
$update = mysqli_query($con, $inssql);
}
}
ユーザー名が一意であると想定されている場合は、データベースのその列に一意のインデックスを設定する必要があります。そして、あなたの 'SELECT'クエリは、すべての行ではなく、そのユーザ名を持つ行だけを探すべきです。 – jeroen
データベースにデータを挿入する前に、countが0より大きい場合にユーザーが存在するかどうかを確認します。エラーメッセージが表示されたら、ユーザーを挿入します。 – Sona
スクリプトは[SQLインジェクション攻撃](http://stackoverflow.com/questions)の危険性があります。/60174/how-can-i-prevent-sql-injection-in-php) [Little Bobby Tables](http://bobby-tables.com/)に何が起こったかを見てください。 [もしエスケープ入力、それは安全ではありません!](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) [準備パラメータ化されたステートメント] /php.net/manual/en/mysqli.quickstart.prepared-statements.php) – RiggsFolly