Mr.*_*ppy 2 php arrays session
我正在存储用户登录详细信息$_SESSION,现在我试图仅删除以密钥开头的会话fb_(这是 facebook 会话数据)。
Array
(
[sproperty] => for sale
[scommercial] => 0
[previousURL] => http://192.168.1.233/propio/public/assets/img/progress.gif
[fb_681840795262337_code] => AQDktd4q_QhpGKAYVyf6eKLtuWvwsc7c8ssXzmA0abvT4XhvAjy2ySTk969-HXSTyCNO0pWY0utwDixxBOpF6n6-YMrKed0wr2c3lBReY85CgH7rg06hqTHeJnv04uextP48m2v7D1se32ogqIfxbtsbmI8eX8xkoLugjCTljKwdCS9GYGkPCjOQyePoS_b62fV9Wfz7BH_70EAW2Y9TjjbmIyXYyTYBkhWQ9cUH9vGMYV9wnPda_v0jxQnb3p043qGQ4bT3DEb82Qohkvs_ktt1vepIf_859DrMgWKfT7B5WyDM9fFk4Azp_SfJc6_mjaoCcdIUmncQGNePJYS7-0lN
[fb_681840795262337_access_token] => CAAJsIW5lHYEBAKa7YSrgokZC9lS2ZCFBeRLzD5VhTONIJeG1hkPU1wfRAZAaIf29ofBtldeFeteZAs2z3Mz3nRCoJsw3AuZCZBEHWAnBrsZCV5crMgjUjebmTP3FzoOEG0o02u4bopI8OJgY3kKCXU5bTeeKfPQ6kNAyStl8ehlZCOIhcQgkZAIOfvoNTk62N5wsfZCxsswlPt7EX0IoZA0Gkd2
[fb_681840795262337_user_id] => 1375895206037186
[success] => Login successfully
)
Run Code Online (Sandbox Code Playgroud)
我创建了以下函数,只有当用户单击logout按钮时它才会调用。
public function logout(){
// Unset facebook session data
$readSession = $_SESSION;
foreach($readSession as $key => $value) {
if(preg_match('/fb_(.*)/s', $key)) {
unset($readSession[$key]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
在此函数中,我已写入unset code清除 facebook 键(名称以 开头fb_),但取消设置在我的数组中不起作用。我仍然从数组中获取所有键。
任何想法。为什么它不起作用或者我做错了什么?
谢谢。
问题是您没有直接修改$_SESSION数组。相反,您只是更改您创建的副本。只需从 中取消设置变量$_SESSION即可将其正确删除。
public function logout(){
// Unset facebook session data
foreach($_SESSION as $key => $value) {
if(preg_match('/fb_(.*)/s', $key)) {
unset($_SESSION[$key]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
此外,您不需要为此使用正则表达式。只需使用即可strpos获得相同的结果。'fb_'另外,这比在字符串开头查找的正则表达式效果更好,因为Rizier123 指出您忘记了字符串锚点的开头 ( ^)。
public function logout(){
// Unset facebook session data
foreach($_SESSION as $key => $value) {
if(strpos($key, 'fb_') === 0) {
unset($_SESSION[$key]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1038 次 |
| 最近记录: |