0

我试图编写一个函数,当他们尝试访问索引(主页)页面时将用户重定向到他们的个人资料页面。我已经能够使用 POST 数据从登录表单成功完成此操作,但是无法以这种方式提取会话数据。Firefox 说服务器正在以一种永远不会完成的方式重定向。

这是我尝试过的,正如我在我的一般功能中所写的那样:

function logged_in_redirect() {
if (logged_in() === true) {
    header('Location: '.$_SESSION['username'].'');
  //header('Location: '.$user_data['username'].'');   *NEITHER LINE WORKS
    exit();
}
}

以及我添加重定向的索引页:

    <?php 
    include 'core/init.php';
    logged_in_redirect();
    include 'includes/overall/header.php'; 
    ?>        
    <h1>Home</h1>
    <p>Just a template.</p>

    <?php include 'includes/overall/footer.php'; ?>

继承人我的初始化包括:

    <?php
    ob_start();
    session_start();
    //error_reporting(0);

    require 'database/connect.php';
    require 'functions/general.php';
    require 'functions/users.php';

    if (logged_in() === true) {
        $session_user_id = $_SESSION['user_id'];
        $user_data = user_data($db, $session_user_id, 'user_id', 'username', 'password', 'first_name', 'last_name', 'email', 'stack_code');
        if (user_active($db, $user_data['username']) === false) {
          session_destroy();
          header('Location: index.php');
          exit();
        }
    }

    $errors = array();
    ?>

iv 修改了我的 .htaccess,关于配置文件 url 的所有其他内容都运行良好。今天只是这个重定向让我陷入困境。谢谢!

4

2 回答 2

0

好的,很简单,我只需要通过重定向函数在我的 init 中传递 $user_data 变量,并且当我调用该函数时:

function logged_in_redirect($user_data) {
if (logged_in() === true) {
    header('Location: '.$user_data['username'].''); 
    exit();
}

}

于 2013-08-20T21:00:21.863 回答
0

您必须检查访问的页面是否是您将用户移动到个人资料页面的索引页面。像这样:

$page = isset($_POST['page']) ? clear_get_tag($_POST['page']) : NULL;
        $session_user_id = $_SESSION['user_id'];
        $user_data = user_data($db, $session_user_id, 'user_id', 'username', 'password', 'first_name', 'last_name', 'email', 'stack_code');
switch($page){

case 'index':
case NULL:
if (logged_in() === true && !is_null($user_data) ) {
//call the redirect function here if the user is logged
}else{
// echo the index page
}
break;

case 'user':
echo 'user profile';
break;

default:
// Check if something else was called rather than defined pages, and returns the page depend on if the user is logged in.
if (logged_in() === true) {
header('Location: '.$user_data['username'].''); 
}else{
header('Location: index.php');
}
break;

}
于 2013-08-20T21:20:47.477 回答