Я установил версию Xibo CMS 1.7 и могу войти в систему и правильно использовать CMS. После этого, согласно требованию, я обновил CMS до версии 1.8. Я уже сделал резервную копию всех необходимых файлов, а также базы данных. Я следовал инструкциям по обновлению CMS с 1.7 до 1.8 по этой ссылке. https://xibo.org.uk/docs/setup/upgrade-manual-custom-install Я могу перейти на 1.8 с 1.7, но не могу войти в CMS. Я отладил код и обнаружил, что в сеансе токен не хранится. Но в CMS версии 1.7 я могу получить эти значения сеанса. Я отладил приведенный ниже код в файлах CMS
public static function CheckToken($tokenName = "token")
{
if (!isset($_POST[$tokenName]) || !isset($_SESSION[$tokenName]))
return false;
if ($_POST[$tokenName] == $_SESSION[$tokenName])
{
// See if its still in Date
if (($_SESSION[$tokenName.'_timeout'] + 1200) <= time())
{
return false;
}
return true;
}
else
{
unset($_SESSION[$tokenName]);
Debug::LogEntry('error', "Form token incorrect from: ". $_SERVER['REMOTE_ADDR']. " with token [" . $_POST[$tokenName] . "] for session_id [" . session_id() . ']');
return false;
}
}
и ниже кода из index.class. php file
function login()
{
$db =& $this->db;
$user =& $this->user;
global $session;
// this page must be called from a form therefore we expect POST variables
$username = Kit::GetParam('username', _POST, _USERNAME);
$password = Kit::GetParam('password', _POST, _PASSWORD);
$referingpage = rawurldecode(Kit::GetParam('referingPage', _GET, _STRING));
// Check the token
if (!Kit::CheckToken()) {
// We would usually issue a HALT error here - but in the case of login we should redirect instead
// Split on & and rejoin with &
$params = explode('&', $referingpage, 3);
$referingpage = implode('&', $params);
$session->set('message', __('Sorry the form has expired. Please refresh.'));
header('Location:index.php?' . $referingpage);
exit;
}
if ($user->login($username,$password))
{
$userid = Kit::GetParam('userid', _SESSION, _INT);
$session->set_user(session_id(), $userid, 'user');
}
Debug::LogEntry('audit', 'Login with referring page: ' . $referingpage);
if ($referingpage == '')
{
header('Location:index.php?p=index');
}
else
{
// Split on & and rejoin with &
$params = explode('&', $referingpage, 3);
unset($params['message']);
$referingpage = implode('&', $params);
header('Location:index.php?' . $referingpage);
}
exit;
}
Может кто-нибудь помочь мне решить эту проблему?