我有以下情况需要在$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']
,更不用说我必须重新格式化代码的其他部分。
答案 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;