2

提前原谅我,但我已经阅读了与此相关的所有主题,这个新手仍然很困惑。让我开始简要介绍一下我正在努力实现的目标……我创建了一个测验。由于我要添加排行榜,因此我要求用户创建用户名和密码或电子邮件地址,以便唯一。我已经设法使用 phpmysql 创建了注册和登录功能,这一切都在我的应用程序中运行良好。但是,我不希望用户每次打开应用程序时都必须登录,而是记住用户详细信息。我是否使用android sdk中的帐户管理器功能并废弃mysql?还是我应该只修改我已经拥有的?我什至需要使用 phpmysql 登录吗?我意识到我将不得不将它用于排行榜。任何帮助我指出正确方向的帮助将不胜感激。

干杯

4

2 回答 2

3

我们是一个会话系统,类似于您使用 cookie 的方式。

当android设备连接时,在PHP中:

  • 创建一个简单的“会话”变量。
  • 根据数据库中的会话变量记录电话签名
  • 将会话变量返回给 android。

在安卓中:

  • 将会话变量存储在手机的本地数据文件中。

对于后续调用:

  • Android 将会话变量(来自本地文件存储)与手机 ID 一起发送到 PHP
  • PHP 检查会话变量是否有效,检查电话签名是否匹配。如果他们这样做,你有相同的会话。如果它们不匹配,请创建一个新会话(并发送回手机)。

当用户“登录”时

  • 在 PHP 中存储 user_id 和他们已经登录会话变量的事实。
  • 然后,当从手机发送会话变量时,您无需交互即可知道 user_id。
  • 如果用户注销,只需将其记录在数据库中(从会话中取消链接 user_id)

由于文件存储是持久的,即使应用程序关闭,手机 ID 也不会改变,PHP 将始终知道连接中的用户是谁,即使在应用程序关闭后也是如此。

于 2012-07-27T00:30:25.560 回答
0

尽管 Robbies 的回答很棒,但至少在短期内,这听起来对您的应用程序来说有点矫枉过正。一个更简单的解决方案是在每个会话中使用 Shared Preferences 保存一个布尔值:

http://developer.android.com/guide/topics/data/data-storage.html#pref

Shared Preferences 存储会话之间的变量并且易于获取。在您的情况下,如果登录成功,您将保存一个布尔值 true。下次启动应用程序时,获取布尔值,如果为真,则不需要登录。如果没有这个变量或者设置为false(之前登录失败/用户注销),要求登录!

祝你好运

于 2012-07-27T02:22:16.027 回答