使用JSON在iphone上获取网站数据

时间:2012-02-24 18:40:15

标签: php iphone json

我正在开发一个涉及使用网络服务器的iphone项目,我正在以JSON格式获取数据。我在mysql数据库中创建了一个表“login_info”,它将存储UserID,用户名和密码。在wesite上,我获得用户名和密码登录并显示信息页面。

确定在网站上登录后我得到了其他页面,但要在iphone中显示该信息页面的数据我必须将它们转换为json格式。我的问题是如何实现这一点,比如在网站上我应该获取信息页面和iphone,我应该在信息页面上获取值的json数组。

如果我在php中回显json数组,它只会将其转储到网页上以及网页上的其他详细信息。我在想,无论如何我可以在登录后使用UserID,在此UserID的基础上我可以获得其他网页的详细信息,如果我添加更多的网页。用户名和密码将仅用于登录目的,返回UserID以及稍后将使用该用户ID访问的数据。请指导我,因为我没有网络部分的经验,并试图学习。

1 个答案:

答案 0 :(得分:0)

无论你在PHP中回应什么,它都将作为HTTP响应接收。我们已经在这篇文章中讨论过相同的内容。 sending a response from a php script to iOS

我建议您根据要发送回iPhone的任何信息构建一系列数据。然后使用PHP的json_encode()函数将数组转换为json。通过这种方式,您可以避免发送不必要的数据。

更新:您可以通过使用条件语句来实现它。

方法1:使用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进行此操作看看下面的内容link(上面的例子来自同一个链接)。

Detect iPhone Browser

方法2:当您从iPhone查询时。发送一些HTTP post值告诉PHP该请求来自iPhone。 IMO最好使用POST然后GET,因为有人可能会了解您的网址格式,并可能会尝试调整它。您可以通过从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.
}

方法3: 为什么不简单地将请求从iPhone发送到另一个PHP脚本而不是同一页面?通过这种方式,您可以将逻辑分开并避免弄乱脚本。

例如,

。 对于iPhone,您可以使用iphone.php,其余为somepage.php,对我而言,这种方法更加清晰。