有没有办法简化这个案例陈述?
我有这个 PHP case 语句,
switch ($parts[count($parts) - 1]) {
case 'restaurant_pos':
include($_SERVER['DOCUMENT_ROOT'] . '/pages/restaurant_pos.php');
break;
case 'retail_pos':
include($_SERVER['DOCUMENT_ROOT'] . '/pages/retail_pos.php');
break;
.....
}
效果很好,但是我有很多很多文件(比如 190),我很想知道是否有一种方法可以使这个 case 语句适用于任何东西,这样我就不必执行 190 个 case 条件。我想我可以在这种情况下使用条件,也许看看该文件是否存在,如果存在则显示,如果不存在则可能是 404 页面,但我不确定执行此操作的好方法...任何想法都会有帮助很多
I have this PHP case statement
switch ($parts[count($parts) - 1]) {
case 'restaurant_pos':
include($_SERVER['DOCUMENT_ROOT'] . '/pages/restaurant_pos.php');
break;
case 'retail_pos':
include($_SERVER['DOCUMENT_ROOT'] . '/pages/retail_pos.php');
break;
.....
}
Which works great but I have many many files (like 190) and I would love to know if there is a way to make this case statement many work with anything so I dont have to do 190 case conditions. I was thinking I can use the condtion in the case and maybe see if that file is present and if so then display and if not then maybe a 404 page but i was not sure a good way to do this...any ideas would help alot
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

发布评论
评论(7)
检查该文件是否存在,然后包含它。
请注意,您必须验证 $page
的内容,以确保它不包含类似 /../../../../
的路径来尝试如果这是用户输入,则读取文件系统上的其他位置。
例如,如果您知道所有路径都是带有下划线的字母数字,您可以这样做:
$page = $parts[count($parts)] - 1;
if (preg_match('/^[A-Z0-9_]+$/i', $page)) {
// it's okay, so include it.
if (file_exists($_SERVER['DOCUMENT_ROOT'] . "/pages/$page.php") {
include($_SERVER['DOCUMENT_ROOT'] . "/pages/$page.php");
}
}
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
您可以在数组中预定义文件名,然后使用
in_array
来检查名称是否存在:You can predefine file names in an array and then use
in_array
in order to check name's existence: