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