seb*_*ian 1 php string parsing codeigniter uploadify
我得到了一个以下格式的字符串:
a:5:{s:21:"securimage_code_value";s:4:"4l7z";s:6:"userID";s:2:"25";s:8:"username";s:6:"lupoxy";s:10:"angemeldet";s:4:"true";s:9:"user_role";s:3:"111";}
Run Code Online (Sandbox Code Playgroud)
我需要解析引号中的条目,并得到这样的数组:
$testarray[0]['key'] = "securimage_code_value";
$testarray[0]['value'] = "417z";
$testarray[1]['key'] = "userID";
$testarray[1]['value'] = "25";
Run Code Online (Sandbox Code Playgroud)
等等...
不,我不是试图破解任何会话;)我正在使用上传与Codeigniter,我需要验证,允许用户根据他的会话上传.我无法使用Codeigniter会话功能,因为Uploadify为Upload-PHP-Script创建了自己的会话.所以我将session_id作为Uploadify脚本数据传递,然后我在ci_sessions表中查找session_id,以自己解析所需的会话userdata.
也许有人知道更好的解决方案吗?;)
$params = unserialize($string);
$testarray = array();
foreach($params as $key => $value) {
$testarray[]= compact('key', 'value');
}
Run Code Online (Sandbox Code Playgroud)
请参阅反序列化文档.
UPDATE.您还可以sess_read()从system/libraries/Session.php 继承/ patch 以使其接受自定义会话ID:
之前:
function sess_read() {
...
// Unserialize the session array
$session = $this->_unserialize($session);
...
}
Run Code Online (Sandbox Code Playgroud)
后:
function sess_read($session_id = null) {
...
// Unserialize the session array
$session = $this->_unserialize($session);
if ($session_id) $session['session_id'] = $session_id;
...
}
Run Code Online (Sandbox Code Playgroud)
还记得sess_match_useragent = false在会话配置文件中设置,否则将拒绝来自Uploadify的请求,因为Flash的用户代理与broswer的用户代理不同.
现在您可以按ID加载任何会话:
$this->session->sess_read($custom_session_id)
Run Code Online (Sandbox Code Playgroud)
比手动解析数据库中的数据要少得多.
| 归档时间: |
|
| 查看次数: |
1362 次 |
| 最近记录: |