Returning a reference to a session variable from the eval() function in PHP

邮差的信 提交于 2020-01-06 15:43:21

问题


Do you know how to return a reference to a $_SESSION variable from the eval() function.

class SessionAccessor {
    static function &getVar() {
        return eval('return $_SESSION["sample"];');
    }
}

Error checking aside, here is the result I want:

$sample =& SessionAccessor::getVar();
$sample = 'new value'; // sets $_SESSION['sample'] to 'new value'

If you're wondering whether or not I need to use eval(), the answer is yes.


回答1:


class SessionAccessor {
    static function &getVar($str) {
        $arr =& $_SESSION;
        foreach(explode('/',$str) as $path){
            $arr =& $arr[$path];
        }
        return $arr;
    }
}

You just need to loop over the path you want to get from the array and keep updating a reference to it. Then return that reference.

DEMO: http://codepad.org/mUS26ZAG



来源:https://stackoverflow.com/questions/23919476/returning-a-reference-to-a-session-variable-from-the-eval-function-in-php

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!