【发布时间】:2017-05-21 18:29:47
【问题描述】:
在我的一生中,我无法在不刷新的情况下获得 Ajax 请求来工作和提交我的 HTML 表单,我只是无法使用 Ajax。我希望我的表单在不刷新或重定向到另一个页面的情况下运行 register.php。理想情况下,我想在 div 或其他内容中添加“您已注册”消息,但现在我只希望我的表单无需刷新即可提交。
这是我的 HTML:
<!DOCTYPE HTML>
<html>
<head>
<title>Social Media</title>
<script src="jquery-3.1.1.min.js"></script>
<script src="register.js"></script>
</head>
<body>
<span id='messasge'></span>
<form id='register_form' method='post' action='register.php'>
First: <input type='text' name='first_name' maxlength='30' required='required'><br>
Last: <input type='text' name='last_name' maxlength='30' required='required'><br>
Email: <input type='text' name='email' maxlength='60' required='required'><br>
Password: <input type='password' name='password' maxlength='60' required='required'><br>
<input type='submit' id='register_user' name='register' value='Register'>
</form>
<br>
<form id='login_form' action='login.php'>
Email: <input type='text' name='email' maxlength='60' required='required'><br>
Password: <input type='password' name='password' maxlength='60' required='required'><br>
<input type='submit' name='login' value='Log In'>
</form>
</body>
</html>
这里 register.php 发送表单:
require_once 'connect.php';
// Salt for Hasing Password
$salt = '$kl._';
$pepper = 'l*&s';
// Sanative Input Completely
function sanitizeString($conn, $var) {
$var = stripslashes($var);
$var = strip_tags($var);
$var = htmlentities($var);
$var = $conn->real_escape_string($var);
return $var;
}
// Format Name w/ Only Capital First Letter
function formatName($var) {
$var = strtolower($var);
$var = ucwords($var);
return $var;
}
if(isset($_POST['register'])) {
$first_name = sanitizeString($conn, formatName($_POST['first_name']));
$last_name = sanitizeString($conn, formatName($_POST['last_name']));
$email = sanitizeString($conn, $_POST['email']);
$password = hash('ripemd128', $salt . $_POST['password'] . $pepper);
$stmt = $conn->prepare('INSERT INTO users (first_name, last_name, email, password)VALUES(?, ?, ?, ?)');
$stmt->bind_param('ssss', $first_name, $last_name, $email, $password);
$stmt->execute();
$stmt->close();
$conn->close();
}?>
JavaScript
$('#register_user').click(function() {
$.post( $("#register_form").attr("action"),
$("#register_form :input").serializeArray(), function(info) {
$("#message").html(info);
});
});
$("#register_user").submit(function() { return false; });
【问题讨论】:
-
你的 JavaScript/jQuery 在哪里?你有
preventDefault()或return false吗? -
请使用 PHP 的built-in functions 来处理密码安全问题。如果您使用的 PHP 版本低于 5.5,您可以使用
password_hash()compatibility pack。确保在散列之前 don't escape passwords 或对它们使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码。 -
不要在 cmets 中转储代码。编辑您的原始问题以包含任何新信息。
-
@jay 我不是在逃避我的密码吗?这也是我的 JS,不知道如何格式化: $('#register_user').click(function() { $.post( $("#register_form").attr("action"), $(" #register_form :input").serializeArray(), function(info) { $("#message").html(info); }); }); $("#register_user").submit(function() { return false; });
-
当你使用准备好的语句时,为什么要使用这个函数
sanitizeString()?
标签: php jquery mysql ajax forms