繁体   English   中英

提交后的成功消息

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM