2017-03-05 25 views
-1

ここに私のコードです。すべてが完璧に動作します。ユーザー名の重複を防ぎます。私が抱えている唯一の問題は、すでに登録されているユーザーが再度登録しようとすると、「User already exists」と表示されることです。エコーユーザーは既に存在します

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Registration</title> 
<link rel="stylesheet" href="style2.css" /> 
    </head> 
    <body> 
    <?php 
    $con = mysqli_connect("localhost","root","","register"); 

    if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

if (isset($_REQUEST['username'])){ 

    $username = stripslashes($_REQUEST['username']); 
    $username = mysqli_real_escape_string($con,$username); 

    $password = stripslashes($_REQUEST['password']); 
    $password = mysqli_real_escape_string($con,$password); 

    $query = "INSERT into `users` (username, password) 
    VALUES ('$username', '".md5($password)."')"; 

    $result = mysqli_query($con,$query); 

    if($result){ 
     echo "<div class='form'> 
     <h3>You are registered successfully.</h3> 
     <br/>Click here to <a href='login.php'>Login</a></div>"; 
     } 
    }else{ 
    ?> 
<div class="form"> 
    <h1>Registration</h1> 
    <form name="registration" action="" method="post"> 

    <input type="text" name="username" placeholder="Username" required /> 
    <input type="password" name="password" placeholder="Password" required /> 
    <input type="submit" name="submit" value="Register" /> 
</form> 
    </div> 
<?php } ?> 
</body> 
</html> 
+1

は、私は、彼らがすでに – nogad

+1

他の問題を存在する場合任意のコードが確認を参照してくださいいけません。 – nogad

+0

したがって、ユーザーが同じユーザー名で登録しようとすると、ユーザー名が既に存在するかどうかを確認する必要がありますか? – Mario

答えて

2

これはうまくいくはずですあなたが別のものを挿入する前に存在する場合は、ユーザー名をチェックしませんでした。 Uは私のコードでそれをコメントします。

パスワードが安全でないため、md5暗号化を使用しないでください。password_hash()およびpassword_verify()関数を使用してください。パスワードに、パスワードにMD5をにstripslashes:

<?php 

$con = mysqli_connect("localhost", "root", "", "register"); 

if (mysqli_connect_errno()) 
{ 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 


// if is pressed submit button (Register) 
if (isset($_POST['submit'])) 
{ 

    $username = stripslashes($_POST['username']); 
    $username = mysqli_real_escape_string($con, $username); 

    $password = stripslashes($_POST['password']); 
    $password = mysqli_real_escape_string($con, $password); 

    // check if username already exists 
    $q = mysqli_query($con, "SELECT username FROM users WHERE username = '$username'"); 
    $user_exists = mysqli_num_rows($q); 

    // if number of rows is grateater that 0 it's mean that username exists 
    if ($user_exists > 0) 
    { 
     echo "Username in use, please select another one."; 
    } 
    else 
    { 
     // if username don't exists 
     $query = "INSERT INTO users (username, password) VALUES ('$username', '".md5($password)."')"; 

     $result = mysqli_query($con,$query); 

     if($result) 
     { 
      echo "<div class='form'> 
        <h3>You are registered successfully.</h3> 
        <br/>Click here to <a href='login.php'>Login</a> 
       </div>"; 
     } 
    } 


} 

?> 

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <title>Registration</title> 
     <link rel="stylesheet" href="style2.css" /> 
    </head> 
    <body> 

    <div class="form"> 
    <h1>Registration</h1> 
     <form name="registration" action="" method="post"> 
     <input type="text" name="username" placeholder="Username" required /> 
     <input type="password" name="password" placeholder="Password" required /> 
     <input type="submit" name="submit" value="Register" /> 
     </form> 
    </div> 

</body> 
</html> 
0

その後、データベースにアクセスするためのいくつかの安全な方法をユーザーが既に存在するかどうかをチェックし、採用

SELECT * FROM `users` WHERE `username` = '$username' 

のようなクエリを実行挿入する前に、すなわちPDOあなたはテーブルの行をカウントする必要があります

-1

既に存在するユーザー名を確認するには

 $count = "SELECT COUNT(username) as count FROM table WHERE username = '$username'"; 

$result = mysqli_query($count); 
$users = mysqli_fetch_assoc($result); 

$numrows = $users['username']; 

If ($numrows == 1) { 
    Echo "your message"; 
} 
関連する問題