Перейти к публикации

Выкидывает из профиля в мобильной версии


Рекомендованные сообщения

Здравствуйте. Имеется проблема со входом в мобильную версию DLE.

Версия движка 10.0 (на прежних ошибка повторялась)

При входе с телефона (Android 4.2.2, IOS 6) при вводе логина и пароля вход осуществляется, однако, если перейти на любую страницу - то из профиля выкидывает... Т.е. не получается войти и что-либо сделать.

Что посоветуете?...

Однако, если открыть мобильную версию сайта с компьютера - то выкидывать не будет!

Изменено пользователем kokos2012
Ссылка на сообщение
Поделиться на других сайтах

Если ваша тема начинается с вопроса и вам нужна какая либо помощь, то в самой теме в обязательном порядке вы должны указывать ссылку на ваш сайт. Если ваш сайт находится в локальной сети и вы не можете предоставить ссылку, или вы не хотите публиковать открытой ссылки на ваш сайт, то отправляйте персональное сообщение с вопросом в службу поддержки непосредственно с сайта http://dle-news.ru/, вам ответят на ваш вопрос в персональном порядке, в случае если пользуетесь платной версией скрипта и обладаете лицензией на скрипт. Если вы пользуетесь демоверсией, то вам необходимо разместить сайт в сети интернет, и только потом обращаться за помощью. По находящимся на локальных компьютерах демоверсиям никакой помощи и поддержки на форуме не оказывается. Если вы не указали сайт, то ваша тема будет закрыта, а аккаунт на форуме заблокирован.

Ссылка на сообщение
Поделиться на других сайтах

Итак. Я нашел ошибку. В файле /engine/modules/functions.php

Есть такой код:


if ( $config['auth_domain'] ) {

$domain_cookie = explode (".", clean_url( $_SERVER['HTTP_HOST'] ));

$domain_cookie_count = count($domain_cookie);

$domain_allow_count = -2;


if ( $domain_cookie_count > 2 ) {


  if ( in_array($domain_cookie[$domain_cookie_count-2], array('com', 'net', 'org') )) $domain_allow_count = -3;

  if ( $domain_cookie[$domain_cookie_count-1] == 'ua' ) $domain_allow_count = -3;

  $domain_cookie = array_slice($domain_cookie, $domain_allow_count);

}


$domain_cookie = "." . implode (".", $domain_cookie);


if( (ip2long($_SERVER['HTTP_HOST']) == -1 OR ip2long($_SERVER['HTTP_HOST']) === FALSE) AND strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN' ) define( 'DOMAIN', $domain_cookie );

else define( 'DOMAIN', null );

} else define( 'DOMAIN', null );

$mcache = false;

if ( $config['cache_type'] ) {

if ( function_exists('memcache_connect') ) {

  $memcache_server = explode(":", $config['memcache_server']);

  $mcache = @memcache_connect( $memcache_server[0], $memcache_server[1] );

  if( $mcache AND function_exists('memcache_set_compress_threshold') )

  {

   memcache_set_compress_threshold( $mcache, 20000, 0.2 );

  }

}

}

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

if ( $domain_cookie_count > 2 ) {

  if ( in_array($domain_cookie[$domain_cookie_count-2], array('com', 'net', 'org') )) $domain_allow_count = -3;

  if ( $domain_cookie[$domain_cookie_count-1] == 'ua' ) $domain_allow_count = -3;

  $domain_cookie = array_slice($domain_cookie, $domain_allow_count);

}

Работает не верно! По этому я, не меняя самой сути кода, ввел исправление:

  if ( in_array($domain_cookie[$domain_cookie_count-2], array('com', 'net', 'org', 'of') )) $domain_allow_count = -3;

Уважаемая администрация, исправьте этот код, чтобы он работал правильно..

P.S. Выкидывало из профиля, с исходным кодом, не только с мобильных (за исключением входа через админку, там эта функция не использовалась.)

P.P.S. Администрация, включите в index.php файле вывод всех (E_ALL) ошибок. И исправьте такие ошибки как отсутствие "isset()" && "!isset()" у переменных ($_GET, $_POST, $_REQUEST и остальных). В моей версии скрипта - исправил почти все :)

P.P.P.S. Если Вам необходима помощь (идеи, скрипты, дополнения... (для улучшения системы)) - обращайтесь :)kosmos[@]lets.by

Ссылка на сообщение
Поделиться на других сайтах

Что-то я не совсем понял алгоритм работы кода.

Получается, если домен второго уровня и второй уровень это НЕ 'com', 'net', 'org', то будут проблемы с куками ? У меня второго уровня, но 'com' , проблем не было.

Ссылка на сообщение
Поделиться на других сайтах

kokos2012,

Здесь нет никакой ошибки в данном коде. Авторизация на домене и поддоменах это функциональная возможность DLE. Если домен второго уровня вам не принадлежит и соответстенно вы не можете управлять его куками и сессиями, то в админпанели в настройках скрипта нужно отключать функцию:

Авторизовать пользователей на домене и всех его поддоменах

Если 'Да', то пользователи при авторизации на сайте, будут авторизовываться на домене всех его поддоменах. Например, если пользователь авторизовался на домене второго уровня domen.ru, то данные его авторизации будут доступны и на поддомене test.domen.ru и на всех других поддоменах. Включение данной настройки необходимо для пользователей, которые устанавливают скрипт на домен и поддомены и хотят сделать для них единую авторизацию посетителей. При отключении данной настройки, авторизационные данные пользователей, будут распространяться только на тот домен, на котором установлен скрипт. Отключение данной настройки необходимо, если вы делаете независимые сайты на домене и поддоменах.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...