Форма PHP - сообщение об успешной регистрации на новой странице

Я закодировал регистрационную форму, и после того, как каждый ввод был подтвержден, он отправляет некоторые данные в базу данных и перенаправляет на страницу входа.

Я хочу отобразить сообщение на странице входа в систему, например: Регистрация прошла успешно - войдите сюда

if (!validated() {
    // post error messages

} else {
    echo '
       <div class="container">
        <div class="page-header">
            <h3>Registration Complete</h3>
        </div>
       </div>';

    header( 'Location: ../login.php' );
}

Файл для входа:

Header - Navbar

<div class="container">
   <div class="page-header">
       <h3>Login To Members Corner</h3>
   </div>

   <form>
       // login form
   </form>

Footer

person John_Nil    schedule 09.02.2014    source источник


Ответы (2)


Вы не можете перенаправить в файл после отображения вывода. У вас есть два альтернативных решения:

  1. Обновите страницу по истечении времени ожидания, пока отображается сообщение, используя тег <meta>:

    <meta http-equiv="refresh" content="5; url=../login.php">
    
  2. Выведите сообщение после перенаправления:

    <?php 
    header('Location: ../login.php?registered=true');
    

    И в login.php:

    <?php
    if (@$_GET['registered'] == 'true')
        echo 'You have registered successfully.'
    
person casraf    schedule 09.02.2014
comment
Неужели isset() можно заменить @? - person Ari; 09.02.2014
comment
@ подавляет ошибки в выражении, к которому оно привязано, в этом случае @ подавляет любые ошибки, которые возникают из-за несуществующей переменной. Таким образом, он примерно эквивалентен isset($...) && $..., существенно отличается, но в данном случае обеспечивает то же использование. Но не переусердствуйте, это плохая практика. - person casraf; 09.02.2014
comment
Означает ли это, что лучше использовать isset(), чем подавлять предупреждение? - person Ari; 09.02.2014
comment
Если вы знаете, когда можно использовать @, тогда это не большая проблема, никогда не используйте его для подавления ошибок в функциях или включенных страницах, но если вам это нужно специально для таких вещей, как $ _GET, не существует или тому подобное, это нормально - просто рассуди - person casraf; 09.02.2014

Вы делаете header("Location") для перенаправления страницы. Это возможно, но вы хотите добавить параметр, с помощью которого вы можете определить, была ли регистрация успешной. Что-то вроде:

header( 'Location: ../login.php?action=success' );

И чем в вашем файле сделайте это:

if( $_GET['action'] == 'success' ) {
    echo "thanks for you registration, log in here";

}

Потому что, если вы перенаправляете, текущие переменные запроса не будут доступны на перенаправленной странице. Поэтому вам нужно передать их следующему.

person Niels    schedule 09.02.2014
comment
Спасибо, между вами нужно указать следующее: @ $ _ GET ['action'], иначе вы продолжите получать неопределенную ошибку при действии. - person John_Nil; 09.02.2014