2013-07-23 7 views
5

Próbuję dowiedzieć się, jak mam mój rejestrowy kod php sprawdzać, czy nazwa użytkownika rejestru jest już zajęta, a jeśli tak, to nie rejestruj go, powiedz użytkownikowi, że jest on zajęty. Oto mój cały plik przetwarzania rejestru.Sprawdź, czy nazwa użytkownika istnieje w tabeli mysql za pośrednictwem php?

<?php 
$con=mysqli_connect("localhost","root","","users"); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

$hpassword = hash('sha512', $_POST['password']); 
$eusername = mysqli_real_escape_string($con, $_POST['username']); 
$eemail = mysqli_real_escape_string($con, $_POST['email']); 
$fusername = str_replace(' ', '', $eusername); 

$sql="INSERT INTO users (username, password, email) 
VALUES 
('$fusername','$hpassword','$eemail')"; 

if (!mysqli_query($con,$sql)) 
    { 
    die('Error: ' . mysqli_error($con)); 
    } 
mysqli_close($con); 
?> 
+2

Ustaw wyjątkową presję na 'username', a następnie odczytać' mysqli_error ($ con) ', jeden trafienie do bazy danych. –

+0

Edycja: Chcę również wiedzieć, czy możliwe jest powiadomienie członka, że ​​nie może używać spacji w swojej nazwie użytkownika. Teraz jest ustawiony, aby usunąć spacje, a następnie wstawić. –

+0

Usuń spacje, a następnie porównaj je z oryginalnym wejściem, jeśli jest inne, mają spacje! –

Odpowiedz

5

Albo można użyć sposób Dave i sprawdzić”kod błędu, czy można precheck czy użytkownik istnieje

$sql="SELECT FROM users (username, password, email) WHERE username=$fusername" 

teraz sprawdzić wyniki tego. Jeśli wiersz zostanie pobrany, to użytkownik istnieje. Wskaż to użytkownikowi. Jeśli nie, słońce świeci na użytkownika. Daj mu ciasteczko

+0

Nie rób tego. Jest rasowy. –

+0

racy. co to znaczy? –

+1

Oznacza to, że obejmuje on [warunki wyścigu] (http://en.wikipedia.org/wiki/Race_condition). Istnieje szansa, że ​​inny użytkownik może wziąć nazwę użytkownika pomiędzy 'SELECT' i' INSERT'. –

5
include ('database_connection.php'); 
if (isset($_POST['formsubmitted'])) { 
    $error = array(); 
    if (empty($_POST['username'])) { 
     $error[] = 'Please Enter a name '; 
    } else { 
     $username = $_POST['username']; 
    } 

    if (empty($_POST['e-mail'])) { 
     $error[] = 'Please Enter your Email '; 
    } else { 

     if (filter_var($_POST['e-mail'], FILTER_VALIDATE_EMAIL)) { 
      //for email validation (refer: http://us.php.net/manual/en/function.filter-var.php) 

      $email = $_POST['e-mail']; 
     } else { 
      $error[] = 'Your EMail Address is invalid '; 
     } 

    } 

    if (empty($_POST['password'])) { 
     $error[] = 'Please Enter Your Password '; 
    } else { 
     $password = $_POST['password']; 
    } 

    if (empty($error)) 

    { // If everything's OK... 


     $query = "SELECT * FROM members WHERE username ='$username'"; 
     $result = mysqli_query($dbc, $query); // here $dbc is your mysqli $link 
     if (!$result) { 
      echo ' Database Error Occured '; 
     } 

     if (mysqli_num_rows($result) == 0) { // IF no previous user is using this username. 

      $query = "INSERT INTO `members` (`username`, `email`, `password`) VALUES ('$name', '$email', '$password')"; 

      $result = mysqli_query($dbc, $query); 
      if (!$result) { 
       echo 'Query Failed '; 
      } 

      if (mysqli_affected_rows($dbc) == 1) { //If the Insert Query was successfull. 

       // Send an email 

       // Finish the page: 
       echo '<div class="success">Thank you for registering! A confirmation email has been sent to ' . $email . ' Please click on the Activation Link to Activate your account </div>'; 

      } else { // If it did not run OK. 
       echo '<div class="errormsgbox">You could not be registered due to a system error. We apologize for any inconvenience.</div>'; 
      } 

     } else { // The username is not available. 
      echo '<div class="errormsgbox" >That username has already been registered. 
</div>'; 
     } 

    } else { //If the "error" array contains error msg , display them.... e.g.... 

     echo '<div class="errormsgbox"> <ul>'; 
     foreach ($error as $key => $values) { 

      echo ' <li>' . $values . '</li>'; 

     } 
     echo '</ul></div>'; 

    } 

    mysqli_close($dbc); //Close the DB Connection 

} // End of the main Submit conditional. 
16
$sql=mysql_query("SELECT FROM users (username, password, email) WHERE username=$fusername"); 
if(mysql_num_rows($sql)>=1) 
    { 
    echo"name already exists"; 
    } 
else 
    { 
    //insert query goes here 
    } 

można sprawdzić z bazy danych, czy użytkownik istnieje, a następnie wkleić kod

Powiązane problemy