【问题标题】:PHP and WebView - Cookie doesn't are the samePHP 和 WebView - Cookie 不一样
【发布时间】:2019-07-25 16:49:07
【问题描述】:

我正在使用 WebView 来显示 Web 应用程序。 所有的作品,除了一件事:

我的登录:

setcookie("USER_ID", $my_id, time() + 86400);

我的退出:

setcookie("USER_ID", 0, time()-3600);
header('Location: ./index.php');

之后,我看到了登录页面。一切都很正常。 $_COOKIE 数组的 print_r 为:

Array
(
 [PHPSESSID] => e44ceefl92jvesh0kddmdicmv1
)

没有任何 USER_ID。都是正确的。

但是如果我关闭 Android Webview 并重新打开这个应用程序,我就神奇地登录了!如果我打印 cookie 数组,是:

Array
(
[USER_ID] => 1  // WTF?!?
[PHPSESSID] => e44ceefl92jvesh0kddmdicmv1
)

似乎 android webview 向服务器发送了一个较旧的 cookie 数组。

请帮忙!

--------------------------------编辑----

如果我打印也可以

cookieManager.getCookie("MyUrl");

我已经通过注销删除了 USER_ID cookie

【问题讨论】:

  • 为什么首先将用户 ID 存储在 cookie 中,为什么不存储在会话中?你是说你又得到了完全相同的会话 id 吗?
  • 我不明白。如果我在不注销的情况下关闭应用程序,它工作正常。并且是我想要的。如果我注销并关闭应用程序,然后重新启动应用程序,神奇的是我仍然登录。这就是问题
  • 不要设置这样的 cookie .. 看看我的答案。 stackoverflow.com/questions/52686044/…

标签: php android cookies webview logout


【解决方案1】:

我尝试在 PageFinished 上执行此操作

CookieManager.getInstance().cookieManager.flush();

它似乎有效,但我不确定

【讨论】:

    【解决方案2】:

    当你第一次设置cookie时尝试设置路径和域,当你删除它时,根据我的经验,这通常解决了cookie的很多问题。

    而且在注销时将 cookie 值设置为 0 只需将其设置为像这样的空字符串 ""

    如果这不起作用,那么还要在您的注销部分添加unset($_COOKIE['USER_ID']);,所以它会是这样的;

    setcookie("USER_ID", 0, time()-3600);
    unset($_COOKIE['USER_ID']);
    header('Location: ./index.php');
    

    【讨论】:

    • 未设置($_COOKIE['USER_ID']);仅适用于服务器端。它不会删除浏览器 cookie
    【解决方案3】:

    我没有看到您的代码,但我可以假设用户没有正确注销。

    php 会话的注销代码看起来像

    <?php
    session_start();
    session_destroy();
    
    // thats all
    // you can unset all php sessions if you wants
    ?>
    

    【讨论】:

    • 不是session的问题,因为当用户重新登录时,是因为cookies。 if($_COOKIE['USER_ID'] > 0) .....
    • 为什么不用 Session 而不是 cookie 来存储用户数据
    • 因为浏览器关闭时会话结束
    • 您需要的不是cookies,而是需要基于令牌的身份验证。您的 php 在用户登录时生成令牌的地方,该令牌将通过 json 调用并通过 LocalStorage 存储在客户端。您现在可以使用任何请求发送令牌,并且将在 php 后端执行验证。注销时,您需要清除本地存储,以便任何未经身份验证的用户在注销后都不允许登录。这可以很容易地在 Reactjs、Redux、Angularjs、Angular 和 Vue 上实现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 2018-06-23
    • 1970-01-01
    相关资源
    最近更新 更多