我希望通过将表单进程文件放在服务器根目录之外来保护它
但我不知道我怎么能访问它们...
这是我的尝试
的index.php
<form method = "post" action = "root_path/script.php?name=process_script.php"> ... </form>
的script.php
if($_SERVER['REQUEST_METHOD'] == 'GET' && !empty($_GET['name'])){
$script_name = strtolower($_GET['name']);
$process_path = 'process_path';
$file_name = "$process_path/$script_name";
if(file_exists($file_name)){
//Here i don't know what i have to do to return needed process file
exit();
}
}
答案 0 :(得分:1)
我不确定您是否要运行'process_script.php'或提供下载,所以这里有两种方法:
要将流程文件包含在脚本中,请使用:
require $file_name;
或者:
include $file_name;
如果文件不存在, require
会抛出致命错误,而include则不会。
如果您想提供此文件以供下载使用http://php.net/manual/en/function.readfile.php。
但是,请确保清理传递给$file_name = "$process_path/$script_name";
的输入,因为最终用户可以通过简单地传递不同的GET变量来运行/下载服务器上的任何文件。