有兩個變量(登錄名和密碼)通過ajax
到php
通過POST
方法。接下來,我需要從數據庫中獲取所有信息,以確定該名稱是否已經很忙。我試圖這樣做,但沒有任何反應。爲什麼? SQLs
在phpmyadmin
沒有錯誤的錯誤。從php進入數據庫不起作用(SQL查詢沒有給出錯誤)
$connection = mysqli_connect('127.0.0.1', 'root', '', 'myDb');
if($connection == false)
{
echo 'Не удалось подключиться к базе данных!<br>';
echo mysqli_connect_error();
exit();
}
session_start();
$name = $_POST['user'];
$password = $_POST['pass'];
$_SESSION['user'] = $name;
$_SESSION['pass'] = $password;
if (!isset($name, $password) || empty($name) || empty($password)){
http_response_code(400);
die();
}
$count = mysqli_query($connection, "SELECT * FROM `users` WHERE(`Name` == '$name'");
if (mysqli_num_rows($count) == 0)
{
mysqli_query("INSERT INTO `users` (`Name`, `Password`) VALUES ('$name', '$password')");
}
mysqli_close($connection);
AJAX
$(document).ready(function() {
$('#submit').click(function() {
var name = $('#username').val();
var password = $('#password').val();
$.ajax({
type: 'POST',
url: 'php/login_script.php',
data: {
user: name,
pass: password
},
success: function() {
document.location = 'chat.html';
},
error: function() {
alert('Invalid name or password');
}
});
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
您已經開放SQL注入。由於您使用的是mysqli,請利用[prepared statements](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)和[bind_param](http://php.net/手動/ EN/mysqli的-stmt.bind-param.php)。 **這將處理可能發生的任何討厭的引用問題。**嚴重的是,第一個嘗試在他們的名字或密碼中使用撇號的人會破壞您的腳本。 – aynber
此外,如果事情沒有按預期工作,請嘗試檢查[mysqli錯誤](http://php.net/manual/en/mysqli.error.php) – aynber
另一件事:如果這是一個註冊表單,那麼你想確保用戶名不存在。現在,您正在檢查用戶名/密碼組合,該組合可以使用相同的用戶名但不同的密碼註冊多個用戶。在實際登錄時檢查用戶/通行證是最好的。 – aynber