我知道这听起来有点愚蠢。但是我从github上下载了一个脚本并意识到它的一个表单提交实际上将表单输入引用到文件夹/目录而不是单个php文件。
我现在的问题是,如果是这样的话,这是否意味着文件夹中的所有脚本都能够获得我的$ _POST表单输入结果?
答案 0 :(得分:4)
其表单提交实际上将表单输入引用到文件夹/ dir
在HTTP URI中没有这样的东西。所有URI都将指向一个资源。由服务器决定如何响应该资源。
看起来像URI中的目录的东西可能映射到文件系统上的真实目录。 Web服务器通常会使用DirectoryIndex
指令之类的东西来使用默认文件。
它可能会映射到上面几个级别的文件,然后由以下内容处理:http://example.com/foo.php/bar/baz/
foo.php
从URI读取/bar/baz/
并对其执行操作。
它可能有一个显式映射(例如使用ScriptAlias
指令),在内部将其映射到另一个脚本。
它可能有一个编程映射(例如使用mod_rewrite),它使用正则表达式将其映射到其他东西(可能将'目录'分成不同的查询字符串参数)。
还有很多其他可能性。
我现在的问题是,如果是这样的话,这是否意味着文件夹中的所有脚本都能够获得我的$ _POST表单输入结果?
理论上,可以以这样的方式配置服务器:将POST请求传递到文件系统上的目录中的每个脚本,然后返回复合响应。我从未见过有人尝试过(或者想尝试过)。上述解释之一更有可能。
答案 1 :(得分:3)
假设你在谈论类似的事情:
<form method='post' action='some/directory'>
它希望Web服务器提供的文件作为目录索引(例如index.php
)接收表单帖子并处理输入。因此,您不是将表单发布到目录,而是将Web服务器在访问目录时执行的默认文件。
action=
标记的<form>
属性只需要是某个相对或绝对URI - 它不必指向实际的现有文件。由Web服务器根据目录索引规则,重写规则等确定要执行的脚本。