所以我一直试图从Scratch创建我的注册PhP但是我似乎遇到了一些麻烦。任何想法?
<?php
在session_start();
包括( '../的htdocs / connect.php');
如果(!空($ _ POST)){
$user = mysqli_real_escape_string($con, $_POST['username']);
$pass = mysqli_real_escape_string(md5(md5($con, $_POST['password'])));
$email = mysqli_real_escape_string($con, $_POST['email']);
$sql = "INSERT INTO users (ID, Username, Password, Email, Active)
VALUES ('','$user','$pass','$email','')";
$query = mysqli_query($sql);
if($query){
echo "You have Been Successfully Registered! Welcome to The Community";
}
else{
echo "I'm sorry. There was a problem with your registration. Please try again later or contact an admin.";
}
} 否则{
echo "Oops. Something Went wrong!";
}
&GT;
编辑:我根据您的建议编辑了代码。
但现在它回应说注册存在问题。
答案 0 :(得分:1)
将其更改为:
$sql = "INSERT INTO users (Username, Password, Email)
VALUES ('$user', '$pass', '$email')";
if(mysqli_query($sql)){
因为你没有执行它。
您的查询无法正常工作,因为您正在测试是否设置了查询字符串$sql
。
您要做的是运行实际查询;在这种情况下,如上所述将利用mysqli_query()
并检查响应。
基本上你说的是:
if('SQL STRING IS HERE') {
评估为TRUE
而不是实际运行insert查询以将数据添加到数据库中的表:
if(mysqli_query($sql)) {
作为Niels Keurentjes stated in the comments
:
另外,使用直接md5散列密码几乎不比 以纯文本格式存储。考虑使用password_hash
根据新代码发布编辑。
这意味着mysqli_query()
返回了false
。
您要做的是通过[**mysqli_error()
**] 3检查错误消息,如下所示:
if($sql) {
echo "Success......";
} else {
die(mysqli_error($con));
}
注意: 其中$con
是数据库连接。
然后回复其中的信息。
答案 1 :(得分:0)
include('../htdocs/connect.php');
可能是您的连接文件未正确包含。有什么警告吗?。
或您的查询可能有一些错误或拼写错误。确保它是正确的。
尝试在sql语句之前放置一个echo并复制查询并尝试在phpmhyadmin中运行它
像这样echo $sql = "INSERT INTO users (Username, Password, Email)
VALUES ('$user', '$pass', '$email')";
答案 2 :(得分:0)
mysqli_real_escape_string
您需要将数据库连接作为参数提供,例如:mysqli_real_escape_string($connection, $_POST['the_post']);