0
我有这样的代码:AJAX不传递数据到PHP脚本?
<form id="login" name="login" class="login-form" action="./" method="post">
<h2>Log In</h2>
<div class="error" style="display:none"></div>
<input type="text" id="login-username" placeholder="Full Name" />
<input type="password" id="login-password" placeholder="Password" />
<button onclick="submitLogin();">Log In</button>
</form>
<script type="text/javascript">
$(".login").submit(function(ev){
ev.preventDefault();
});
function submitLogin() {
username = $(".login-username").val();
password = $(".login-password").val();
$.ajax({
type: "POST",
url: "login.php",
datatype: "string",
data: {'username' : username, 'password' : password},
.....
这是我的PHP脚本(login.php中):
<?php
session_start();
require_once 'config.php';
$uName = $_POST['username'];
$pWord = md5($_POST['password']);
$query = "SELECT id, username, password, email FROM users WHERE username = '$uName' AND password = '$pWord'";
$result = mysql_query($query) or die(mysql_error());
$numrows = mysql_num_rows($result);
$row = mysql_fetch_assoc($result);
if($numrows == 1) {
echo 'true';
$_SESSION['uName'] = $row['username'];
}
else {
echo 'false';
}
?>
当我尝试回声出$uName
或$pWord
其空。不知道发生了什么事。帮助会很棒。当我编辑一个正确的用户名和密码到$uName
和$pWord
到PHP ..说:$uName = kriiv;
,这是一个正确的用户名,它回声良好。因此,看起来数据不会通过AJAX调用传递。
更改你的元素' (“#login-password”)''和'(“.login-password”)''''为'因为你使用的是ID而不是类。 –
不要等到您的网站被黑客入侵。之前有人发布了一个关于他被类似代码黑客攻击的问题。您的代码非常容易发生SQL注入。使用[**'mysqli_' with prepared statements **](http://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php)或[** PDO **](http: //php.net/pdo)与[** prepared statements **](http://php.net/pdo.prepared-statements)。 –
另外,密码存储使用[** CRYPT_BLOWFISH **](http://security.stackexchange.com/q/36471)或PHP 5.5的['password_hash()'](http://www.php。 net/manual/en/function.password-hash.php)函数。对于PHP <5.5,使用['password_hash()兼容包]](https://github.com/ircmaxell/password_compat)。 MD5是旧的,被认为是坏的。 –