Php 如何防止用户在登录时访问登录页面?

Php 如何防止用户在登录时访问登录页面?,php,Php,为什么即使我已经登录,我仍然可以访问我的登录页面?当我在url中键入login时,我希望它重定向到另一个页面,但它会将我带到登录页面。我在下面发布我的代码 代码: <?php session_start(); if(($_SESSION['SESS_FIRST_NAME'])) { header("location: appointment.php"); } ?> <?php include('header.php'); //Sta

为什么即使我已经登录,我仍然可以访问我的登录页面?当我在url中键入login时,我希望它重定向到另一个页面,但它会将我带到登录页面。我在下面发布我的代码

代码:

<?php
 session_start();
 if(($_SESSION['SESS_FIRST_NAME']))
 {
 header("location: appointment.php");
 }
 ?>
<?php include('header.php');            

    //Start session
    session_start();    
    //Unset the variables stored in session
    unset($_SESSION['SESS_MEMBER_ID']);
    unset($_SESSION['SESS_FIRST_NAME']);
    unset($_SESSION['SESS_LAST_NAME']);
    unset($_SESSION['SESS_SALT']);
?>

<div id="login" class="effect7">
<div class="modal-header">

<h3 class="text-center" style="color:#f5b401;">Welcome to Dr. Right</h3>
<p class="text-center" style="color:#f5b401;">Please Login</p>
</div>

<div class="modal-body">

    <form name="loginform" action="login_exec.php" method="POST">
    <table width="309" border="0" align="center" cellpadding="2" cellspacing="5">
      <tr>
        <td colspan="2">
         <!--the code bellow is used to display the message of the input validation-->
         <?php
             if( isset($_SESSION['ERRMSG_ARR']) && is_array($_SESSION['ERRMSG_ARR']) && count($_SESSION['ERRMSG_ARR']) >0 ) {
            echo '<ul class="err">';
            foreach($_SESSION['ERRMSG_ARR'] as $msg) {
                echo '<li>',$msg,'</li>'; 
                }
            echo '</ul>';
                unset($_SESSION['ERRMSG_ARR']);
            }
            ?>
    </td>
      </tr>
     <label>Email Address</label>
     <input name="username" type="email" class="form-control" placeholder="Email"/>

              <input id="salt" type="hidden" name="salt" value="<?php echo $saltresult;?>" class="form-control" placeholder="">
        <label>Password</label>
    <input name="password" type="password" name="password" class="form-control" placeholder="Password" required>
    <div align="right"></div>
    <input id="rid" type="hidden" name="recepid" value="<?php echo $rid;?>" class="form-control" placeholder="">

    </table>
    <input type="submit" name="login" value="Login" class="btn btn-primary" style="margin-left:6%;">
<div style=" margin-top:4%;">
    <a href ="register.php" target="_blank" style="margin-left:6%;">Don't have an Account? - Create Account</a>
    </div>
    </form>
    </div>
</div>
<div>   
   <?php
            if(($_SESSION['SESS_FIRST_NAME']))
    {
            header("location: appointment.php");
    }   
    ?>
<?php include('footer.php');?>
</div>
上面的代码是我登录时发生的。任何帮助都将不胜感激。谢谢

注意:我的登录文件名为index.php

代码:logout.php


需要在登录页面检查用户是否登录,例如

login page:
if($session->is_loggedin()) {
  redirect_to("index.php");
}

其中session对象包含用户id和检查session变量等的定义。

php手册说明

记住,在发送任何实际输出之前,必须调用header(),可以是通过普通HTML标记、文件中的空行,也可以是通过PHP。使用include或require函数或其他文件访问函数读取代码,并在调用header()之前输出空格或空行,这是非常常见的错误。使用单个PHP/HTML文件时也存在同样的问题

详情请参阅

解决方案: 请走开

 if(isset($_SESSION['SESS_FIRST_NAME']))
 {
     header("location: appointment.php");
 }

到顶部的php部分(即,在打印任何html内容之前)。

将其包含在登录页面中

if(($_SESSION['SESS_MEMBER_ID'])){
   header("location: pagenamewhere_you_want_to_redirect.php");
}

尝试调用会话_start();首先,在新页面中,如果您
var_dump
将会话转储到debug,您可能会更快地找到解决方案。您可以发布login.php文件的完整代码吗?@Ephoriagrogi
session_start()已包含在两个代码的顶部…您在顶部取消设置,那么如何将
$\u SESSION['SESS\u FIRST\u NAME']
计算为底部的
true
?如果用户已登录,则应重定向到约会页面。
$SESSION->is\u loggedin()
此变量和函数来自何处?我只是展示了登录检查的方法,没有告诉如何重定向。。。。。它很简单,只是添加评论页面而不是代替akhil,我把它移到了顶部它仍然不起作用Hello david。。您必须调用header()来打印任何html输出。你的标签从哪里开始?我已经编辑了我的代码。html代码存在于header.php中。我已将您的代码放在前面。请移动会话_start();就在if($_SESSION['SESS_FIRST_NAME'])行上方。@AkhilBalakrishnan我在编辑时加了一个右括号,请删除,我无法再编辑它,因为这只是一个字符的更改。嗨,Tariq,我刚刚尝试了你的代码,它仍然重定向到登录页面。那时肯定还有其他错误。检查您的session是否为空
Array([cid]=>44[cname]=>Test Hospital)
tgis是我得到的内容会话不是空的如果($\u session['cid']){mybe应该是这样的吗?或者我可以看到成功登录后创建会话的登录代码吗问题中有
if(($_SESSION['SESS_MEMBER_ID'])){
   header("location: pagenamewhere_you_want_to_redirect.php");
}