感谢大家。html是好的,我相信javascript仍然是一个问题,php看起来不错,但我需要更多的指针。我已经编辑了我的代码如下…
html:<input name="uname" type="text" placeholder="please enter a user name" required><br />
<input name="upassword" type="text" placeholder="please enter a password or passphrase" required><br />
<input id="register" name="register" type="submit" class="btn btn-primary btn-lg outline" onclick="register();"/>
函数register() {
javascript$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "register.php",
data: { name: "uname", password: "password"},
success: function (result) {
alert("success");
}
});
}
我最大的问题是php
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
define('USER', 'root');
define('PASS', 'Schwinny2156!');
try {
$conn = new PDO("mysql:host=localhost;dbname=users;", USER, PASS);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare('INSERT INTO `users` (name, password VALUES (:name,:password)');
$stmt->bindParam(':name', $_POST['uname']);
$stmt->bindParam(':password', $_POST['upassword']);
$stmt->execute()
}
catch(PDOException $e)
{
echo $stmt . "<br>" . $e->getMessage();
}
$stmt = null;
我修复了任何看起来错误的地方,不确定是否遗漏了什么。
编辑:忘了说,查找password_hash并实现它。以明文形式存储密码是不可能的。
编辑2:添加密码散列功能,让您开始。使用password_verify在登录时验证密码。
<form onsubmit="return register(this);">
<input name="uname" type="text" placeholder="please enter a user name" required><br />
<input name="upassword" type="text" placeholder="please enter a password or passphrase" required><br />
<input id="register" name="register" type="submit" class="btn btn-primary btn-lg outline"/>
</form>
js
function register(form) {
$.post("register.php", $(form).serialize());
return false;
}
php <?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
define('USER', 'root');
define('PASS', 'password');
try {
$conn = new PDO("mysql:host=localhost;dbname=users;", USER, PASS);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
define('uname', $_POST['uname']);
$passwordHash = password_hash($_POST['upassword'], PASSWORD_DEFAULT);
define('upassword', $passwordHash);
$sql = 'INSERT INTO `users` (name , password) VALUES (?, ?)';
$conn->prepare($sql)->execute([uname, upassword]);
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>
您使用GET方法从jQuery $.get("register.php");
发送数据和您从PHP从POST访问数据。在jQuery中使用$.post("register.php");
或者在PHP中使用$_GET