为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
弑天下 2021-08-28 19:32:38
当用户登录时,从会话中检索数据的第一页就可以了。当我转到另一个页面时,会话是空白的。我发现当用户登录并获取第一个用户页面 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;                }            } 
查看完整描述

2 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

第一,如果用户输入的用户名和密码与 $_SESSION 的数据库记录匹配,您应该保存您想要进一步使用的用户凭据


include("..\includefiles\db.php");


$email =$_POST["email"];

$password = $_POST["password"];


$sql = "SELECT * FROM member WHERE email ='$email' AND password =  '$password'";

$result = mysqli_query ($con,$sql);

if($row = mysqli_fetch_array($result)){



 $_SESSION['ID'] = $row['id'];

 $_SESSION['NAME'] = $row['name'];

 $_SESSION['ROLE'] = $row['role'];


 if($_SESSION['ROLE']=='a'){


  header("Location: ..\dashBoard.php");

}else{

  header("Location: ..\index.php");

}

保存会话后,您所要做的就是开始会话


session_start()

每个页面的功能。请注意 session_start() 函数必须是文档中的第一件事。在任何 HTML 标记之前。然后检查会话的可用性,如果会话未设置重定向到登录页面。请参阅下面的代码。


<?php

    session_start();


   if(isset($_SESSION["ROLE"])){    


   }else{

           header("Location: login.php");

       }


   ?>   

      <!DOCTYPE html>

希望你能从中得到一些东西。


查看完整回答
反对 回复 2021-08-28
  • 2 回答
  • 0 关注
  • 186 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信