2013-07-23 5 views
5

Я пытаюсь выяснить, как получить код моего регистра php, проверить, было ли уже зарегистрировано имя пользователя registee, а если нет, не регистрируйте его, сообщите пользователю, что оно было принято. Вот мой весь файл обработки регистра.Проверьте, существует ли имя пользователя в таблице mysql через 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

Установить уникальное ограничение на 'username', а затем прочитать' mysqli_error ($ CON) ', один попал в базу данных. –

+0

Редактировать: Я также хочу знать, можно ли уведомить участника о том, что он не может использовать пробелы в своем имени пользователя. Сейчас он установлен, чтобы удалить пробелы, а затем вставить их. –

+0

Удалите пробелы, затем сравните их с исходным вводом, если они разные, у них есть пробелы! –

ответ

5

Либо вы можете использовать путь Дейва и проверить»код ошибки, или вы можете предварительную проверку, существует ли пользователь

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

Теперь проверьте результаты этого. Если строка выбрана, то пользователь существует. Укажите это пользователю. Если нет, солнце светит на пользователя. Дайте ему печенье

+0

Не делайте этого. Это здорово. –

+0

racy. что это значит? –

+1

Это означает, что это связано с [условиями гонки] (http://en.wikipedia.org/wiki/Race_condition). Существует вероятность, что другой пользователь может ввести имя пользователя между «SELECT» и «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 
    } 

вы можете проверить из базы данных, существует ли пользователь, а затем вставьте код

Смежные вопросы