我正在研究CMSimple 3.0框架中的代码,使用此行:
if (eregi('login.php', sv('PHP_SELF')))die('Access Denied');
因此,如果sc('PHP_SELF')
中存在字符“ login.php ”,则会显示“拒绝访问”。
我知道PHP_SELF
是正在运行的脚本的名称(即被调用页面的名称)。但经过一些研究后,我无法找到函数 sc 的作用。
知道为什么吗?
答案 0 :(得分:1)
您正在使用的CMSimple版本中的函数sv在cmsimple / cms.php的第190行中定义(您会注意到,这是唯一在直接调用时不会引发致命错误的脚本)。尽管文档中定义的定义很简短,但您会注意到sv做了两件事:
HTTP_SERVER_VARS数组包含诸如标题,路径和脚本位置之类的信息。您会在这些数组中找到一些熟悉的元素,例如; PHP_SELF(当前执行脚本的文件名),REMOTE_ADDR,QUERY_STRING和PHP_AUTH_USER。您将在此代码库中看到sv查询的所有变量。
您发布的代码
if (eregi('login.php', sv('PHP_SELF')))die('Access Denied');
正在将表达式'login.php'与正在执行的脚本的名称进行比较,如果匹配则退出并显示消息'Access Denied'。
答案 1 :(得分:0)
The documentation for CMSimple告诉我:
返回服务器变量$ name,如果已设置,则返回空字符串。