PHP 和 WebView - Cookie 不一样
PHP and WebView - Cookie doesn't are the same
我正在使用 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 网络视图并重新打开此应用程序,我会神奇地登录!如果我打印 cookie 数组,则为:
Array
(
[USER_ID] => 1 // WTF?!?
[PHPSESSID] => e44ceefl92jvesh0kddmdicmv1
)
似乎 android webview 向服务器发送了一个较旧的 cookie 数组。
请帮忙!
--------------------编辑----------------
如果我打印
cookieManager.getCookie("MyUrl");
有一个 USER_ID cookie,我已经通过注销删除了
我没有看到你的代码,但我可以假设用户没有正确注销。
php 会话的注销代码类似于
<?php
session_start();
session_destroy();
// thats all
// you can unset all php sessions if you wants
?>
尝试在首次设置 cookie 和删除 cookie 时设置路径和域,根据我的经验,这通常可以解决 cookie 的很多问题。
并且在注销时将 cookie 值设置为 0,只需将其设置为空字符串,如下所示“”
如果这不起作用,那么也将 unset($_COOKIE['USER_ID']);
添加到您的注销部分,所以它会像这样;
setcookie("USER_ID", 0, time()-3600);
unset($_COOKIE['USER_ID']);
header('Location: ./index.php');
我尝试在页面完成时执行此操作
CookieManager.getInstance().cookieManager.flush();
好像可以,但我不确定
无法设置 cookie,因为在 setcookie 函数 的域参数中给出的名称与您的主机不匹配
在你的情况下它是空的:(
那么听着!
(我的系统信息:macOS 使用 android studio 和 android 虚拟设备管理器 API 24 用于测试 WebView)
我的 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 域名不匹配
所以 尝试 使用与您的计算机 IP 地址相同的 COOKIE 域名
我已经使用了 ANDROID WEBVIEW & PHP & MYSQL & FLUTTER
我正在使用 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 网络视图并重新打开此应用程序,我会神奇地登录!如果我打印 cookie 数组,则为:
Array
(
[USER_ID] => 1 // WTF?!?
[PHPSESSID] => e44ceefl92jvesh0kddmdicmv1
)
似乎 android webview 向服务器发送了一个较旧的 cookie 数组。
请帮忙!
--------------------编辑----------------
如果我打印
cookieManager.getCookie("MyUrl");
有一个 USER_ID cookie,我已经通过注销删除了
我没有看到你的代码,但我可以假设用户没有正确注销。
php 会话的注销代码类似于
<?php
session_start();
session_destroy();
// thats all
// you can unset all php sessions if you wants
?>
尝试在首次设置 cookie 和删除 cookie 时设置路径和域,根据我的经验,这通常可以解决 cookie 的很多问题。
并且在注销时将 cookie 值设置为 0,只需将其设置为空字符串,如下所示“”
如果这不起作用,那么也将 unset($_COOKIE['USER_ID']);
添加到您的注销部分,所以它会像这样;
setcookie("USER_ID", 0, time()-3600);
unset($_COOKIE['USER_ID']);
header('Location: ./index.php');
我尝试在页面完成时执行此操作
CookieManager.getInstance().cookieManager.flush();
好像可以,但我不确定
无法设置 cookie,因为在 setcookie 函数 的域参数中给出的名称与您的主机不匹配
在你的情况下它是空的:(
那么听着!
(我的系统信息:macOS 使用 android studio 和 android 虚拟设备管理器 API 24 用于测试 WebView)
我的 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 域名不匹配
所以 尝试 使用与您的计算机 IP 地址相同的 COOKIE 域名
我已经使用了 ANDROID WEBVIEW & PHP & MYSQL & FLUTTER