0

我有两页:index.phpregister.php。如果用户是guest,他可以点击register.php-->转到该页面-->注册表格并登录。登录后,他被重定向到 index.php。现在,如果他/她尝试访问signup.php--> 他们会自动重定向到index.php. 我正在使用:

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

但是,我遇到了Cannot modify header information错误。index.php当和register.php是两个单独的页面时,我还能如何使代码重定向。

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;
}

就我个人而言,我需要再次检查,因为在您成功恢复密码后,我的表单会输出一条确认消息:

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 回答