PHP将多个数组分配给$\u会话

PHP将多个数组分配给$\u会话,php,arrays,class,session,assign,Php,Arrays,Class,Session,Assign,设置会话时出现问题,设置会话时: $\u会话[“预定义变量”]=“某物” 它将记住会话变量,但是,当我执行以下操作时: $\u SESSION=$class->somearray; 它不会保存会话数组 我已经在网上搜索过了,并尝试了谷歌搜索的前几页: 当我执行打印($会话)或打印($l->details)时,输出与此类似; 这是脚本给我的输出(来自$\u会话和$l->details) 目前我有以下代码 login.c.php <?php if(!$required) die("Du ha

设置会话时出现问题,设置会话时: $\u会话[“预定义变量”]=“某物” 它将记住会话变量,但是,当我执行以下操作时: $\u SESSION=$class->somearray; 它不会保存会话数组

我已经在网上搜索过了,并尝试了谷歌搜索的前几页:

当我执行打印($会话)或打印($l->details)时,输出与此类似; 这是脚本给我的输出(来自$\u会话和$l->details)

目前我有以下代码

login.c.php

<?php
if(!$required) die("Du har ikke adgang til denne filen.");

class login {

    var $username, $password;
    var $details;
    var $salt = "SALTHIDDEN";
    var $error;
    var $justcheck;

    function onPost($username, $password, $justcheck = FALSE) {
        if($justcheck) $this->justcheck = $justcheck;
        if(!$username || !$password) die("Du må skrive inn både brukernavn og passord.");
        $this->username = htmlspecialchars(addslashes($username));
        $this->password = sha1(md5($this->salt . $password));
    }

    function checkDetails() {
        $query = mysql_query("SELECT * FROM users WHERE username = '".$this->username."' AND password = '".$this->password."' LIMIT 1");
        $num = mysql_num_rows($query);
        if($num > 0) {
            $this->details[1] = mysql_fetch_assoc($query);
            return TRUE;
        }
        else {
            $this->error[] = "Feil brukernavn eller passord.";
            return FALSE;
        }
    }

    function getEverything() {
        $this->details[2] = mysql_fetch_assoc(mysql_query("SELECT * FROM user_c WHERE id='".$this->details[1][id]."' LIMIT 1"));
        $this->details[3] = mysql_fetch_assoc(mysql_query("SELECT * FROM user_p WHERE id='".$this->details[1][id]."' LIMIT 1"));
        $this->details[4] = mysql_fetch_assoc(mysql_query("SELECT * FROM user_r WHERE id='".$this->details[1][id]."' LIMIT 1"));
        $this->details[5] = mysql_fetch_assoc(mysql_query("SELECT * FROM user_s WHERE id='".$this->details[1][id]."' LIMIT 1"));
        $this->details[6] = mysql_fetch_assoc(mysql_query("SELECT * FROM user_i WHERE id='".$this->details[1][id]."' LIMIT 1"));
    }
    function returnValue() {
        if($this->error) foreach($this->error as $e) echo "$e<br />";
        if(!$this->justcheck && !$this->error) die("<a href=\"#main\">Du er nå innlogget som $username<br />Klikk her hvis du ikke viderekobles til hovedkvarteret.</a><meta http-equiv=\"Refresh\" content=\"0; url=#main\">");
    }

}

您需要为会话变量指定一个名称。您尝试了以下操作:

 $_SESSION = $class->somearray
但您需要为阵列分配一个密钥:

$_SESSION['my_array'] = $class->somearray
而不是:

$_SESSION = $l->details;
试试这个:

foreach($l->details as $strKey => $strValue) {
    $_SESSION[ $strKey ] = $strValue;
}

要将数组存储到会话中,需要使用密钥绑定该数组


e、 g$\u会话['key']=$array\u变量

测试以命名会话$_SESSION['user_details']=$l->detailsThanks,当我看到来自Péde Leão的答案时,我就这么做了,它成功了:)啊,所以它不足以从数组中获取ID?不管怎样,谢谢你,成功了:D
$_SESSION = $l->details;
foreach($l->details as $strKey => $strValue) {
    $_SESSION[ $strKey ] = $strValue;
}