Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 04.01.2017
Сообщений: 46

Ошибка при редиректе

29.04.2017, 13:10. Показов 1729. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На компьютере ошибки нету, но на андроиде появляется ошибка в логах(31 раз):
PHP
1
[Sat Apr 29 12:52:37.821152 2017] [:error] [pid 3579] [client 192.168.1.100:45093] PHP Notice:  Undefined offset: 1 in /var/www/myte.pr/models/User.php on line 218, referer: http://192.168.1.111/user/exit
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public static function getUserDataFromCookie() {
 
      if (!isset($_SESSION['setings']['login_complete'])) {
        $_SESSION['setings']['login_complete'] = 0;
      }
 
      if (isset($_COOKIE['user']) && $_SESSION['setings']['login_complete'] == 0) {
        $cookie = explode("|:|", $_COOKIE['user']);
        $id     = $cookie[0];
        $hash   = $cookie[1]; //строка 218
 
        $_SESSION['setings']['login_complete'] = 1;
        $_SESSION['user'] = self::enter($id, $hash);
      }
 
      if (isset($_SESSION['user'])) {
        if (self::checkLoginExist($_SESSION['user']['login']) === false) {
          UserController::actionExit();
        }
      }
 
    }
UserController::actionExit() -- если тут убрать редирект, ошибки нету
PHP
1
2
3
4
5
6
7
8
9
public static function actionExit() {
 
        unset($_SESSION['user']);
        $_SESSION['setings']['login_complete'] = 0;
        setcookie('user', '', time() - 100, '/');
        header('Location: /user/enter');
        exit;
        
    }
ошибка говорит о том, что нету значения с индексом 1, но это не так, значение есть.
происходит такая ошибка только в UC Browser Android, в другом браузере на андроиде, как и на компьютере, нету ошибок
думаю, что ошибка в редиректе, поскольку когда я убрал редирект, ошибки нету
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.04.2017, 13:10
Ответы с готовыми решениями:

Вызов скрипта при редиректе
Здравствуйте. Есть сторонний сайт, который при запросе из адресной строки делает редирект на мой, указанный в параметрах вызова ури. ...

Передача данных при редиректе
Есть скрипт, который принимает данные из формы и вычисляет по формуле. Дальше происходит редирект на исходную страницу методом...

Удалить якорь из URL при редиректе
Приветствую! Есть страница 1.php, которая перенаправляет на 2.php:<? header('Location: 2.php', true, 303); ?>Как сделать, чтобы при...

17
97 / 47 / 17
Регистрация: 25.04.2017
Сообщений: 471
29.04.2017, 13:15
не силён в регуляркаx, но по-ходу там будет ошибка (в explode)
0
0 / 0 / 0
Регистрация: 04.01.2017
Сообщений: 46
29.04.2017, 13:20  [ТС]
Вилы Выкидные, нет, это не регулярка, просто разделитель, ошибки не будет)

Добавлено через 3 минуты
для ясности: я до этого создаю куку, и помещаю в неё данные:
PHP
1
2
$userData = [$userId, $userHash];
$userData = implode("|:|", $userData); //просто разделитель
0
97 / 47 / 17
Регистрация: 25.04.2017
Сообщений: 471
29.04.2017, 13:24
Цитата Сообщение от Hams Посмотреть сообщение
нет, это не регулярка, просто разделитель, ошибки не будет)
а | можно юзать в качестве разделителя? а то я же говорю, что не силён )
0
0 / 0 / 0
Регистрация: 04.01.2017
Сообщений: 46
29.04.2017, 13:28  [ТС]
Вилы Выкидные, разделитель тут сразу три символа - "|:|", к примеру, кука будет содержать "5|:|c4b05ad3925e7695f4118a06d3831bb 6", и после я смогу разделить по разделителю
а вообще вопросы не по теме...
0
97 / 47 / 17
Регистрация: 25.04.2017
Сообщений: 471
29.04.2017, 13:30
Цитата Сообщение от Hams Посмотреть сообщение
а вообще вопросы не по теме...
я это к тому, что допустимый ли это разделитель? (корректный ли)
0
0 / 0 / 0
Регистрация: 04.01.2017
Сообщений: 46
29.04.2017, 13:32  [ТС]
Вилы Выкидные, да, я же говорил, что на компьютере и другом браузере всё работает, да и я проверял разделяет ли он, выведя массив через print_r, и всё в порядке
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
29.04.2017, 13:45

Не по теме:

Цитата Сообщение от Hams Посмотреть сообщение
ошибка говорит о том, что нету значения с индексом 1, но это не так
1 правило - интерперетатор всегда прав
2 правило - если интерпретатор не прав смотри 1 правило



