После введения логина и пароля выдается предупреждение:
Notice: Undefined offset: 5 in .../public_html/forum/include/lib.php on line 40
Warning: Cannot modify header information - headers already sent by (output started at .../public_html/forum/include/lib.php:40) in .../public_html/forum/loginout.php on line 64
При возврате на предыдущую страницу - всё нормально, пользователь авторизован и может работать.
Что делать?
1. сашакаша - 7 декабря 2013 — 18:04 - перейти к сообщению
2. - 7 декабря 2013 — 18:15 - перейти к сообщению
сашакаша пишет:
Что делать?
Как что? Не использовать сервер с PHP 5.4
Ну а если серьёзно, я в курсе про эту ошибку. Решения пока нет.
3. - 7 декабря 2013 — 20:44 - перейти к сообщению
Вообще говоря функция, рождающая данную ошибку очень любопытная.
Возникает ошибка из-за того, что размерность массива $rd[] всегда не выше четвертого индекса (по крайней мере я не смог смоделировать ситуацию, когда появлялся бы $rd[5]) Я конечно сейчас внесу проверку на размерность массива и ошибка уйдет. Однако мучает вопрос - нафига вообще эта функция нужна?
CODE:
function get_rd($sess_id = 0) // Advanced internal redirect by yura3d
{
$rd = (isset($_SESSION['rd']) && $_SESSION['rd'] != '') ? $_SESSION['rd'] : 'index.php';
if (!$sess_id) {return $rd;}
preg_match('#([^\?]+|)(\?([^\#]+)|)(\#(.*)|)#s', $rd, $rd);
if ($rd[3] === '') {$rd[3] = '?'._SESSION_ID;}
else {$rd[3] = $rd[2].'&'._SESSION_ID;}
if ($rd[5] !== '') {$rd[5] = $rd[4];}
return $rd = $rd[1].$rd[3].$rd[5];
}
{
$rd = (isset($_SESSION['rd']) && $_SESSION['rd'] != '') ? $_SESSION['rd'] : 'index.php';
if (!$sess_id) {return $rd;}
preg_match('#([^\?]+|)(\?([^\#]+)|)(\#(.*)|)#s', $rd, $rd);
if ($rd[3] === '') {$rd[3] = '?'._SESSION_ID;}
else {$rd[3] = $rd[2].'&'._SESSION_ID;}
if ($rd[5] !== '') {$rd[5] = $rd[4];}
return $rd = $rd[1].$rd[3].$rd[5];
}
Возникает ошибка из-за того, что размерность массива $rd[] всегда не выше четвертого индекса (по крайней мере я не смог смоделировать ситуацию, когда появлялся бы $rd[5]) Я конечно сейчас внесу проверку на размерность массива и ошибка уйдет. Однако мучает вопрос - нафига вообще эта функция нужна?
4. - 7 декабря 2013 — 20:59 - перейти к сообщению
Исправление...
Открываем файл lib.php
Ищем строку
которую заменяем строкой
Открываем файл lib.php
Ищем строку
CODE:
if ($rd[5] !== '') {$rd[5] = $rd[4];}
которую заменяем строкой
CODE:
$rd[5] = (count($rd) == 6 && $rd[5] !== '') ? $rd[4] : '';
5. сашакаша - 8 декабря 2013 — 15:41 - перейти к сообщению
Спасибо, исправил. Помогло.
Правда хостер заявляет php 5.5x
https://kubez.biz/techinfo.html
Тем не менее, удается авторизоваться без ошибок. Будем наблюдать.
Спасибо.
Правда хостер заявляет php 5.5x
https://kubez.biz/techinfo.html
Тем не менее, удается авторизоваться без ошибок. Будем наблюдать.
Спасибо.
6. deddedi - 19 июля 2016 — 14:23 - перейти к сообщению
У меня аналогичная ситуация проявляется на виртуальном серваке, я сделал так:
if ($rd[5] !== '' заменил на if ($rd[1] !== ''
и ошибка пропала. Допускаю, что решение я выбрал неверное.
if ($rd[5] !== '' заменил на if ($rd[1] !== ''
и ошибка пропала. Допускаю, что решение я выбрал неверное.