プロが教える店舗&オフィスのセキュリティ対策術

ttp://localhost/urltest.php?url=ttp://search.auctions.yahoo.co.jp/jp/search/auc?p=%A5%AC%A5%E4%A5%EB%A5%C9&auccat=0&alocale=0jp&acc=jp
上記のURLで
ttp://localhost/urltest.phpの
if(isset($_GET['url'])){
$itemsStr = ($_GET['url']);
}
print $itemsStr;
で受け取りたいのですが、
ttp://search.auctions.yahoo.co.jp/jp/search/auc?p=
までしか取得できません。
%A5%AC%A5%E4%A5%EB%A5%C9
の部分が取り出せないようです。%Aだけを受けとることはできるのですが、それ以上長くエンコードされた文字を受け取ろうとすると
ttp://search.auctions.yahoo.co.jp/jp/search/auc?p=
までしか受け取れません。
他のエンコードを含んだURLも同様でした。
記述したURLは頭のhを取っているので注意してください。省略されてしまうので。
php5.1.4です。
どなたか御存じの方いらっしゃいましたらご教授お願いします。

A 回答 (2件)

PHPというよりHTMLの書き方の問題ですね。



ttp://localhost/urltest.php?url=[URLエンコードした値]
にして下さい。

つまり、以下のようにリンクをはる必要があります。
<a href="ttp://localhost/urltest.php?url=ttp%3A%2F%2Fsearch.auctions.yahoo.co.jp%2Fjp%2Fsearch%2Fauc%3Fp%3D%25A5%25AC%25A5%25E4%25A5%25EB%25A5%25C9%26auccat%3D0%26alocale%3D0jp%26acc%3Djp">hogehoge</a>
    • good
    • 0
この回答へのお礼

エンコードをしたほうがいいのですね。ありがとうございます!
助かりました!

お礼日時:2006/11/21 03:23

質問者様が期待された動作をしないのは、



ttp://localhost/urltest.php?url=ttp://search.auctions.yahoo.co.jp/jp/search/auc?p=%A5%AC%A5%E4%A5%EB%A5%C9&auccat=0&alocale=0jp&acc=jp

この ?url=ほにゃらら の、ほにゃらら部分がエンコードされていないからではないかと思います。本来は、

"ttp://localhost/urltest.php?url=" . urlencode("ttp://search.auctions.yahoo.co.jp/jp/search/auc?p=%A5%AC%A5%E4%A5%EB%A5%C9&auccat=0&alocale=0jp&acc=jp")
つまり
ttp://localhost/aaa.php?url=ttp%3A%2F%2Fsearch.auctions.yahoo.co.jp%2Fjp%2Fsearch%2Fauc%3Fp%3D%25A5%25AC%25A5%25E4%25A5%25EB%25A5%25C9%26auccat%3D0%26alocale%3D0jp%26acc%3Djp
がちゃんとエンコードされたURLです。

結果、$_GET['url']には
ttp://search.auctions.yahoo.co.jp/jp/search/auc?p=%A5%AC%A5%E4%A5%EB%A5%C9&auccat=0&alocale=0jp&acc=jp
が格納されます
    • good
    • 0
この回答へのお礼

書いていただいた通りに処理したらいきました。ありがとうございます!
助かりました!

お礼日時:2006/11/21 03:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!