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

ログインしてセッションを使用する場合は、変数を使用session_start()しているページで使用していることを確認してください$_SESSION。詳細については、php セッション マニュアルを参照してください。

リダイレクトでは、これに問題があるかどうかはわかりませんが、リダイレクトの前にブラウザーに何も書き込まれていないことを確認する必要があります。リダイレクトの前に空の行がある<?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 に答える