0
PHPスクリプトを使用して、電子メールとユーザー名の両方がDBに存在するかどうかを確認し、成功したばかりの1つだけをチェックするようにしましたが、挿入前に両方をチェックしようとしていますが、いくつかの問題があります。2つの別のクエリを使用して、電子メールとユーザー名がdb内に存在するかどうかを確認します
私がここで間違っていることについて、誰かに私に何か提案をしてもらえますか?
// Check if simple anti-bot test is correct
if ($human !== 5) {
$errHuman = 'Your anti-spam is incorrect';
}
else {
if (!$errEmail && !$errUsername && !$errPassword && !$errPassMatch && !$errHuman) {
$query1="SELECT email FROM blog_members WHERE email='$email'";
$query2="SELECT username FROM blog_members WHERE username='$signupusername'";
$result1=mysqli_query($conn, $query1);
$result2=mysqli_query($conn, $query2);
if ($result1 && mysqli_num_rows($result1) >=1) {
$error = "Email already exists!";
}else if ($result2 && mysqli_num_rows($result2) >=1) {
$error = "Username already exists!"
}else {
$query="INSERT INTO blog_members(username, password, email) VALUES ('$signupusername', '$signuppassword', '$email')";
$result=mysqli_query($conn, $query);
?>
<script type="text/javascript">
alert("User created, please login from the homepage!");
window.location.href = 'http://www.mywebsite.co.uk/index.php#login';
</script>
<?php
}
}
}
どうなりますか?間違いはありますか? – Daniel
あなたはこのようにしようとしましたか?電子メール= '$ email'とusername = '$ signupusername'か、そうでない場合は別のものを使用してください。 – zod
あなたはSQLインジェクションを広く開いています。 mysqliを使用しているので、[prepared statements](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と[bind_param](http://php.net/ manual/en/mysqli-stmt.bind-param.php)。これは、厄介な引用問題を防ぐのにも役立ちます。 – aynber