2015-11-04 2 views
1

Я пытаюсь проверить, существует ли имя пользователя в моей базе данных mysql, и, если это так, php-сторона делает эту проверку и возвращает эхо-сообщение «duplicate», которое затем должно быть получено ajax. Однако он не получает, и когда я пытаюсь выполнить вывод в своих инструментах для разработчиков, я получаю это значение переднего конца как неопределенное.не удается получить данные из php с помощью jquery ajax

Вот мой JQuery Ajax часть: -

$("#create").click(function(e){ 


    e.preventDefault(); 
    $.ajax({ 
     type:'post', 
     url:'usernameTest.php', 
     data: {usr: $("#usr").val(), 
      pwd: CryptoJS.MD5($("#pwd").val()).toString() 
     }, 
     success: function(data){ 
      //console.log(data); 
      if(data == "duplicate"){ 
       $("#userErrorDiv").html("User already exists. Please enter another one").css("color","red"); 
       console.log("duplicate data"); 
      } 
      else{ 
       console.log("data not duplicate:"+data); 
      } 
     }, 
     error(err){ 
     console.log("error "+err); 
     } 
    }); 

Вот PHP часть: -

<?php 

    function recieveFormData() 
    { 
    if (isset($_POST['usr'], $_POST['pwd'])) { 
     global $connection; 
     global $username; 
     global $password; 
     $username = $_POST['usr']; 
     $password = $_POST['pwd']; 

    } 
    } 

    /*do insertion if username not found */ 
    function insertIntoTable($username, $password){ 
     global $connection; 
     $query="INSERT INTO users(username, password) VALUES('$username','$password')"; 
     $result=mysqli_query($connection,$query); 

     if(!$result){ 
      die("Sorry. Query failed to execute ".mysqli_error()); 
     } 

    } 

    function connectToDatabase(){ 
     global $connection,$username; 
     $connection=mysqli_connect("localhost","root","","usermanagement"); 
     if(!$connection){ 
      echo "Sorry! Cannot connect to the database"; 
     } 
    } 

    function readFromDatabase(){ 
     global $connection,$username; 
     $query="SELECT * from users where username='$username'"; 

     $result=mysqli_query($connection,$query); 
     if(!$result){ 
      die("query error"); 
     } 
     if(mysqli_num_rows($result)!=0) { 
      echo "duplicate"; 
      //return false; 
     } 
     else{ 
     while($row = mysqli_fetch_assoc($result)) { 
      $usernameFromTable=$row['username']; 
      // print_r($usernameFromTable); 
      echo "<tr><td>".$usernameFromTable."</td><td>User</td><td></td></tr>"; 
     } 
     } 
     //return true; 
    } 

recieveFormData(); 
connectToDatabase(); 
readFromDatabase(); 

?> 

И это простой HTML им с помощью: -

<label for="usr">Username</label> 
<input type="text" name="usr" id="usr"> 
<label for="pwd">Password</label> 
<input type="password" name="pwd" id="pwd"> 
<button id="create" class="create" type="submit" name="create">Create</button> 
<div id="userErrorDiv"></div> 
+2

[. Ваш скрипт находится в опасности для SQL Injection атак] (HTTP: //stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) Узнайте о [подготовленных] (http://en.wikipedia.org/wiki/Prepared_statement) утверждениях [для PDO ] (http://php.net/manual/en/pdo.prepared-statements.php) и [MySQLi] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) и подумайте об использовании PDO, [это действительно не сложно] (http://jayblanchard.net/demystifying_php_pdo.html). –

+1

Вы действительно должны использовать встроенные функции PHP (http://jayblanchard.net/proper_password_hashing_with_PHP.html) для защиты паролей. Если вы используете версию PHP менее 5.5, вы можете использовать 'password_hash()' [пакет совместимости] (https://github.com/ircmaxell/password_compat). –

+0

Вы просматривали запрос/ответ в консоли браузера? –

ответ

1

Чтобы сделать ответ более заметным, я добавляю его здесь.

Если после получения ответа из запроса Ajax, консоль записывает вашу вторит строку и сравнивая его с собой не работает, используйте $.trim():

...... 
// Ajax execution 
...... 
.success(function(response) { 
    response = $.trim(response); 
    if (response == 'expected response') { 
     // Do stuff.... 
    } 
}); 
+0

спасибо за такое четкое объяснение –

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