Php 未存储会话

Php 未存储会话,php,Php,有人能告诉我怎么解决这个问题吗?我花了很多天寻找解决方案,但都找不到 这是我的问题 “login.php”文件: require_once("./include/membersite_config.php"); if(isset ($_POST['submitted'])) { if($fgmembersite->Login()) { $fgmembersite->RedirectToURL("login-home.php"); } } *

有人能告诉我怎么解决这个问题吗?我花了很多天寻找解决方案,但都找不到

这是我的问题

“login.php”文件:

require_once("./include/membersite_config.php");

if(isset ($_POST['submitted']))
{
    if($fgmembersite->Login())
    {
        $fgmembersite->RedirectToURL("login-home.php");
    }
}

**membersite_config . php ** contains host, username, pass, and also calls **fg_membersite . php ** which contains functions:

function Login()
{
    if(empty($_POST['username']))
    {
        $this->HandleError("UserName is empty!");
        return false;
    }

    if(empty($_POST['password']))
    {
        $this->HandleError("Password is empty!");
        return false;
    }

    $username = trim($_POST['username']);
    $password = trim($_POST['password']);

    if(!isset($_SESSION))
    {
        $sessid = session_start();
    }
    if(!$this->CheckLoginInDB($username, $password))
    {
        return false;
    }

    $_SESSION[$this->GetLoginSessionVar()] = $username;

    ** echo empty($_SESSION[$sessionvar])? 'true' : 'false'; **
    return true;
}

function CheckLogin()
{
    if(!isset($_SESSION))
    {
        session_start();
    }

    $sessionvar = $this->GetLoginSessionVar();
    ** echo empty($_SESSION[$sessionvar])? 'true' : 'false'; **

    if(empty($_SESSION[$sessionvar]))
    {
        return false;
    }

    return true;
}

function GetLoginSessionVar()
{
    $retvar = $this->rand_key;
    $retvar = 'usr_' . substr($retvar, 0);
    return $retvar;
}

function CheckLoginInDB($username, $password)
{
    if(!$this->DBLogin())
    {
        $this->HandleError("Database login failed!");
        return false;
    }
    $username = $this->SanitizeForSQL($username);
    $pwdmd5 = $password;
    $qry = "Select name, email from $this->tablename where username='$username' and password='$pwdmd5' and confirmcode='y'";

    $result = mysql_query($qry, $this->connection);

    if(!$result || mysql_num_rows($result) <= 0)
    {
        $this->HandleError("Error logging in. The username or password does not match");
        return false;
    }

    $row = mysql_fetch_assoc($result);

    $_SESSION['name_of_user'] = $row['name'];
    $_SESSION['email_of_user'] = $row['email'];

    return true;
}

**login - home . php ** after successfully logged in:

require_once("./include/membersite_config.php");

