【问题标题】:How to perform logging out in iPhone application?如何在 iPhone 应用程序中执行注销?
【发布时间】:2012-01-04 08:31:55
【问题描述】:

我对 PHP 一无所知,但在我的应用程序中,我需要实现用户登录和注销。我找到了这个nice tutorial 并成功实现了登录,但是我该如何注销呢?我只是在谷歌中找不到任何关于它的信息,尤其是关于 iPhone 方面的信息。 PHP 教程主要解释了很多关于会话的理论以及不适用于我的特定事件的东西。我很想花时间学习该理论,但我必须先学习 PHP 基础知识,而这不是我目前需要的。

我只需要了解实现注销的正确方法。

  1. 如果有人用通俗易懂的语言简短地向我解释登录和退出时 iPhone 应用程序和 php 脚本之间的标准交互机制,我将非常高兴。
  2. 这更重要。您能否提供几行 php 和 Objective-с 代码显示如何实现注销?

【问题讨论】:

  • 您到底需要什么?超时注销或用户活动注销?如果通过活动 - 不要认为这是一个问题,只需调用 URL,如果用户注销,这将是成功,如果不是,则错误。在 PHP 方面 - 只需通过 session_close() 取消设置 $_SESSION,如果您正在使用会话,如果使用 cookie - 然后只需通过 setcookie() 终止 cookie。如果超时 - 设置一个 cron 作业,只需说出您需要的内容,如果您需要,我会解释详细信息。
  • 这首先取决于您如何实现登录。我想是基于会话的?然后你只需要扔掉客户端上的cookie并销毁服务器上的会话。这是每个函数调用一次。
  • 快速提示,在 php 中使用 mysql_real_escape_string 来停止 sql 注入(不好!)例如。 $u = mysql_real_escape_string($_GET[‘username’]);$pw = mysql_real_escape_string($_GET[‘password’]);
  • 对不起,不是 session_close() - session_destroy()
  • devdRew 我需要按用户活动注销。能否请您详细解释一下“只需调用URL,如果用户退出则成功,否则会出错”,我无法理解

标签: php iphone objective-c login logout


【解决方案1】:

在我们的应用中,我们使用这个架构:

登录我会跳过(你已经完成)

当用户注销时,我们的应用程序调用一个 URL,这被认为是注销。例如:http://ourcoresyste.com/logout.php

很抱歉给您带来不便,但我不是iOS开发人员,所以我不知道应用程序是如何调用的,但我认为如果登录完成,您应该知道。

在脚本logout.php中:

<?php
    if (!isset($_SESSION))
    {
        exit(json_encode(array('code' => 0, 'message' => 'Logout successful')));
    }
    esle
    {
        $user = $_SESSION['user_id']; // suppose you have stored into $_SESSION['user_id'] logged in user;
        // Do some stuff while logout, maybe some DB interactions.
        if ($shit_happens)
        {
            exit(json_encode(array('code' => 1, 'message' => 'Shit happens')));
        }
        unset($_SESSION['user_id']); // or session_destroy(), if you want completly remove all information about user.
        exit(json_encode(array('code' => 0, 'message' => 'Logout successful')));
    }

在您的应用程序中,您解析 JSON 响应,这将是这样的:

{"code":0,"message":"Your detailed message"}

并通过从 JSON 响应中检索到的代码来决定用户是否已注销。如果是这样,下次调用任何依赖于 $_SESSION['user_id'] 的 PHP 脚本时,将失败,这可能意味着该用户已注销。

我想就是这样。

【讨论】:

  • 为什么还要点击注销?真的应该没有必要这样做。只需在设备上清除您需要清除的任何内容,例如存储的数据、存储的用户名和密码等。
  • 如果您使用 PHP 会话,会话存储在 SERVER 端,所以可能尽管您清除了设备上的所有内容,SERVER 仍会记住您。
  • 但是您不能依赖设备在注销期间击中您。如果用户删除了应用程序怎么办?或者如果他们恢复他们的设备怎么办?
  • 会话也有超时,所以如果你没有点击'注销',会话将在预定义的时间内自动销毁。
  • 没错。那么为什么要注销呢?我想这完全取决于你想要做什么。一般来说,尽管我认为 iOS 应用程序不需要使用注销 API。这也是一种非常奇怪的用户体验,必须能够访问 Internet 才能注销并且必须等待 HTTP 命中。
猜你喜欢
  • 2011-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-18
  • 2015-04-29
  • 1970-01-01
相关资源
最近更新 更多