Sam*_*Sam 1 php syntax if-statement operators
if (file_exists($cachefile) && (time() - $cachetime < filemtime($cachefile)) && $_SERVER['REQUEST_URI'] != "login" || "thankyou" || "confirm")
Run Code Online (Sandbox Code Playgroud)
如果这个代码有效,那么运算符是否明智且语法明智
这部分不会像你(可能)想要的那样工作:
$_SERVER['REQUEST_URI'] != "login" || "thankyou" || "confirm"
Run Code Online (Sandbox Code Playgroud)
首先,REQUEST_URI永远不会等于任何这些值 - 它至少会有一个额外的值/.如果您的脚本已命名test.php,则REQUEST_URI将至少包含/test.php(请参阅下面的其他内容).查看REQUEST_URI变量以了解它的结构.
此外,REQUEST_URI这里是危险的:它将包含任何其他查询字符串,因此可以通过向?name=valueURL 添加任意来混淆比较.
做一个phpinfo()比REQUEST_URI更合适的东西,例如SCRIPT_NAME.
其次,在比较完成之前,您正在执行的"或"操作将应用于值.
你可能想要这样的东西:
!in_array($_SERVER['SCRIPT_NAME'],
array("/login.php", "/thankyou.php", "/confirm.php"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |