Не удается решить проблему на Joomla 1.5.23 (обновлена ранее 1.5.18 -> 1.5.22 -> 1.5.23):
"
Сбой подтверждения запроса сброса пароля по причине: неправильный символ (знак).."
--- 09.06.2011, 00:33:48 ---
Проблема решена своими силами.Крылась она в файле /components/com_user/controller.php
Его как оказалось просто не обновили раньше при проведении обновлений патчами Joomla (до 1.5.22 включительно).
---------------------------------
Вот конфигурация моего сервера и Joomla (обобщенная):
PHP/5.2.10
MySQL 5.1.41-log (сервер)/5.1.36(клиент) - MySQL-кодировка: UTF-8
Joomla 1.5.23 (обновлена: 1.5.18 -> 1.5.22 -> 1.5.23)
Включить SEO = Да
Использовать mod_rewrite = Да
GZIP-сжатие страниц = Нет
Включить SSL = Нет
Префикс базы данных = jos_
Авторизация = Joomla plugin
Язык = ru-RU
Шаблон свой (в нем нет /html/com_user/reset/confirm.php)
Мои исследования показали, что проблема осталась в той же функции, которую фиксили из-за данной проблемы в Joomla 1.5.23:
(файл
reset.php)
function confirmReset($token, $username)
...
// и именно в этой её части:
$db = &JFactory::getDBO();
$db->setQuery('SELECT id, activation FROM #__users WHERE block = 0 AND username = '.$db->Quote($username));
$row = $db->loadObject();
// Verify the token
if (!$row)
{
$this->setError(JText::_('INVALID_TOKEN'));
return false;
}
Получается, что
$db->loadObject(); не возвращает ничего, поэтому и фэйлится именно тут.
Я даже пробовал конкретного пользователя подставлять в запрос (того, которому пытался сбросить пароль):
$db->setQuery( 'SELECT id, activation FROM #__users WHERE block = 0 AND username = test1 );
или
$db->setQuery( "SELECT id, activation FROM #__users WHERE block = \'0\' AND username = \'test1\' " );
Но все равно фэйлится на проверке
if (!$row)Может кто сможет помочь, подсказать, где и что еще нужно проверить, чтобы исправить эту проблему?
Проблема решена своими силами.