我在Joomla网站的后端出现错误。当我输入用户名和密码时,我会看到以下错误:
注意:未定义的偏移量:第323行的/web/htdocs/www.namesite.it/home/libraries/joomla/input/input.php中的值为0
致命错误:在第33行的/web/htdocs/www.namesite.it/home/administrator/components/com_login/models/login.php中的非对象上调用成员函数get() >
如果我停用com_login
,则可以看到常规结构,但可以在后端输入...
这是文件administrator/components/com_login/models/login.php
<?php
/**
* @package Joomla.Administrator
* @subpackage com_login
*
* @copyright Copyright (C) 2005 - 2016 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
/**
* Login Model
*
* @since 1.5
*/
class LoginModelLogin extends JModelLegacy
{
/**
* Method to auto-populate the model state.
*
* Note. Calling getState in this method will result in recursion.
*
* @return void
*
* @since 1.6
*/
protected function populateState()
{
$input = JFactory::getApplication()->input->getInputForRequestMethod();
$credentials = array(
'username' => $input->get('username', '', 'USERNAME'),
'password' => $input->get('passwd', '', 'RAW'),
'secretkey' => $input->get('secretkey', '', 'RAW'),
);
$this->setState('credentials', $credentials);
// Check for return URL from the request first.
if ($return = $input->get('return', '', 'BASE64'))
{
$return = base64_decode($return);
if (!JUri::isInternal($return))
{
$return = '';
}
}
// Set the return URL if empty.
if (empty($return))
{
$return = 'index.php';
}
$this->setState('return', $return);
}
/**
* Get the administrator login module by name (real, eg 'login' or folder, eg 'mod_login').
*
* @param string $name The name of the module.
* @param string $title The title of the module, optional.
*
* @return object The Module object.
*
* @since 11.1
*/
public static function getLoginModule($name = 'mod_login', $title = null)
{
$result = null;
$modules = self::_load($name);
$total = count($modules);
for ($i = 0; $i < $total; $i++)
{
// Match the title if we're looking for a specific instance of the module.
if (!$title || $modules[$i]->title == $title)
{
$result = $modules[$i];
break;
}
}
// If we didn't find it, and the name is mod_something, create a dummy object.
if (is_null($result) && substr($name, 0, 4) == 'mod_')
{
$result = new stdClass;
$result->id = 0;
$result->title = '';
$result->module = $name;
$result->position = '';
$result->content = '';
$result->showtitle = 0;
$result->control = '';
$result->params = '';
$result->user = 0;
}
return $result;
}
/**
* Load login modules.
*
* Note that we load regardless of state or access level since access
* for public is the only thing that makes sense since users are not logged in
* and the module lets them log in.
* This is put in as a failsafe to avoid super user lock out caused by an unpublished
* login module or by a module set to have a viewing access level that is not Public.
*
* @param string $module The name of the module.
*
* @return array
*
* @since 11.1
*/
protected static function _load($module)
{
static $clean;
if (isset($clean))
{
return $clean;
}
$app = JFactory::getApplication();
$lang = JFactory::getLanguage()->getTag();
$clientId = (int) $app->getClientId();
$cache = JFactory::getCache('com_modules', '');
$cacheid = md5(serialize(array($clientId, $lang)));
$loginmodule = array();
if (!($clean = $cache->get($cacheid)))
{
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select('m.id, m.title, m.module, m.position, m.showtitle, m.params')
->from('#__modules AS m')
->where('m.module =' . $db->quote($module) . ' AND m.client_id = 1')
->join('LEFT', '#__extensions AS e ON e.element = m.module AND e.client_id = m.client_id')
->where('e.enabled = 1');
// Filter by language.
if ($app->isSite() && $app->getLanguageFilter())
{
$query->where('m.language IN (' . $db->quote($lang) . ',' . $db->quote('*') . ')');
}
$query->order('m.position, m.ordering');
// Set the query.
$db->setQuery($query);
try
{
$modules = $db->loadObjectList();
}
catch (RuntimeException $e)
{
JError::raiseWarning(500, JText::sprintf('JLIB_APPLICATION_ERROR_MODULE_LOAD', $e->getMessage()));
return $loginmodule;
}
// Return to simple indexing that matches the query order.
$loginmodule = $modules;
$cache->store($loginmodule, $cacheid);
}
return $loginmodule;
}
}
我能解决吗?谢谢
答案 0 :(得分:1)
我们已找到问题的原因。 Patchman最近发布了一些joomla文件的补丁,这些补丁在应用时破坏了joomla网站。
如果您(或您的提供商)使用的是Patchman,则回滚补丁应该可以解决问题。