0

我创建了一个登录页面 login.php,当用户登录时,他们被重定向到 login-home.php,然后,

if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == true) {
echo "Welcome to the member's area, " . $_SESSION['username'] . "!";
} else {
echo "Please log in first to see this page.";
}

我得到请先登录。

为什么这实际上不会登录?

登录.php

 <?PHP
 error_reporting(9);

 require_once("./include/membersite_config.php");
 if(isset($_POST['submitted']))
 {
$users['admin'] = array('password' => 'admin', 'redirect' => 'admin.php');
$users[$username] = array('password' => $password, 'redirect' => 'login-home.php');

if(array_key_exists($_POST['username'],$users)) {
if($_POST['password'] == $users[$_POST['username']]['password']) {
    $_SESSION['loggedIn'] = true;
    header('Location:'.$users[$_POST['username']]['redirect']);
    exit();
 }
}
 if($fgmembersite->Login())
 {
    $fgmembersite->RedirectToURL("login-home.php");
 }
}
?>
4

1 回答 1

2

通过登录和使用会话,请确保您在使用varsession_start()的任何页面上使用。$_SESSION查看php session 手册以获取更多信息。

对于重定向,我不确定您是否对此有问题,但您需要确保在重定向之前没有任何内容写入浏览器。重定向之前的空行<?php甚至会导致重定向不起作用。任何类型的回声或打印也会导致这种情况。

更新

看到您的代码后,这表明您没有执行以下session_start() 查看代码:

 <?PHP
 session_start();
 error_reporting(9);

 require_once("./include/membersite_config.php");
 if(isset($_POST['submitted']))
 {
$users['admin'] = array('password' => 'admin', 'redirect' => 'admin.php');
$users[$username] = array('password' => $password, 'redirect' => 'login-home.php');

if(array_key_exists($_POST['username'],$users)) {
if($_POST['password'] == $users[$_POST['username']]['password']) {
    $_SESSION['loggedIn'] = true;
    header('Location:'.$users[$_POST['username']]['redirect']);
    exit();
 }
}
 if($fgmembersite->Login())
 {
    $fgmembersite->RedirectToURL("login-home.php");
 }
}
?>

然后在使用会话检查任何内容之前在您的 login-home.php 页面上,将session_start(). 用户注销后,您将需要执行以下操作

session_start();
session_unset();
header('Location:url/to/redirect/to');
于 2012-07-05T14:36:00.143 回答