1

将 file_get_contents 与 $_GET 结合使用时出现问题。例如,我正在尝试使用 file_get_contents 加载以下页面:

https://bing.com/?q=how+to+tie+a+tie

如果我像这样加载它,页面加载正常:

http://localhost/load1.php

<?
echo file_get_contents("https://bing.com/?q=how+to+tie+a+tie");
?>

但是,当我像这样加载它时,我遇到了问题:

http://localhost/load2.php?url=https://bing.com/?q=how+to+tie+a+tie

<?
$enteredurl = $_GET["url"];
$page = file_get_contents($enteredurl);
echo $page;
?>

当我使用第二种方法加载时,我得到一个空白页。检查页面源不返回任何内容。当我回显 $enteredurl 时,我得到“https://bing.com/?q=how to tie a tie”。似乎“+”号消失了。

此外,加载http://localhost/load2.php?url=https://bing.com/?q=how工作正常。网页出现。

任何人都知道可能导致问题的原因是什么?

谢谢!

更新

尝试使用 urlencode() 来实现这一点。我有一个带有输入和提交字段的标准表单:

<form name="search" action="load2.php" method="post">
<input type="text" name="search" />
<input type="submit" value="Go!" />
</form>

然后更新 load2.php URL:

<?
$enteredurl = $_GET["url"];
$search = urlencode($_POST["search"]);
if(!empty($search)) {
echo '<script type="text/javascript">window.location="load2.php?url=https://bing.com/?q='.$search.'";</script>';
}
?>

代码在这里的某个地方被破坏了。$enteredurl 仍然返回与以前相同的值。(https://bing.com/?q=如何打领带)

4

1 回答 1

1

你必须正确编码你的参数http://localhost/load2.php?url=https://bing.com/?q=how+to+tie+a+tie应该是http://localhost/load2.php?urlhttps%3A%2F%2Fbing.com%2F%3Fq%3Dhow%2Bto%2Btie%2Ba%2Btie. 您可以encodeURIComponent在 JavaScript 中或urlencode在 php 中使用来执行此操作。


<?
$enteredurl = $_GET["url"];
$search = urlencode($_POST["search"]);
if(!empty($search)) {
    $url = urlencode('https://bing.com/?q='.$search)
    echo '<script type="text/javascript">window.location="load2.php?url='.$url.'";</script>';
}
?>
于 2013-01-10T19:12:08.173 回答