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;
?>

2番目の方法を使用してロードすると、空白のページが表示されます。ページソースを確認しても何も返されません。$ enteredurlをエコーすると、「https://bing.com/?q=ネクタイを結ぶ方法」が表示されます。「+」記号がなくなったようです。

さらに、http://localhost/load2.php?url = https://bing.com/?q=howの読み込みは正常に機能します。Webページが表示されます。

何が問題を引き起こしているのか誰か知っていますか?

ありがとう!

アップデート

これを達成するために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%2BtieencodeURIComponentJavaScript でこれを行うか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 に答える