kokos2012 0 Опубликовано: 27 июня 2013 Рассказать Опубликовано: 27 июня 2013 (изменено) Здравствуйте. Имеется проблема со входом в мобильную версию DLE. Версия движка 10.0 (на прежних ошибка повторялась) При входе с телефона (Android 4.2.2, IOS 6) при вводе логина и пароля вход осуществляется, однако, если перейти на любую страницу - то из профиля выкидывает... Т.е. не получается войти и что-либо сделать. Что посоветуете?... Однако, если открыть мобильную версию сайта с компьютера - то выкидывать не будет! Изменено 27 июня 2013 пользователем kokos2012 Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 095 Опубликовано: 28 июня 2013 Рассказать Опубликовано: 28 июня 2013 Если ваша тема начинается с вопроса и вам нужна какая либо помощь, то в самой теме в обязательном порядке вы должны указывать ссылку на ваш сайт. Если ваш сайт находится в локальной сети и вы не можете предоставить ссылку, или вы не хотите публиковать открытой ссылки на ваш сайт, то отправляйте персональное сообщение с вопросом в службу поддержки непосредственно с сайта http://dle-news.ru/, вам ответят на ваш вопрос в персональном порядке, в случае если пользуетесь платной версией скрипта и обладаете лицензией на скрипт. Если вы пользуетесь демоверсией, то вам необходимо разместить сайт в сети интернет, и только потом обращаться за помощью. По находящимся на локальных компьютерах демоверсиям никакой помощи и поддержки на форуме не оказывается. Если вы не указали сайт, то ваша тема будет закрыта, а аккаунт на форуме заблокирован. Цитата Ссылка на сообщение Поделиться на других сайтах
kokos2012 0 Опубликовано: 28 июня 2013 Рассказать Опубликовано: 28 июня 2013 Автор Итак. Я нашел ошибку. В файле /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 Цитата Ссылка на сообщение Поделиться на других сайтах
IgorA100 90 Опубликовано: 28 июня 2013 Рассказать Опубликовано: 28 июня 2013 Что-то я не совсем понял алгоритм работы кода. Получается, если домен второго уровня и второй уровень это НЕ 'com', 'net', 'org', то будут проблемы с куками ? У меня второго уровня, но 'com' , проблем не было. Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 095 Опубликовано: 29 июня 2013 Рассказать Опубликовано: 29 июня 2013 kokos2012, Здесь нет никакой ошибки в данном коде. Авторизация на домене и поддоменах это функциональная возможность DLE. Если домен второго уровня вам не принадлежит и соответстенно вы не можете управлять его куками и сессиями, то в админпанели в настройках скрипта нужно отключать функцию: Авторизовать пользователей на домене и всех его поддоменах Если 'Да', то пользователи при авторизации на сайте, будут авторизовываться на домене всех его поддоменах. Например, если пользователь авторизовался на домене второго уровня domen.ru, то данные его авторизации будут доступны и на поддомене test.domen.ru и на всех других поддоменах. Включение данной настройки необходимо для пользователей, которые устанавливают скрипт на домен и поддомены и хотят сделать для них единую авторизацию посетителей. При отключении данной настройки, авторизационные данные пользователей, будут распространяться только на тот домен, на котором установлен скрипт. Отключение данной настройки необходимо, если вы делаете независимые сайты на домене и поддоменах. Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.