PHP 和 WebView - Cookie 不一样



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

我的登录:

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

我的注销:

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

之后,我看到了登录页面。一切都是正常的。$ _cookie Array的print_r是:

Array
(
 [PHPSESSID] => e44ceefl92jvesh0kddmdicmv1
)

没有任何user_id。而且都是正确的。

但是如果我关闭Android WebView并重新打开此应用程序,那我就会登录!如果我打印cookie阵列,则为:

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

似乎Android WebView发送到服务器较旧的cookie数组。

请帮助!

也是我打印

cookieManager.getCookie("MyUrl");

我已删除了Logout

的User_id cookie

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

,也是将cookie值设置为登录时的0

如果这不起作用,则还将unset($_COOKIE['USER_ID']);添加到您的登录部分中,因此会这样;

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

我试图做这个OnPageFined

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

它似乎有效,但我不确定

无法设置cookie,因为 setCookie函数中的域参数中给出的名称与您的host

不匹配

在您的情况下它是空的:(

所以听!

(我的系统信息:使用Android Studio与Android Virtual Device Manager API 24用于测试WebView的MACOS

我的Android WebView URL:http:// 192.168.1.147 :8080/pfe

我的PHP代码: setcookie('CUSTOMER_ID','$id',time() + 24 * 86400 * $user_stay, "/",'localhost');

这是行不通的,因为我的Android WebView URL 与我的 setCookie域名不匹配

so 尝试具有cookie域名的名称,您的计算机IP地址


我已经使用了 Android WebView&php&mysql&Flutter

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

php sesssion shold的注销代码看起来像

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

最新更新