2017-09-22 57 views
-2

有兩個變量(登錄名和密碼)通過ajaxphp通過POST方法。接下來,我需要從數據庫中獲取所有信息,以確定該名稱是否已經很忙。我試圖這樣做,但沒有任何反應。爲什麼? SQLsphpmyadmin沒有錯誤的錯誤。從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>

+0

您已經開放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

+0

此外,如果事情沒有按預期工作,請嘗試檢查[mysqli錯誤](http://php.net/manual/en/mysqli.error.php) – aynber

+0

另一件事:如果這是一個註冊表單,那麼你想確保用戶名不存在。現在,您正在檢查用戶名/密碼組合,該組合可以使用相同的用戶名但不同的密碼註冊多個用戶。在實際登錄時檢查用戶/通行證是最好的。 – aynber

回答

-1

在SELECT語句,你在那裏爲$ name子句有兩個等號。可能的問題。

我會建議審查你在做什麼,它的一部分是不好的做法,不建議。

+0

進行比較。這不是我的失望,在某種程度上您是正確的。但是,這並不包含上次查詢的失敗。 –

+0

我的回覆比原來的海報早3分鐘,包括插入語句失敗的評論。我只能根據我所知道的做出迴應。 – user3720435

+1

*「我只能根據我所知道的做出迴應。」* - 我明白了。那麼,你發佈的內容可能是低估的,因爲這個人可能認爲它更適合做評論,並且/或者沒有解決全部問題與失敗/未發生的事情。我不能爲downvoter說話,但這通常是基於我以往經驗的原因。 –

相關問題