-1

我正在编写一个 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 会检查 的GETOriginalAction并下载该 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 可能正在做一些特别的事情?

4

1 回答 1

0

像这样传递 GET 值是完全有效的,但似乎该站点正在使用一些 javascript 做一些聪明的事情来阻止这些重写。我怎么一点头绪都没有。对于给您带来的不便,我深表歉意。

于 2013-03-08T05:55:29.567 回答