if(!$fgmembersite->CheckLogin())
{
    $fgmembersite->RedirectToURL("login.php");
    exit;
}
require_once(“./include/membersite_config.php”);
如果(isset($_POST['submitted']))
{
如果($fgmembersite->Login())
{
$fgmembersite->RedirectToURL(“login home.php”);
}
}
**membersite\u配置。php**包含主机、用户名、密码,还调用**fg_membersite。php**包含以下函数:
函数登录()
{
if(空($_POST['username']))
{
$this->HandleError(“用户名为空!”);
返回false;
}
if(空($_POST['password']))
{
$this->HandleError(“密码为空!”);
返回false;
}
$username=trim($_POST['username']);
$password=trim($_POST['password']);
如果(!isset($\会话))
{
$sessiond=session_start();
}
如果(!$this->CheckLoginInDB($username,$password))
{
返回false;
}
$\会话[$this->GetLoginSessionVar()]=$username;
**回显为空($_会话[$sessionvar])?“真”:“假”**
返回true;
}
函数CheckLogin()
{
如果(!isset($\会话))
{
会话_start();
}
$sessionvar=$this->GetLoginSessionVar();
**回显为空($_会话[$sessionvar])?“真”:“假”**
if(空($\会话[$sessionvar]))
{
返回false;
}
返回true;
}
函数GetLoginSessionVar()
{
$retvar=$this->rand\u键;
$retvar='usr_'.substr($retvar,0);
返回$retvar;
}
函数checkLoginDB($username,$password)
{
如果(!$this->DBLogin())
{
$this->HandleError(“数据库登录失败!”);
返回false;
}
$username=$this->SanitizeForSQL($username);
$pwdmd5=$password;
$qry=“选择名称,从$this->tablename发送电子邮件,其中username='$username'和password='$pwdmd5'和confirmcode='y';
$result=mysql\u查询($qry,$this->connection);
if(!$result | | mysql_num_rows($result)HandleError(“登录时出错。用户名或密码不匹配”);
返回false;
}
$row=mysql\u fetch\u assoc($result);
$\u会话['u用户的名称]=$row['name'];
$\会话['email\ of\ u user']=$row['email'];
返回true;
}
**成功登录后登录-home.php**
需要一次(“./include/membersite_config.php”);
如果(!$fgmembersite->CheckLogin())
{
$fgmembersite->RedirectToURL(“login.php”);
出口
}
问题是:我已经回显以检查$\u会话[]数组的状态。输入正确的用户名和密码后,回显为空($\u会话[$sessionvar])?“true”:“false”;登录函数中的显示false,但检查登录中的显示true。我不知道为什么。

会话_start()
通过添加cookie或查询参数来识别用户,从而启动或继续会话。您必须将其放在模板的最顶端(打印任何内容之前,即使是空行),即使用户已经有会话:

<?php
session_start();
?>

session\u start()
通过添加cookie或查询参数来标识用户来启动或继续会话。您必须将其放在模板的最顶端(打印任何内容之前,甚至是空行),即使用户已经有会话:

<?php
session_start();
?>


session\u start()
在打印HTML模板之前,应在页面顶部调用(无论是否有会话)。@Blender-您的评论可能是此问题的正确答案,为什么不将其作为答案发布?将print\r($\u session)与session\u start()一起使用由于用户2348272,saidI尝试在my login.php和login-home.php中添加session_start(),但没有解决问题。
session_start()
应该在页面的最顶端调用(无论是否存在会话),然后再打印HTML模板。@Blender-您的评论可能是此问题的正确答案,为什么不将其作为答案发布?当用户2348272 saidI尝试添加会话\u start()时,请将print\u r($\u SESSION)与会话\u start()一起使用在我的login.php和login-home.php上,但这并不能解决问题。我注意到他在session_start上设置了$sessiond,但我相信他想要session_id(),我试着将session_start()放入在fg_membersite.php的顶部,但它仍然是一样的。CheckLogin函数返回false,而Login函数返回true。我认为问题在于,当它转到CheckLogin()时,Login()中的$\u Session[]中的值为什么会消失。@user2348272:Session\u start()的确切位置是哪里结束?它在logout.php中结束,其中session\u unset()和session\u destroy()是调用。我尝试使用此试用代码来计算浏览量,我在三种不同的浏览器中打开了页面,在每种浏览器中打开了很多次,但浏览量始终为1。我不明白为什么。我注意到他在session_start中设置了$Sessiond,但我相信他想要session_id()我尝试过放置session_start()在fg_membersite.php的顶部,但它仍然是一样的。CheckLogin函数返回false,而Login函数返回true。我认为问题在于,当它转到CheckLogin()时,Login()中的$\u Session[]中的值为什么会消失。@user2348272:Session\u start()的确切位置是哪里最终结束?它将在logout.php中结束,其中调用了session\u unset()和session\u destroy()。我尝试使用此试用代码来计算浏览量,我在三种不同的浏览器中打开了页面,在每种浏览器中打开了很多次,但浏览量始终为1。我不明白为什么。