将数组添加到$ _SESSION

时间:2015-12-09 19:22:40

标签: php arrays session-variables

我有以下情况需要在$usuario$_SESSION中添加多个值。这是一种方法,但由于$user有太多字段,因此很麻烦。

$_SESSION['logado_ecse']    = true; 
$_SESSION['user']           = $usuario['login'];
$_SESSION['usuario_id']     = $usuario['id'];
$_SESSION['habilitada']     = $usuario['habilitada'];
$_SESSION['bloqueada']      = $usuario['desbloqueada'];
$_SESSION['administrador']  = $usuario['administrador'];
                ....
$_SESSION['auditor']        = $usuario['auditor'];

我一直在寻找一个更优雅的解决方案,在一行中我可以做同样的事情,但这个解决方案不能按预期工作。

$_SESSION = array_merge($usuario, $_SESSION);

变量$ usuario如下

echo gettype($usuario);
array

var_dump($usuario);
array (size=34)
  'id' => string '1' (length=1)
  0 => string '1' (length=1)
  'login' => string 'admin' (length=5)
  1 => string 'admin' (length=5)
  'auditor' => string '0' (length=1)
  2 => string '0' (length=1)

              ...
  'telefone2' => string '11' (length=2)
  14 => string '11' (length=2)

我喜欢@KV的解决方案,我想我会把它作为一个功能来实现。到目前为止,我的想法是$_SESSION是“用户”的容器,所以解决方案如

 $_SESSION['USER']=$usuario

会将用户的信息分成两部分

 $_SESSION['some_name']
 $_SESSION['USER']['some_name']

,更不用说我必须重新格式化代码的其他部分。

4 个答案:

答案 0 :(得分:3)

您可以将$usuario数组推送到$_SESSION数组,如下所示:

$_SESSION['user_details'] = $usuario;

之后您可以检索这样的用户详细信息:

echo $_SESSION['user_details']['login'];
echo $_SESSION['user_details']['id'];
echo $_SESSION['user_details']['habilitada'];
...
echo $_SESSION['user_details']['auditor'];

答案 1 :(得分:1)

foreach($usuario as $k => $user) if(is_string($k)) $_SESSION[$k] = $user;

答案 2 :(得分:0)

<?php
$_SESSION['user'] => Array(
'userid'=> '123',
'username'=> 'some_joe',
'role' => 'customer',
'website' => 'http://www.example.com'
);

// reading values from array
$userid = $_SESSION['user']['userid'];
$username = $_SESSION['user']['username'];
// etc. etc.

// adding values to array
$_SESSION['user']['something'] = "Foo";
$_SESSION['user']['somethingelse'] = $bar;

// Adding via function
Set_Session('user', array('var'=> 'value'));

// determine if session has started
Function HasSessionStarted() {

    $result = false; // default to false

    // Check if session has started
    IF ((session_status() == PHP_SESSION_NONE) || (session_id() == '')) { 
        $result = true; 
    }

    return $result;

}

// Set a session value
Function Set_Session($name, $value) {
    /* @params value: can be a string or an array */
    $new_session = HasSessionStarted(); // Check Session Status

    IF ((isset($name)) && (isset($value))) {
        IF ($new_session) { session_start(); }
        $_SESSION[$name] = $value;
        IF ($new_session) { session_write_close(); }
    }

}

Function Unset_Session($name) {

    $new_session = HasSessionStarted(); // Check Session Status

    IF (isset($_SESSION[$name])) {
        IF ($new_session) { session_start(); }
        unset($_SESSION[$name]);
        IF ($new_session) { session_write_close(); }
    }

}
?>

答案 3 :(得分:0)

只需将$ usuario分配给会话变量:

$ _ SESSION [&#39; user&#39;] = $ usuario;