3

動作していない次のコードがあります。ITMS サービスが get 要求で URL を呼び出さないことを意味します。

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

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

4

2 に答える 2

6

この疑問符%3Fは予約文字であるため、URL エンコードする必要があります。@wroniasty が指摘したように、 as もエンコードする必要があり=ます%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

于 2012-04-26T15:56:23.630 に答える
1

URL 文字を手でエスケープしないでください。PHP 5 の関数 (urlencode()およびhttp_build_query()-) に面倒な作業を任せてください。これにより、GET パラメーターの名前と値のペアの一部に、送信する必要のある機密性の高い文字が含まれている可能性があるという問題が回避されます。

<?php
    $base_url = "http://www.example.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);
?>
于 2013-09-26T18:17:50.387 に答える