我正在编写一个 PHP 脚本(MyPHPScript),它接受一个 URL 并通过file_get_contents
. 然后该脚本重写所有锚点<a>
和所有表单动作 ( action=""
) 以便它们指向 MyPHPScript。
MyPHPScript 可能会遇到如下形式:
<form name="MYFORM" method="GET" action="http://www.TargetURL.com/index.php">
<input type="input" name="Username"/>
并将其重写如下:
<form name="MYFORM" method="GET" action="MyPHPScript.php">
<input type="hidden" name="OriginalAction" value="http://www.TargetURL.com/index.php"/>
<input type="input" name="Username"/>
</form>
全部处理完毕后,MyPHPScript 会输出 TargetURL 修改后的代码。如果我随后提交此表单,MyPHPScript 会检查 的GET
值OriginalAction
并下载该 URL,并将所有相关GET
值连同它一起传递。
这很好用,但是 TargetURL 上的一种特殊形式如下:
<form name="MYFORM" method="GET" action="http://www.TargetURL.com/search/">
<input type="input" name="SearchTerm"/>
MyPHPScript 将其重写如下:
<form name="MYFORM" method="GET" action="MyPHPScript.php">
<input type="hidden" name="OriginalAction" value="http://www.TargetURL.com/search/"/>
<input type="input" name="SearchTerm"/>
问题是当我提交此表单时,MYPHPScript 会尝试下载 URL
http://www.TargetURL.com/search/?SearchTerm=XYZ
但是,这是行不通的。由于我不控制 TargetURL.com,我只能猜测原因,但我收到错误消息,没有搜索结果表明它没有正确传递 GET。那么,当没有文件名时,我如何将 GET 值传递给 URI,或者上述 URI 是否有效并且 TargetURL.com 可能正在做一些特别的事情?