无法从PHP中的$\u会话检索数据

无法从PHP中的$\u会话检索数据,php,session,Php,Session,你好,我是PHP语言的初学者。我发现在PHP中很难从会话中获取/显示数据。我的登录页面工作正常,会话也被正确地传送到用户页面。但我没有得到数据,也没有错误 下面是我正常工作的登录页面脚本。我没有发布包含html元素的页面,因为我用下面的脚本在页面上使用了require\u一次,效果很好 <?php session_start(); require_once 'connection.php'; $err = array(); $errcnt = 0; if (!empty($_POS

你好,我是PHP语言的初学者。我发现在PHP中很难从会话中获取/显示数据。我的登录页面工作正常,会话也被正确地传送到用户页面。但我没有得到数据,也没有错误

下面是我正常工作的登录页面脚本。我没有发布包含html元素的页面,因为我用下面的脚本在页面上使用了
require\u一次
,效果很好

<?php  
session_start();
require_once 'connection.php';

$err = array();
$errcnt = 0;

if (!empty($_POST)) {
    if (empty($_POST['usermail'])) {
        $err['verifyerr'] = "Please insert email";
        $errcnt++; 
    }
    if (empty($_POST['password'])) {
        $err['passerr'] = "Please insert password";
        $errcnt++;
    }
    if (!empty($_POST['usermail'])) {
        $userquery = "SELECT * FROM studentdetails WHERE email = '".$_POST['usermail']."'";
        $userlookup = mysqli_query($connect, $userquery);
        $userfetch = mysqli_fetch_assoc($userlookup);

        if (empty($userfetch)) {
            $err['matcherr'] = "Invalid username";
            $errcnt++;
        }
        else {
            $passquery = "SELECT * FROM studentdetails WHERE email = '".$_POST['usermail']."' AND entrykey = '".md5($_POST['password'])."'";
            $passlookup = mysqli_query($connect, $passquery);
            $passfetch = mysqli_fetch_assoc($passlookup);

            if (empty($passfetch)) {
                $err['invalidpass'] = "Invalid password";
                $errcnt++;
            }
            else {
                $_SESSION['uid'] = $_POST['usermail'];
                header("Location: http://localhost/Examination/user.php");
            }
        }
    }
}
?>

因为您正在使用电子邮件地址设置
$\u会话['uid']
,然后尝试匹配
id=email

$query = "SELECT * FROM studentdetails WHERE id='".$_SESSION['uid']."'";
如果要分配电子邮件地址,则应尝试将select查询更改为(类似于):

或者分配用户id(
$\u SESSION['uid']=$userfetch['id']
),然后查询:

$query = "SELECT * FROM studentdetails WHERE id='".$_SESSION['uid']."'";
您看到的是
“All OK”
,因为没有错误,只是没有匹配的记录(因为查询可能不正确)


…当然,要确保自己不被注射

首先,您需要在
$\u会话
数组中分配数据。你已经做过了

$_SESSION['uid'] = $_POST['usermail'];  
在您的登录页面脚本中。
还要检查url。这两个(当前的和请求的一个)是否都是在同一协议上打开的,即
http://

那么解决方案是什么,先生?请注意,
md5()
不是加密。这是一个非常混乱的答案,导致OP无法接近任何解决方案。
$query = "SELECT * FROM studentdetails WHERE email='".$_SESSION['uid']."'";
$query = "SELECT * FROM studentdetails WHERE id='".$_SESSION['uid']."'";
$_SESSION['uid'] = $_POST['usermail'];