PHP
1
2
3
4
5
6
7
$cookie = explode("|:|", $_COOKIE['user'], 2);
if (count($cookie) !== 2) {
    ob_start();
    var_dump($_COOKIE['user']);
    throw new \Exception(sprintf('WTF! cookie[user] = "%s"'), ob_get_clean());
}
list($id, $hash) = $cookie;
1
0 / 0 / 0
Регистрация: 04.01.2017
Сообщений: 46
29.04.2017, 13:57  [ТС]
Jewbacabra, с ob_start, throw и Exiption я еще не сталкивался, и не особо понимаю что они делают, но я вставил ваш когд и вывелась ошибка(опять же только на Uc Browser, на компьютере всё в порядке):
PHP
1
2
3
4
Fatal error: Uncaught Error: Wrong parameters for Exception([string $message [, long $code [, Throwable $previous = NULL]]]) in /var/www/myte.pr/models/User.php:220 
Stack trace: #0 /var/www/myte.pr/models/User.php(220): Exception->__construct('', 'string(7) "dele...') 
#1 /var/www/myte.pr/index.php(19): User::getUserDataFromCookie() 
#2 {main} thrown in /var/www/myte.pr/models/User.php on line 220
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
29.04.2017, 14:02
Hams, моя ошибка, правильно так
PHP
1
throw new \Exception(sprintf('WTF! cookie[user] = "%s"', ob_get_clean()));
Цитата Сообщение от Hams Посмотреть сообщение
с ob_start, throw и Exiption я еще не сталкивался, и не особо понимаю что они делают
ob_start нужен, чтобы перехватить вывод вар дампа, а throw чтобы сгенерировать свое исключение.
1
97 / 47 / 17
Регистрация: 25.04.2017
Сообщений: 471
29.04.2017, 14:06
Цитата Сообщение от Hams Посмотреть сообщение
на компьютере и другом браузере всё работает
у меня как-то было, что с белки разавторизованному юзеру писалось местоположение главной страницы в то время, как в коде слежения местоположения было условие писать его, только если юзер авторизован, с других мобильных браузеров и с пк такого не было
0
0 / 0 / 0
Регистрация: 04.01.2017
Сообщений: 46
29.04.2017, 14:11  [ТС]
Jewbacabra, вывелось:
PHP
1
2
3
Fatal error: Uncaught Exception: WTF! cookie[user] = "string(7) "deleted" " in /var/www/myte.pr/models/User.php:220 
Stack trace: #0 /var/www/myte.pr/index.php(19): User::getUserDataFromCookie() 
#1 {main} thrown in /var/www/myte.pr/models/User.php on line 220
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
29.04.2017, 14:23
Цитата Сообщение от Hams Посмотреть сообщение
вывелось
В $_COOKIE['user'] нет "|:|", поэтому нет и $cookie[1], и поэтому ошибка
1
0 / 0 / 0
Регистрация: 04.01.2017
Сообщений: 46
29.04.2017, 14:42  [ТС]
Jewbacabra, вот я вывел созданную при входе в аккаунт куку " [user] => 31|:|9b82a0d299eab3d50eb0d6b549fc82ef ", т.е.
Цитата Сообщение от Jewbacabra Посмотреть сообщение
В $_COOKIE['user'] нет "|:|"
это не совсем так)
так же я вывел $cookie:
PHP
1
2
3
4
5
Array
(
  [0] => 31
  [1] => 9b82a0d299eab3d50eb0d6b549fc82ef
)
т.е. $cookie[1] есть
да и к тому же как объяснить, что это происходит только в одном браузере на android, а на компьютере нет?)

Добавлено через 5 минут
эти ошибки не возникают при входе, а только когда я перехожу по ссылке "myte.pr/user/exit"? т.е. UserController::actionExit()
тогда удаляются куки и сессии и происходит редирект

Добавлено через 1 минуту
PHP
1
2
3
4
5
6
7
public static function actionExit() {
unset($_SESSION['user']);
 $_SESSION['setings']['login_complete'] = 0;
 setcookie('user', '', time() - 100, '/');
 header('Location: /user/enter');
 exit;
}
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
29.04.2017, 14:50
Цитата Сообщение от Hams Посмотреть сообщение
это не совсем так)
Это именно так. В твоем предыдущем сообщении четко видно что в $_COOKIE['user'] находится значение deleted.
Возможно браузер некорректно работает и отправляет устаревшие куки.
1
97 / 47 / 17
Регистрация: 25.04.2017
Сообщений: 471
29.04.2017, 14:53
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Возможно браузер некорректно работает и отправляет устаревшие куки.
белка на андрюше через раз удаляет кэш и кукисы пока не сбросишь по умолчанию и не перезайдёшь после дополнительного удаления папки кэша вручную
1
0 / 0 / 0
Регистрация: 04.01.2017
Сообщений: 46
29.04.2017, 15:02  [ТС]
Jewbacabra, т.е. проблема в браузере и с кодом проблем нету?
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Возможно браузер некорректно работает и отправляет устаревшие куки.
это может объяснить почему в остальных всё работает

Добавлено через 57 секунд
Цитата Сообщение от Вилы Выкидные Посмотреть сообщение
белка на андрюше через раз удаляет кэш и кукисы пока не сбросишь по умолчанию и не перезайдёшь после дополнительного удаления папки кэша вручную
как и это) ну надеюсь проблема в этом, а не в другом)

Добавлено через 2 минуты
Но всё же интересно как сделать чтобы можно было выходить и на UC Browser. Ведь на других сайтах это работает корректно.
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
29.04.2017, 15:30
Цитата Сообщение от Hams Посмотреть сообщение
Но всё же интересно как сделать чтобы можно было выходить и на UC Browser.
На сервере контролировать время жизни хеша
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.04.2017, 15:30
Помогаю со студенческими работами здесь

Сессия при редиректе на другой домен действительно теряется?
Просто я проверяю сейчас на локалхосте такую последовательность действий: при нажатии кнопки сохраняем в сессию данные формы, делаем...

Странный баг при вводе формы и редиректе header после неё в chrome
В учебных целях пилю очередной велосипед типа "блог". Столкнулся с непонятным багом, который есть только в хроме. И только...

Как можно сделать так, чтобы при редиректе, заголовок HTTP_REFERER не передавался?
Имеется функция header ('Location: bla bla bla'); Как можно сделать так, чтобы при редиректе, заголовок HTTP_REFERER не передавался?

Ошибка при редиректе
Здравствуйте уважаемые форумчане. Возникла такая проблема: Если пользователь не авторизовался я хочу сделать редирект на страницу ошибки:...

Ошибка при редиректе .htaccess
При редиректе через .htaccess при 404 ошибке, выдает ошибку 500. Как исправить? .htaccess ErrorDocument 404 http://site.ru/


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru