У меня есть версия браузера моего веб-приложения, и у меня есть некоторые значения, хранящиеся в файлах cookie. Теперь я делаю мобильную версию, и кажется, что мои файлы cookie не работают. Можно ли использовать файлы cookie на мобильных устройствах?
Я пытаюсь выполнить этот код, и мой php дает мне пустое значение:
$(document).ready(function() { var session_lang= '<?php if(isset($_SESSION['SESS_LANGUAGE'])) echo $_SESSION['SESS_LANGUAGE'];?>'; if (session_lang!='') { check_and_change(session_lang); } });
Есть ли другой способ хранения данных во внутренней памяти, чтобы он мог работать как cookie? Поддерживает ли мобильные устройства переменные сеанса? Я смотрю на firebug, и я вижу, что я могу создать переменную сессии, но когда я хочу ее прочитать, она равна нулю. Что может быть проблемой и как ее решить?
EDIT: Я поставлю вам почти весь код, чтобы вы могли видеть, что я делаю … btw. этот код работает нормально в браузере ПК.
Javascript файл:
$(document).ready(function() { function languageChange() { var lang = $('#websites1 option:selected').val(); return lang; } $('#websites1').change(function(e) { var lang = languageChange(); var dataString = 'lang=' + lang; $.ajax({ type: "POST", url: "pass_value.php", data: dataString, dataType: 'json', cache: false, success: function(response) { check_and_change(response.message); } }); return false; }); } ); function check_and_change(lang) { switch (lang) { //do something } }
Тогда эта первая часть, которую я поставил выше, находится на фактическом сайте php, который я просматриваю и который открывается:
И последнее: pass_value.php:
<?php session_start(); $_SESSION['SESS_LANGUAGE'] = $_POST['lang']; print json_encode(array('message' => $_SESSION['SESS_LANGUAGE'])); die(); ?>
Я действительно не знаю, почему этот код не работает на мобильных телефонах.
Cookies определенно работают на мобильных браузерах. Вы говорите: «Я смотрю на firebug», что заставляет меня думать, что вы на самом деле не смотрите на него по телефону.
Вы начали сеанс и включили отчет об ошибках ?
У меня была аналогичная ситуация, и я обнаружил, что перед тем, как мой планшет назвал сценарий, указанный в параметре URL- .ajax( )
вызова .ajax( )
, он снова вызывал скрипт index.php
.
То же самое с моим телефоном. Поскольку я инициализировал свои переменные сеанса в index.php
, они все время возвращались к своим начальным значениям (что выглядело так, будто они не были правильно сохранены между страницами).
Я никогда не выяснял, почему index.php
получил повторный вызов, но я добавил, что if !isset( )
проверяет операторы инициализации и выясняет это.
На Android, включив «Data Saver», эффективно уничтожил сеанс. У меня есть сценарий входа в систему, который будет перенаправлен на предыдущую страницу при успешном входе в систему. Работал, пока я не включил Data Saver. Отключение его заставило его снова работать. Google заявляет, что Data Saver может влиять на защищенные страницы, которые, как я полагаю, включает мой скрипт, который не находится на веб-сайте HTTPS.