1
<?php require_once('./includes/connection.php'); ?>
<?php require_once('./includes/sql_func.php');?>
<?php 
    if(isset($_POST['submit']))
    {
        $isValid = verify_account($_POST['username'],$_POST['password']);
        if($isValid){
            session_name($_POST['username']);
            session_start();
            $_SESSION['isLoggedIn'] = true;
            session_write_close();
            redirect_to("user_panel.php");

        }else{
            echo "Invalid Username and password";
        }
    }
?>
<?php require_once('./includes/header.php');?>

ユーザーが有効なユーザー名とパスワードを入力したと仮定すると、セッション変数が作成され、セッション配列に異なる値が格納されます。しかし、ユーザーを別のページにリダイレクトすると、

<?php require_once('./includes/connection.php'); ?>
<?php require_once('./includes/sql_func.php');?>
<?php 
    session_start();
?>
<?php require_once('./includes/header.php');?>
    <?php 
        if(isset($_SESSION['isLoggedIn'])){
            echo "Hello User";
        }
    ?>

<?php require_once('./includes/footer.php');?>

上記のコードのこの行

 isset($_SESSION['isLoggedIn'])

真と読まれていない?

4

1 に答える 1

1

最初のページでセッションを作成session_name($_POST['username']);し、2 番目のページで名前なしでセッションを開始します。これは基本的に、2 番目のページが最初のページとは異なるセッションを使用していることを意味します。

詳細については、PHP マニュアルを参照session_nameしてください。ただし、最も簡単な修正は、おそらくその行を完全に削除することです。

于 2012-07-26T03:51:44.050 に答える