Ошибка проверки введения кода катчи

например, при авторизации, отправке формы

#1 14 декабря 2014 в 22:07
Для примера — авторизация: неправильное введение логина/пароля -> повторное введение с каптчей -> сообщение об ошибке:
  1. Fatal error: Cannot use object of type __PHP_Incomplete_Class as array in /sata1/home/users/ukrsoc/www/isc.instantcms.com.ua/plugins/p_kcaptcha/plugin.php on line 81
Хост — виртуалка с РНР 5.3 на freehost.com.ua
На локалке (Денвер с тем же РНР 5.3) проблем нет.
Кто-то встречался? Как лечится? Спасибо!
p.s. на дефолтной установке проверял — то же
#2 15 декабря 2014 в 08:15
У меня было нечто подобное с капчой на my3space.ru. На денвере все работало, на этом хостинге — нет. Написал в саппорт, ответа не дождался, сменил хостинг, проблемы с капчой пропали…
#3 15 декабря 2014 в 10:53
Ответ поддержки хоста:

У Вас ошибка в коде сайта, вы используете объект в качестве массива

#4 15 декабря 2014 в 11:25
Может, я что-то не так понимаю, но в стандартном плагине plugins/p_kcaptcha/plugin.php строчка 81 выглядит так:
  1. if(!$captcha_id || empty($_SESSION['captcha'][$captcha_id]) || !$captcha_code) { return false; }
$captcha_id — это стринг
$captcha_code — это стринг
$_SESSION — суперглобальный массив.
где они тут увидели объект?
велика загадка сия есть.
#5 15 декабря 2014 в 11:46
Вычитал что $_SESSION доступна как глобальная переменная после PHP 4.1.0. Может в этом дело? Олег, поинтересуйся версией php.
Админка — Настройки — Информация PHP
#6 15 декабря 2014 в 12:23
пробовал и на 5.3 и на 5.4
#7 15 декабря 2014 в 12:35
а плагин p_kcaptcha точно включен?
#8 15 декабря 2014 в 12:50


а плагин p_kcaptcha точно включен?

Странник
Включён. Там точно на серваке что-то не так (на локалке нет проблем)
#9 15 декабря 2014 в 12:54
Значит, меняй хостинг. Что тут сделать, раз саппорт деревянный.
#10 15 декабря 2014 в 17:26
Гворят, что ноги проблемы здесь:
  1. mod_fcgid: stderr: PHP Fatal error: Cannot use object of type KCAPTCHA as array in /sata1/home/users/ukrsoc/www/isc.instantcms.com.ua/plugins/p_kcaptcha/codegen/cms_codegen.php on line 22
#11 15 декабря 2014 в 18:09
Олег, в этой строчке файла plugins/p_kcaptcha/codegen/cms_codegen.php
  1. $_SESSION['captcha'][$captcha_id] = $captcha->getKeyString();
действительно идет присвоение элементу массива данных из объекта $captchaиз класса KCAPTCHA
Но эти данные — стринг. Видимо, действительно из-за каких-то тонких настроек на одном сервере работает, а на другом клинит. Сегодня уже поздно, ты не возражаешь, если я завтра поковыряюсь?

Сделай на всякий случай резервную копию сайта и сними дамп с базы. Напиши в саппорт, пусть включат мне вывод ошибок в браузер (если не включено еще). И дай мне временный доступ по фтп. В личку или скайп.
#12 5 января 2015 в 15:23
Странник,
Здравствуйте, вы как то разрешили эту проблему с входом у Олега Васильевич я. У меня тоже самое — написал хостеру — жду ответа.
#13 7 января 2015 в 17:00
Кто нибудь разобрался в чем проблема? Посмотрел у себя, такая же фигня оказывается. Причем если вылетает эта ошибка, то сразу пропадает ссесия уже авторизованного пользователя, приходится заново логиниться…
#14 5 февраля 2015 в 15:13
Итак, решение данной проблемы.

Если у вас версия php начинается от 5.4.0., то дальше можете не читать.

Самое главное, если у вас на хостинге возникла подобная проблема, то убегайте с этого хостинга, да так, чтобы пятки сверкали. Аргументом можно давать ссылку на эту тему.

Вся суть проблемы заключается в том, что на хостинге включена директива Register_Globals. Ее выключение решает эту проблему.
Почему ее нужно отключать и какой вред она несет описано по ссылке.

Для тех, кто ничего не понял из вышесказанного и хочет продолжать сидеть на дырявом хостинге и с некомпетентными системными администраторами (а по другому тут, к сожалению, и не скажешь) накатывайте патч trac.instantcms.ru/changeset/1505

------------------
Пользуясь случаем так же хочу подчеркнуть, что есть еще директива Magic Quotes, которая так же бывает включена на деревянных хостинга и которую необходимо категорически отключать.

p.s. напишем об этом в системных требованиях, чтобы подобных проблем более не возникало.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.