3

我有以下代码不起作用。表示 ITMS 服务不使用获取请求调用 URL。

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

如果我删除id=123它开始工作。但我需要发送这个以保持 id 动态。在会话中我也无法通过。请帮忙。

4

2 回答 2

6

您需要将该问号 URL 编码为%3F,因为它是保留字符。正如@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 回答