php - 重定向已登录 PHP 的用户

标签 php

我想将登录的用户重定向到主页(member-index.php),我使用了以下代码来完成此操作,但这不起作用。

<?php

function redirect() {
header('location:member-index.php');
}
 ?> 
<?php session_start(); ?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
  <?php
  if(isset($_SESSION['SESS_FIRST_NAME'])){
   redirect();
  }
?> 

<form id="loginForm" name="loginForm" method="post" action="login-exec.php">
    <input name="email" type="text" class="textfield" id="login" placeholder="username" />
    <input name="password" type="password" class="textfield" id="password" placeholder="password"/>
    <input type="submit" name="Submit" value="LOGIN" />
</form>
</body>
</html>

(login-exec.php)的 session 变量

 $qry="SELECT * FROM members WHERE email='$login' AND passwd='".md5($_POST['password'])."'";
$result=mysql_query($qry);

//Check whether the query was successful or not
if($result) {
    if(mysql_num_rows($result) == 1) {
        //Login Successful
        session_regenerate_id();
        $member = mysql_fetch_assoc($result);
        $_SESSION['SESS_MEMBER_ID'] = $member['member_id'];
        $_SESSION['SESS_FIRST_NAME'] = $member['fullname'];

其他带有 session 的页面,工作得很好,我可以在另一个页面上获取并打印登录的用户,但无法在登录表单页面中获取 session 工作。 任何帮助将不胜感激!

最佳答案

我对错误报告感到惊讶 error_reporting(E_ALL); ini_set('display_errors', 1);没有向您发出有关在 header 之前输出的警告。

即:

Warning: session_start(): Cannot send session cache limiter - headers already sent...

移动您的 <?php session_start(); ?>在代码的顶部。

<?php session_start(); ?>

<?php
function redirect() {
header('location:member-index.php');
exit;
}
?>

并添加 exit;在 header 之后以避免进一步执行。

还要确保所有文件不包含字节顺序标记 (BOM),并且 header 之前没有输出。一个空格、HTML、什么都没有,甚至没有 cookie,或者任何其他可以作为输出的东西。

  • 所有文件都应以 UTF-8 不带 BOM 格式保存在代码编辑器中。

关于php - 重定向已登录 PHP 的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28568025/

相关文章:

php - 重命名获取的 mysql 然后编码为 JSON

php - FGETCSV 文档缺陷

php - 在 Windows 上使用正确的 API 版本编译 PHP 扩展

php - Pusher 和 Laravel 回显太慢或者我的代码有问题?

php - 使用 Laravel Installer 安装 Laravel 4.1

php - 我可以在 CodeIgniter 2.1 中 __destruct() 库对象吗?

php - 如何在没有内存耗尽的情况下导出具有数字格式的 100K 记录的 HTML 表格

php - 页面重定向与页面内容的配合并不完美

php - 为什么 'today' 在日期结束时返回额外的分钟数

保持旧变量的javascript