Успешное сообщение после отправки

Эй, теперь у меня есть это, но когда я регистрируюсь, появляется только страница 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

Решение

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) выдаст вам неопределенную переменную ошибку, по крайней мере, за то, что вы опубликовали в вопросе.

2

Другие решения

Вопрос здесь:

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 пароль вместо простого.

1

isset возвращает true / false. И вы сравниваете логическое с 1.

-1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector