我正在编写一个PHP脚本(MyPHPScript),它接受一个URL并通过file_get_contents
下载该URL(称为TargetURL)。然后该脚本重写所有锚点<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
并下载该网址,并传递所有相关的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可能正在做一些特别的事情?
答案 0 :(得分:0)
传递这样的GET值是完全有效的,但是看起来该网站正在做一些聪明的东西用一些javascript来阻止这些重写。我怎么没有线索。对此给您带来的不便表示歉意。