PHP и WebView - Cookie не совпадают - PullRequest
0 голосов
/ 04 марта 2019

Я использую WebView для показа веб-приложения.Все работает, кроме одной вещи:

Мой логин:

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

Мой выход:

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

, после этого я вижу страницу входа.И все нормально.Print_r массива $ _COOKIE:

Array
(
 [PHPSESSID] => e44ceefl92jvesh0kddmdicmv1
)

нет никакого USER_ID.и все правильно.

Но если я закрою Android Webview и снова открою это приложение , волшебным образом я вошел в систему!И если я распечатываю массив cookie, это:

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

, похоже, что веб-браузер Android отправляет на сервер более старый массив cookie.

Пожалуйста, помогите!

-------------------- редактировать ----------------

также, если я печатаю

cookieManager.getCookie("MyUrl");

, есть файл cookie USER_ID, который я удалил при выходе из системы

Ответы [ 3 ]

0 голосов
/ 04 марта 2019

Попробуйте установить путь и домен, когда вы впервые устанавливаете cookie и когда вы его удаляете, часто, по моему опыту, это решает много проблем с cookie.

А также вместо того, чтобы установить значение cookie в 0 при выходе из системыпросто установите пустую строку, например, такую ​​""

Если это не сработает, добавьте также unset($_COOKIE['USER_ID']); к вашей части выхода из системы, так что она будет выглядеть так:

setcookie("USER_ID", 0, time()-3600);
unset($_COOKIE['USER_ID']);
header('Location: ./index.php');
0 голосов
/ 04 марта 2019

Я пытался сделать это на PageFinished

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

, похоже, работает, но я не уверен

0 голосов
/ 04 марта 2019

Я не видел ваш код, но могу предположить, что пользователь не вышел из системы.

Код выхода из системы для php sesssion shold выглядит как

<?php
session_start();
session_destroy();

// thats all
// you can unset all php sessions if you wants
?>
...