0

I've two pages: index.php and register.php. If the user is guest, he can click on register.php-->go to that page-->register a form and login. Upon logging in, he is redirected to index.php. Now if he/she tries to access signup.php-->they are automatically redirected to index.php. I'm using:

<?php 
   if(!isset($_SESSION['id']))
   {
      //show the form
      ....
   }
   else
   {
      header("Location: index.php");
      exit;
   }
   ?>

How ever, I'm getting a Cannot modify header information error. How else can I make the code to redirect when index.php and register.php are two separate pages.

4

1 に答える 1

0

私がしていることは、ブロックしたいページの上部に含める check_logged.php という名前の別のファイルを作成することです。これが行うことは、これをページの上部に追加するかどうかを確認することです

session_start();
include('php/check_logged.php');

Check_logged.php には次のものが含まれます。

if (!empty($_SESSION['id'])) {
    header('Location: index.php');
    exit;
}

これでパスワードを正常に復元した後、私のフォームは確認メッセージを出力するため、個人的には2回目のチェックが必要でした:

if(!isset($_SESSION['good_message'])){ //check if a confirmation message is set, if no continue to check if the user is logged in.
    if (!empty($_SESSION['id'])) {
        header('Location: index.php');
        exit;
    }
}

この方法では、ログイン ページに戻って確認メッセージを表示したい場合、すぐにはリダイレクトされません。私は自分のメッセージを次のように表示する傾向があります。

<span class="error"> <?php 
    if( IsSet( $_SESSION[ "message_sent" ] ) )  {
            echo "<p align='center' style='color: #8BA870;';> " . $_SESSION[ "message_sent" ] . "</p>";
            unset( $_SESSION[ "message_sent" ] );
}?></span>

一度表示された後、設定が解除されます。そのため、ページを更新すると、値が「設定」されなくなり、ホームにリダイレクトされます。

于 2015-03-24T14:02:41.693 に答える