如何将GET值传递给只给出路径而没有页面的URL

时间:2013-03-08 04:52:59

标签: php get

我正在编写一个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会检查GETOriginalAction并下载该网址,并传递所有相关的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可能正在做一些特别的事情?

1 个答案:

答案 0 :(得分:0)

传递这样的GET值是完全有效的,但是看起来该网站正在做一些聪明的东西用一些javascript来阻止这些重写。我怎么没有线索。对此给您带来的不便表示歉意。