无论你在 PHP 中回显什么,它都会作为 HTTP 响应被接收。我们已经在这篇文章中讨论了相同的内容。 sending a response from a php script to iOS,
我建议您根据要发送回 iPhone 的任何信息构建一组数据。然后使用 PHP 的 json_encode() 函数将数组转换为 json。这样可以避免发送不必要的数据。
更新:可以通过条件语句来实现。
方法一:直接使用PHP的代理检测功能检测请求是否来自iPhone。
function isIphone($user_agent=NULL) {
if(!isset($user_agent)) {
$user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
}
return (strpos($user_agent, 'iPhone') !== FALSE);
}
if(isIphone()) {
//the query is coming from iPhone, place your data you want to send back to iphone here
} else {
//query is not from iPhone, you can place rest of your code here
}
对于这种方法,您可以使用 javascript 来检测 iPhone,我建议您使用 PHP,因为如果有人禁用 javascript,那么它可能会导致您的代码出现意外行为,关于如何使用 Javascript 执行此操作,请查看以下内容链接(上面的例子取自同一个链接)。
Detect iPhone Browser
方法 2: 当您从 iPhone 查询时。发送一些 HTTP post 值,告诉 PHP 请求来自 iPhone。 IMO 最好使用 POST 然后 GET 因为有人可能会了解您的 URL 模式并可能会尝试调整它。您可以通过从 iPhone 发送另一个随机值并在服务器端检查它来解决此问题。
所以而不是这个
http://mysite.com?ua=iphone
你可以试试发这个
http://mysite.com?ua=iphone&ran=jkdkfjklj678
然后在 PHP 中你可以使用检查它
if(isset($_POST['ua']) && $_POST['ua'] == 'iPhone') {
//The request is coming from iPhone, make sure to check the random value too
} else {
//The request is not from iPhone, render the other page.
}
方法三:
为什么不简单地将请求从 iPhone 发送到另一个 PHP 脚本而不是同一页面?这样你就可以将两个逻辑分开,避免弄乱脚本。
例如。
对于 iPhone,你可以使用 iphone.php 和其余的 somepage.php ,对我来说这种方法更干净。