(因此,我是一名高中生,因此不是最擅长使用术语的人,因此请尽最大努力指导而不是告诉您是否可以这样做)当使用插入将数据从网站上放入数据库时,它似乎起作用但数据库中没有任何内容,但没有错误代码。
我正在使用Mysqli,PHP和Wampserver运行本地服务器,并且网站不会将数据发送到数据库。
<?php
include 'connect.php';
include 'header.php';
?>
Sign Up<br>
<form method="post" action="">
Username: <input type="text" name="user_name"><br>
password: <input type="password" name="user_pass"><br>
password <Check: input type="password" name="user_pass_check"><br>
Email: <input type="text" name="user_email"><br>
<input type="submit" value="Register">
</form>
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$sql = "INSERT INTO users(user_name, user_pass, user_email) VALUES('".mysqli_real_escape_string($con, $_POST['user_name'])."', '".sha1($_POST['user_pass'])."', '".mysqli_real_escape_string($con, $_POST['user_email'])."', NOW(), 0)";
$result = mysqli_query($con, $sql);
if (!$result) {
echo 'Something went wrong';
echo mysqli_error($con);
} else {
echo "you have successfully registered. you can now <a href='signin.php'>sign in</a> and start posting";
}
}
}
include 'footer.php'?>
在我用于连接的文件中
<?php
$host = 'localhost';
$user = 'root';
$pass = '';
$dbname = 'seqevents';
$con = new mysqli($host, $user, $pass, $dbname) or die("cannot connect");
session_start();
if (!isset($_SESSION['user_level'])) {
$_SESSION['user_level'] = 0;
}
我没有收到任何错误消息,并且在网站上没有任何反应,它只是重新加载并摆脱了文本框中的任何输入。
答案 0 :(得分:1)
首先是(可能的)问题,然后是其他一些重要的指针:
插入时,您插入了3列设置(user_name,user_pass,user_email),然后向其中加载了5个值(NOW()
和0
),这些值都不是什么地方价值观。
请勿使用MD5 。如果您想“是的,但是我的网站不是很有趣,为什么要在乎”,请再次阅读此行。 请勿使用MD5 。或sha1:
从不以明文形式或使用MD5 / SHA1存储密码!仅存储密码散列。使用PHP的
password_hash()
和password_verify()
。如果您运行的PHP版本低于5.5(我确实希望不是),则可以使用password_compat库来获得相同的功能。 – Dharman
使用准备好的语句。 mysqli_real_escape_string是一个很好的第一步,但不够充分。准备好的语句为您保护查询。有点复杂,很多更安全。
我建议删除$_SERVER['REQUEST_METHOD'] === 'POST'
。如果页面上有两种形式怎么办?你被困住了。而是给您的“提交”按钮起一个类似submitRegForm
的名称。然后,您可以if( isset($_POST['submitRegForm']) )
请勿使用MD5或SHA1