【问题标题】:session is empty even i set values即使我设置了值,会话也是空的
【发布时间】:2017-03-11 12:55:22
【问题描述】:

首先我正在设置会话,但是当我 print_r() $_SESSION 它只显示 Array() 1

我确实在 session_start() 的两个文件上开始了会话;

我正在使用的功能:

function login($Username, $password, $pdo)
{


    $sth = $pdo->prepare("SELECT * FROM `klanten` WHERE Inlognaam='$Username'");
    $sth->execute();


if ($sth->rowCount() == 1)  // als er een row is met die username dan gaat hij verder
{

    // Variabelen inlezen uit query
    $row = $sth->fetch();
    $password = hash('sha512', $password . $row['Salt']); // encrypt het wachtwoord

    if ($row['Paswoord'] == $password) // als het wachtwoord gelijk is aan het ingevulde wachtwoord
    {

        $user_browser = $_SERVER['HTTP_USER_AGENT']; //  kijken welke browser je gebruikt

        $_SESSION['user_id'] = $row['KlantID'];
        $_SESSION['username'] = $row['Inlognaam'];
        $_SESSION['level'] = $row['Level'];
        $_SESSION['login_string'] = hash('sha512',$password . $user_browser);

        // Login successful.
        return true;
     } 
     else 
     {
        // password incorrect
        return false;
     }
}
else
{
    // username bestaat niet
    return false;
}
}

第 2 页

echo '<pre>' . print_r($_SESSION) . '</pre>';

仅返回Array()

【问题讨论】:

  • 两个文件中都有session_start函数吗?
  • 是的,我愿意。事实并非如此
  • 那么提供的代码是不够的。
  • 如信息中所述“我在做任何事情之前已经开始了会话”
  • 我在这里怀疑if ($row['Paswoord'] == $password) 你确定你会得到回报true 吗?

标签: php session session-variables


【解决方案1】:
**You might have not started the session.This worked for me**
<?php
    session_start();
    $_SESSION['user_id'] = $row['KlantID'];
    $_SESSION['username'] = $row['Inlognaam'];
    $_SESSION['level'] = $row['Level'];
    $_SESSION['login_string'] = hash('sha512',$password . $user_browser);

    echo '<pre>' . print_r($_SESSION,true) . '</pre>';
?>

【讨论】:

  • 如前所述,我已经开始了会话
  • 您可能已经在另一个文件中启动了会话...首先包含该文件......
  • 这不是一个完整的 php 文件。这只是我正在使用的一个功能
  • $sth = $pdo->prepare("SELECT * FROM klanten WHERE Inlognaam='$Username'");
  • 您只验证数据库中的用户名...可能有多个同名用户...请检查您的数据库表和行...
【解决方案2】:

方法print_r中的第二个参数是返回不打印,得到这样的打印使用,

echo '<pre>' . print_r($_SESSION) . '</pre>';

从这里获取更多详细信息:http://php.net/manual/en/function.print-r.php

【讨论】:

  • 这返回了 Array ( ) 1,没有别的了
猜你喜欢
  • 2012-05-18
  • 1970-01-01
  • 2014-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-02
相关资源
最近更新 更多