2012-04-26 7 views
3

次のコードは動作しません。 ITMSサービスはget requestでURLを呼び出しません。PHPでITMS urlでリクエストを送信するには?

header('Location: itms-services://?action=download-manifest&url=http://www.mysite.com/plistReader.php?id=123'); 

私がid=123を取り除くと、その動作が開始されます。しかし、私はIDを動的に保つためにこれを送る必要があります。セッションでも私は合格できません。助けてください。

+2

それぞれ%3F、および%3Dでエスケープしてみて、 '=' 'を?':URL =のhttp://www.mysite.com/plistReader.php%3Fid%3D123 – wroniasty

+0

おかげで... ..それは働いた..... – Varun

答えて

5

予約文字であるため、疑問符は%3FとURLエンコードする必要があります。 @ wroniastyが指摘しているように、=%3Dとエンコードする必要があります。

header('Location: itms-services://?action=download-manifest&url=http://www.mysite.com/plistReader.php%3Fid%3D123'); 

も参照してください:http://www.blooberry.com/indexdot/html/topics/urlencoding.htm

+0

ありがとうそれは働いた.....%34の場所でちょうど小さな修正を使用%3F – Varun

+0

@ヴァール、良いキャッチ。タイプミスが修正されました。 – Brad

0

手でURLの文字をエスケープすることはありません。 PHP 5の関数 - urlencode()、http_build_query() - をあなたのためにやってみましょう。これにより、GETパラメータの名前/値のペアの中に機密性の高い文字が含まれている場合があります。

<?php 
    $base_url = "http://www.mysite.com/plistReader.php"; 
    $data = Array("id" => 123, "dangerous" => ":?&= are some sensitive chars"); 

    $itms_url = "itms-services://?action=download-manifest&url=" . urlencode($base_url . "?" . http_build_query($data)); 
    header('Location: ' . $itms_url); 
?> 
関連する問題