1
我想檢查用戶名是否存在於我的mysql數據庫中,如果存在,php端會檢查並回顯「重複」,然後應該由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 IM: -
<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>
[你的腳本是對SQL注入攻擊的風險(HTTP: //sackoverflow.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)。 –
你真的應該使用PHP的[內置函數](http://jayblanchard.net/proper_password_hashing_with_PHP.html)來處理密碼安全性。如果您使用的PHP版本低於5.5,則可以使用'password_hash()'[兼容包](https://github.com/ircmaxell/password_compat)。 –
您是否在瀏覽器的控制檯中觀看了請求/響應? –