2014-02-19 6 views
0

Я проверяю свою форму с помощью jquery и после того, как форма оставлена ​​без ошибок, я хочу вставить данные в базу данных, но по некоторым причинам она работает неправильно. Можете ли вы помочь мне узнать мою ошибку. Спасибо,Проверка формы с использованием JQuery и PHP

JQuery является

$.post('register_user.php', 
        { 
        'name' : name, 
        'email' : email, 
        'password': password 
        }, 
        function(data) { 
          if(data == "success"){ 
           alert("success"); 
          } else if(data == "fail"){ 
           alert("fail"); 
          } 
        }); 

РНР

  $name = $_POST['name']; //else assign it a variabl 
     $email = $_POST['email']; 
     $password = $_POST['password']; 

    $sql = "SELECT email FROM users WHERE LOWER(email) = '" . $email . "'"; 
    $result = mysql_query($sql) or die("Could not get email: " . mysql_error()); 

    if(mysql_num_rows($result) > 0) { 
     //email is already taken 
    } 
    else { 
     $query = mysql_query("INSERT INTO `users` (`name`, `email`, `password`) VALUES ('$name', '$email', '$password')") or die(mysql_error()); 
     $result2 = mysql_result($query); 
     if((mysql_affected_rows($result2) ==1){ 
      echo 'success'; 
     } else { 
      echo 'fail'; 
      } 
    } 
+0

«он не работает должным образом» - недостаточно, объясните точную проблему (ы). – EkoostikMartin

+0

Извините, но запрос не вставляется в базу данных. Он выполнялся в течение одного или двух раз, но теперь он не вставляет данные в базу данных – user3293145

+0

Убедитесь, что вы также выполняете проверку в своем PHP-коде, иначе вы можете быть уязвимой le к SQL-инъекции. –

ответ

1

я не хватает респ еще комментариев, так что я должен поставить это в качестве ответа.

Шаг 1: Эхо (или распечатайте), что вы можете. Добавьте эхо в свою логику, например, где у вас есть: // уже принято письмо электронной почты Также отбросьте переменные POST.

Если все они выглядят хорошо, попробуйте повторить ваши запросы. Например. скопировать строку запроса, как:

$query = mysql_query("INSERT INTO `users` (`name`, `email`, `password`) VALUES ('$name', '$email', '$password')") 

Затем вставьте его и изменить его на:

echo "INSERT INTO `users` (`name`, `email`, `password`) VALUES ('$name', '$email', '$password')"; 

Тогда, если это выглядит плохо, это ваш запрос .. Вы, конечно, можете проверить вывод в MySQL напрямую через phpmyadmin или ssh на ваш сервер и запускать команды через консоль (если они дают вам доступ к оболочке)

Если вам удастся заставить это работать, как прокомментировали некоторые другие: mysqli или pdo должны быть вашими следующими шагами. Вам также необходимо сделать некоторые базовые вещи, хотя это позаботится об инъекции mysql.

Вы по-прежнему можете прибегать к XSS, а также просто вещи, подобные пробелам в конце письма (пользователи часто получают это, когда они копируют материал и вставляют его в формы).

Вы можете решить некоторые из них некоторых вспомогательных функций, которые вы делаете в PHP, как:

function cleanData($data) { 
    return strip_tags(trim($data)); 
} 

Это был очень простой образец со мной, вы можете также добавить другие параметры функции, как и кожух. Затем вы можете переключить корпус и сделать strtolower, strtoupper, ucwords (strtolower (и т. Д.). Затем вы можете просто обернуть переменные внутри функции :-)

Кстати, E-Mail Я бы проверял с помощью регулярных выражений. не позволяйте JS/клиентскому коду выполнять валидацию ввода, так как это очень легко манипулировать DOM или даже отправлять из альтернативного источника. Вы должны думать об этих данных как о «грязных», так как их легко манипулировать.