提交后的成功消息

时间:2017-11-08 14:02:08

标签: php

嘿,现在我有这个,但是当我只注册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');

}

}

?>

3 个答案:

答案 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进行比较。