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)。 –
您是否在浏览器的控制台中观看了请求/响应? –