2016-12-14 5 views
0

Я написал этот код, его работа над добавлением пользователей, но для дубликата пользователя он снова сохранил значение os того же имени пользователя. Я хотел бы предоставить всплывающее сообщение, если имя пользователя уже выполнено. Я новичок, пожалуйста, помогите.Подтверждение для имени пользователя не работает

<?php 
ob_start(); 
    include("db.php"); 
    if(isset($_POST['send'])!="") { 
    $username = mysqli_real_escape_string($con, $_POST['username']); 
    $usermail = mysqli_real_escape_string($con, $_POST['usermail']); 
    $usermobile = mysqli_real_escape_string($con, $_POST['usermobile']); 
    $bool = true; 
    $con = mysqli_connect("localhost","root","","demo"); 
    $result = mysqli_query("SELECT `username` FROM `sample` WHERE username = '$username'"); 
    if(mysqli_num_rows($result)>0) 
    { 
      Print '<script>alert("Username has been taken!");</script>'; 

     } 
     if ($bool) { 
     $inssql = "insert into sample set 
     username = '" . $username . "', 
     emailid = '" . $usermail . "', 
     mobileno = '" . $usermobile . "', 
     created = now()"; 
     $update = mysqli_query($con, $inssql); 


     } 
    } 
+0

Если имя пользователя должно быть уникальным, вы должны установить уникальный индекс в этом столбце базы данных. И ваш запрос SELECT должен искать только строку с этим именем пользователя, а не всеми строками. – jeroen

+0

Прежде чем вы вставляете данные в базу данных, проверьте наличие пользователя, если счетчик больше 0, покажите сообщение об ошибке еще вставить пользователя – Sona

+1

Ваш скрипт находится под угрозой [SQL Injection Attack] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) Посмотрите, что случилось с [Little Bobby Tables] (http://bobby-tables.com/) Даже [если вы (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) Используйте [подготовленные параметризованные утверждения] (http:// /php.net/manual/en/mysqli.quickstart.prepared-statements.php) – RiggsFolly

ответ

1

Убедитесь, что вы закончите сценарий или выключить флаг, прежде чем сделать вставку:

if(mysqli_num_rows($result)>0) 
{ 
    Print '<script>alert("Username has been taken!");</script>'; 
    die('username already taken'); 
    //$bool = FALSE; 
} 

Если вы все еще имеющие повторяющиеся записи, отладки, что является результатом $ имя пользователя и сравнить его с значение в базе данных.

+0

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

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