会话第一次不起作用,但第二次起作用

当用户登录时,从会话中检索数据的第一页就可以了。当我转到另一个页面时,会话是空白的。


我发现当用户登录并获取第一个用户页面 card.php 时,会话 ID 会发生变化。例如,在访问 subscription.php 时,无论出于何种原因,会话 ID 都不同。


我试图在下面列出有用的代码:


登录用户登录.php:


<?

    session_start();

    include('includingThis.php');


    unset($_SESSION["emaillogin"]);


    // Sørg for at e-mailen er undercased

    $email = addslashes($_POST[email]);

    $password = addslashes($_POST[pass]);



    if ($email == "" || $password == "") {

        header("Location: login.php?e=3");

        exit;

        die();

    }


    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {

        header("Location: login.php?e=4");

        exit;

        die();

    }




    $email = strtolower($email);



    // TJEK OM BRUGEREN FINDES

    if ($stmt = $con->prepare("SELECT email, pass, uid, profilepic, paid FROM stnd_users WHERE email=?")) {



                /* bind parameters for markers */

                $stmt->bind_param("s", $email);


                $stmt->execute(); 

                $stmt->bind_result($em, $pa, $u, $pp, $pai);


                    // Loop through each row in the result set

                    while ($stmt->fetch()) {

                        $gottenEmail = $em;

                        $gottenPass = $pa;

                        $uid = $u;

                        $profile_pic = $pp;

                        $paid = $pai;

                    }


                    $stmt->close();         

    }




    if ($gottenEmail == "" || $gottenPass == "") {

        header("Location: login.php?e=5");

        exit;

        die();

    }




    if (password_verify($password, $gottenPass)) {

        // BRUGER LOGGES IND


        // NÅR BRUGEREN FINDES, OG KODEN ER KORREKT

        if ($uid != "") {


            $_SESSION["user"] = $uid;


            if ($paid == "true") {


                // Bruger har betalt

                if ($profile_pic == "true") {

                    header("Location: user/card.php");

                    exit;

                } else {

                    header("Location: user/profilepic.php");

                    exit;

                }


            } 


弑天下
浏览 188回答 2
2回答

守着星空守着你

第一,如果用户输入的用户名和密码与 $_SESSION 的数据库记录匹配,您应该保存您想要进一步使用的用户凭据include("..\includefiles\db.php");$email =$_POST["email"];$password = $_POST["password"];$sql = "SELECT * FROM member WHERE email ='$email' AND password =&nbsp; '$password'";$result = mysqli_query ($con,$sql);if($row = mysqli_fetch_array($result)){&nbsp;$_SESSION['ID'] = $row['id'];&nbsp;$_SESSION['NAME'] = $row['name'];&nbsp;$_SESSION['ROLE'] = $row['role'];&nbsp;if($_SESSION['ROLE']=='a'){&nbsp; header("Location: ..\dashBoard.php");}else{&nbsp; header("Location: ..\index.php");}保存会话后,您所要做的就是开始会话session_start()每个页面的功能。请注意 session_start() 函数必须是文档中的第一件事。在任何 HTML 标记之前。然后检查会话的可用性,如果会话未设置重定向到登录页面。请参阅下面的代码。<?php&nbsp; &nbsp; session_start();&nbsp; &nbsp;if(isset($_SESSION["ROLE"])){&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}else{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;header("Location: login.php");&nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp;?>&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; <!DOCTYPE html>希望你能从中得到一些东西。
打开App,查看更多内容
随时随地看视频慕课网APP