[英]Success message after submit
嘿,现在我有这个,但当我只注册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');
}
}
?>
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)
会抛出一个未定义的变量错误,至少是你在问题中发布的错误。
问题在于:
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
密码而不是普通密码。
isset返回true / false。 你将boolean与1进行比较。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.