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=ネクタイの結び方)