おはようございます! 私のウェブページに登録しようとしていますが、問題があります - 登録が行われていますが、パスワードが一致していない場合、同じ記号と同じ電子メールで複数のユーザーを作成し、PHP mysql登録ページの問題
<form action = "register.php" method = "post">
Select username:<br>
<input type = "text" name = "username"><br>
Your e-mail:<br>
<input type = "email" name = "email"><br>
Set password:<br>
<input type = "password" name = "password1"><br>
Repeat password:<br>
<input type = "password" name = "password2"><br>
<button> </button>
</form>
、ここでPHPのコードです - - ここで
フォームで
<?php
if (isset($_POST['username']) && isset($_POST['email']) && isset($_POST['password1']) && isset($_POST['password2'])){
$query = 'select * from users where username = "'.addslashes($_POST['username']).'"';
$numrows = mysqli_num_rows($link,$query);
if($numrows == 0){
$query_mail = 'select * from users where email = "'.addslashes($_POST['email']).'"';
$numrows_mail = mysqli_num_rows($link,$query_mail);
if($numrows_mail == 0){
if(isset($_POST['password1']) == isset($_POST['password2'])){
$sql = 'INSERT INTO users (username,password,email) VALUES("'.addslashes($_POST['username']).'","'.addslashes($_POST['password1']).'","'.addslashes($_POST['email']).'")';
$result = mysqli_query($link,$sql) or die(mysqli_error($link));
if($result){
echo 'Account sucsessfully created! You can now log in.';
}else{
var_dump($result);
}
}else {
echo 'Passwords must match!';
}
}else {
echo 'E-mail allready registered!';
}
}else{
echo 'Username allready in use!';
}
}
?>
誰かがここで間違っているかを説明することはできますか?
Wあなたは "*同じシンボルを持つ複数のユーザー*"を意味しますか?いくつか例を挙げることができますか?そしてあなたは電子メールに対してチェックするために実際にクエリを実行しているわけではありません。あなたはmysqli_num_rows($ link、$ query_mail);を使用します。 – Qirel
また、変数の使用、特にユーザー入力は、クエリで直接安全でないことに注意してください。代わりに、mysqli :: prepare()を使ってクエリのプレースホルダを使うべきです - このマニュアルには例がありますhttp://php.net/mysqli.prepare – Qirel
そして 'if(isset($ _ POST ['password1'] )== isset($ _ POST ['password2'])) 'はパスワードが一致しているかどうかをチェックしていません。 – Qirel