嘿,现在我有这个,但是当我只注册index.php页面时就出现了。没有成功的消息。注册表完成后,我重定向到index.php?msg = 1,这在我看来是正确的吗?
<?php
if (isset($_GET['msg'] == 1)) {
echo "You have successfully registered.";
}
require_once('connect.php');
$errors = array();
if (isset($_POST['submit'])) {
if(empty($_POST['username'])){ array_push($errors, 'You did not submit a username'); }
$old_usn = mysqli_query($connect, "SELECT id FROM users WHERE name = '".htmlentities($_POST['username'], ENT_QUOTES)."' LIMIT 1;") or die(mysqli_error());
if (mysqli_num_rows($old_usn) > 0) { array_push($errors, 'This username is already registered.'); }
if (sizeof($errors) == 0) {
$username = htmlentities($_POST['username'], ENT_QUOTES);
$email = htmlentities($_POST['email'], ENT_QUOTES);
mysqli_query($connect, "INSERT INTO users (name, hashed_pw, email, joined)
VALUES ('{$username}', '{$password1}', '{$email}', NOW());") or die ($connection_error);
header('Location: index.php?msg=1');
}
}
?>
答案 0 :(得分:2)
if (isset($_GET['msg'] == 1))
这不是正确的方法,因为它始终被视为已设置。
您需要将这些条件分为两个条件。
如:
if (isset($_GET['msg']) && $_GET['msg'] == 1)
我强烈建议您使用预备语句和password_hash()
。
你现在拥有的,根本不安全。
如果您计划走这条路线(我希望您这样做),那么请仔细阅读这些手册 password_hash()
和password_verify()
:
注意:您似乎缺少$password1
的变量集,因此请确保它具有值,否则您的查询将失败。
此外,mysqli_error()
需要一个数据库连接参数。
mysqli_error($connect)
此行or die ($connection_error)
会向您抛出一个未定义的变量错误,至少是您在问题中发布的内容。
答案 1 :(得分:1)
问题在于:
if (isset($_GET['msg'] == 1)) { // These are two different conditions, you have to separate them by using &
将其更改为:
if ( isset($_GET['msg']) && $_GET['msg'] == 1 ) {
再试一次。
您的代码根本不安全,请使用预准备语句并存储hash
密码而不是普通密码。
答案 2 :(得分:-1)
isset返回true / false。你将布尔值与1进行比较。