会话变量在 php 中为空

登录.php


    <?php

    ob_start();

    session_start();

    include '../config.php';

    if( (isset($_SESSION['can-id']) )) {

    header('location: ../home/profile.php');

    }

    if(isset($_POST['can-login']))

    {

        $email=$_POST['email'];

        $password=$_POST['password'];

    $sql="SELECT * FROM `user_credentials` WHERE `email`=:email AND `password`=:password";

    $pdoResult=$conn->prepare($sql);

    $pdoExec=$pdoResult->execute(array(":email"=>$email,":password"=>$password));

    $pdoResult->setFetchMode(PDO::FETCH_ASSOC);

    $count=0;

    $uid='';

    while ($r=$pdoResult->fetch()) {

      # code...

    $count+=1;

    $uid=$r['email'];

    }


    if ($count==1) {

      # code...

      $_SESSION['can-id']=$uid;

      header('location: ../home/profile.php');


    }

    else

    {

      $_SESSION['error']="login failed";

    }

    }

    ?>


<html>

....

</html>

配置文件.php


<?php

    ob_start();

    session_start();

    if (!(isset($_SESSION['can-id']))) {

        # code...

        header('location: ../login/');


    }

    else

    {

        $cid=$_SESSION['can-id'];

    }

?>

<h1 ><?php echo $cid;?></h1>

这是我在登录页面后的代码被重定向到 profile.php 页面但在配置文件页面会话变量没有打印我不知道为什么但每次登录时都没有出现这个问题它有时会发生所以我可以'找不到问题所在。任何人都知道请帮助我解决问题。


MM们
浏览 82回答 1
1回答

狐的传说

从你的 login.php 中删除 ob_start() 不要把 session_start() 放在你所有的文件中&nbsp;e.g login.php, profile.php, etc而是将其添加到您的 config.php 中,例如:<?php&nbsp;&nbsp;session_start();&nbsp;&nbsp;//.. config variables here然后,在您的 profile.php 中也包含 config.php。
打开App,查看更多内容
随时随地看视频慕课网APP