zheka1980 Posted November 1, 2014 Share Posted November 1, 2014 Господа, установил на локальный сервер (последняя сборка DENWER, apache и все прочее - последние версии) форум 3.4.6. Установка прошла без сучка и задоринки, сам форум отображается, но - при попытке авторизоваться вначале пишет, что авторизация прошла успешно, сейчас вы перейдете к форумам автоматически, далее переход на главную - а там пустые формы ввода имени и пароля. Как будто я не логинился. Никаких ошибок не выдает. С чем это может быть связано? Link to comment Share on other sites More sharing options...
Zero108 Posted November 1, 2014 Share Posted November 1, 2014 Уместно привести логи ошибок денвера и системы. Link to comment Share on other sites More sharing options...
zheka1980 Posted November 1, 2014 Author Share Posted November 1, 2014 Вот логи Апача при запуске[sat Nov 01 17:32:33 2014] [warn] Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)[sat Nov 01 17:32:33 2014] [warn] Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/php5/ext\\php_sockets.dll' - \xcd\xe5 \xed\xe0\xe9\xe4\xe5\xed \xf3\xea\xe0\xe7\xe0\xed\xed\xfb\xe9 \xec\xee\xe4\xf3\xeb\xfc.\r\n in Unknown on line 0[sat Nov 01 17:32:37 2014] [notice] Apache/2.2.22 (Win32) mod_ssl/2.2.22 OpenSSL/1.0.1c PHP/5.2.12 configured -- resuming normal operations[sat Nov 01 17:32:37 2014] [notice] Server built: Apr 20 2012 18:42:30[sat Nov 01 17:32:38 2014] [notice] Parent: Created child process 45884[sat Nov 01 17:32:38 2014] [notice] Disabled use of AcceptEx() WinSock2 API[sat Nov 01 17:32:38 2014] [warn] Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)[sat Nov 01 17:32:39 2014] [warn] Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/php5/ext\\php_sockets.dll' - \xcd\xe5 \xed\xe0\xe9\xe4\xe5\xed \xf3\xea\xe0\xe7\xe0\xed\xed\xfb\xe9 \xec\xee\xe4\xf3\xeb\xfc.\r\n in Unknown on line 0[sat Nov 01 17:32:39 2014] [notice] Child 45884: Child process is running[sat Nov 01 17:32:39 2014] [notice] Child 45884: Acquired the start mutex.[sat Nov 01 17:32:39 2014] [notice] Child 45884: Starting 25 worker threads.[sat Nov 01 17:32:39 2014] [notice] Child 45884: Listening on port 443.[sat Nov 01 17:32:39 2014] [notice] Child 45884: Listening on port 8648.[sat Nov 01 17:32:39 2014] [notice] Child 45884: Listening on port 443.[sat Nov 01 17:32:39 2014] [notice] Child 45884: Listening on port 80.А что такое логи системы? Link to comment Share on other sites More sharing options...
zheka1980 Posted November 1, 2014 Author Share Posted November 1, 2014 Своим вопросом вы помогли мне выбрать направление поиска. Я раскомментировал php_sockets.dll, проблема осталасьЛОги теперь такие[sat Nov 01 18:59:23 2014] [warn] Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)[sat Nov 01 18:59:24 2014] [warn] Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)[sat Nov 01 18:59:24 2014] [notice] Apache/2.2.22 (Win32) mod_ssl/2.2.22 OpenSSL/1.0.1c PHP/5.3.13 configured -- resuming normal operations[sat Nov 01 18:59:24 2014] [notice] Server built: Apr 20 2012 18:42:30[sat Nov 01 18:59:24 2014] [notice] Parent: Created child process 3424[sat Nov 01 18:59:24 2014] [notice] Disabled use of AcceptEx() WinSock2 API[sat Nov 01 18:59:24 2014] [warn] Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)[sat Nov 01 18:59:24 2014] [warn] Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)[sat Nov 01 18:59:25 2014] [notice] Child 3424: Child process is running[sat Nov 01 18:59:25 2014] [notice] Child 3424: Acquired the start mutex.[sat Nov 01 18:59:25 2014] [notice] Child 3424: Starting 25 worker threads.[sat Nov 01 18:59:25 2014] [notice] Child 3424: Listening on port 443.[sat Nov 01 18:59:25 2014] [notice] Child 3424: Listening on port 8648.[sat Nov 01 18:59:25 2014] [notice] Child 3424: Listening on port 443.[sat Nov 01 18:59:25 2014] [notice] Child 3424: Listening on port 80.[sat Nov 01 18:59:37 2014] [error] [client 127.0.0.1] File does not exist: Z:/home/kulinar.ru/www/ajaxupload.3.5.js, referer: http://kulinar.ru/ Link to comment Share on other sites More sharing options...
zheka1980 Posted November 2, 2014 Author Share Posted November 2, 2014 ЧТо хочу сказать - запустил Google Chrome - проблема исчезла.И как оказалось - проблема не в самой авторизации, а в отображении таковой - я авторизовался в Google Chrome, и тут же в IE открыл форум - пишет не авторизованЕсть у меня код на PHP для того чтобы использовать авторизацию не только на форуме, но и на сайте:Error_Reporting(E_ALL & ~E_NOTICE); //путь до форума (укажите свой) $path_to_forum = '../forum_ipb/'; require_once( $path_to_forum . 'initdata.php' ); require_once( IPS_ROOT_PATH . 'sources/base/ipsRegistry.php' ); require_once( IPS_ROOT_PATH . 'sources/base/ipsController.php' ); $ipbRegistry = ipsRegistry::instance(); $ipbRegistry->init(); $id = IPSCookie::get('member_id'); if ($id == 0) { echo 'не авторизирован'; } else { $member = IPSMember::load( $id ); //имя пользователя echo $member['name']; //фото пользователя echo IPSMember::buildProfilePhoto( $member, 'full' ); //аватарка пользователя echo IPSMember::buildAvatar( $member ); } Так вот этот код тоже пишет, что никто не авторизован. Кукисы в IE включены 100% Link to comment Share on other sites More sharing options...
siv1987 Posted November 2, 2014 Share Posted November 2, 2014 Сессия может проверятся по юзер агенту браузера (соответствующая настройка в ац). Если авторизируетесь в одном браузере в другом она слетит. Если авторизация вообще не работает ни в одном браузере, в первую очередь нужно смотреть работу cookies - получает ли их браузер. Если нет, смотрим настройки cookies в ац, для начала очистить все настройки, потом попробовать прописать домен как написано в описании к настройке "домен cookies". Снова этот унылый г-код. Если вы его взяли с этого форума надо было прочитать всю тему. Не надо брать member_id из кукисов и загружать пользователя по нему, форум сам все это сделает $member = $ipbRegistry->member()->fetchMemberData(); Ид в куки можно подсунуть любой, а вы получается загружаете пользователя без никакой валидации. Link to comment Share on other sites More sharing options...
newbie Posted November 2, 2014 Share Posted November 2, 2014 Дополню.$id = IPSCookie::get('member_id');Если при авторизации не ставить галку "Запомнить меня", то данная кука, равно, как и pass_hash, не записывается. Link to comment Share on other sites More sharing options...
zheka1980 Posted November 3, 2014 Author Share Posted November 3, 2014 У меня в юзер агенте для Explorer записано \(compatible; MSIE[ /]([0-9.]{1,10}) Это что значит?С кукисами какая-то непонятка. Где их смотреть? У меня куки были здесь C:\Users\Admin\AppData\Local\Microsoft\Windows\Temporary Internet Files (хотя если погуглить, то пишут что должно быть в папке AppData\Microsoft\Windows\Cookies) но для форума кукисов там нет. Если вы его взяли с этого форума надо было прочитать всю тему. Не надо брать member_id из кукисов и загружать пользователя по нему, форум сам все это сделает $member = $ipbRegistry->member()->fetchMemberData(); Взял с какого-то сайта, не помню откуда.А где почитать, как сделать ссылку для logout, форму для Login для размещения на сайте? Link to comment Share on other sites More sharing options...
newbie Posted November 3, 2014 Share Posted November 3, 2014 Где их смотреть?В браузере. Вам же написали, что не нужно их использовать для определения авторизован юзер или нет.А где почитать, как сделать ссылку для logout, форму для Login для размещения на сайте?Откройте исходный код и посмотрите ссылки и формы. http://ipbskins.ru/forum/topic6401.htmlhttp://ipbskins.ru/forum/topic13198.html Link to comment Share on other sites More sharing options...
zheka1980 Posted November 3, 2014 Author Share Posted November 3, 2014 Спасибо за ссылки, попробую. Link to comment Share on other sites More sharing options...
zheka1980 Posted November 3, 2014 Author Share Posted November 3, 2014 Далеко я от компа с моим проектом, но не терпится узнать: код, что я использую и код, который есть по ссылке что вы дали отлиючатся.В том, что вы предложили есть такая штука $member = $ipbMemberLoginApi->getMember(); Равноценен ли полученный при этом $member тому, что получается при $member = IPSMember::load( $id ); Я к чему спрашиваю - смогу ли я так же как и в приведенном мной коде, подгружать аватарку и фото? Link to comment Share on other sites More sharing options...
siv1987 Posted November 3, 2014 Share Posted November 3, 2014 Explorer вообще не стоит юзать как браузер. Во всех современных браузерах есть средства для просмотра cookies. У меня в юзер агенте для Explorer записано \(compatible; MSIE[ /]([0-9.]{1,10}) Это что значит?Ничего. Там вам делать особо нечего. Я к чему спрашиваю - смогу ли я так же как и в приведенном мной коде, подгружать аватарку и фото?Сможете. Link to comment Share on other sites More sharing options...
Zero108 Posted November 3, 2014 Share Posted November 3, 2014 Своим вопросом вы помогли мне выбрать направление поиска. Я не задавал вопрос. Link to comment Share on other sites More sharing options...
zheka1980 Posted November 3, 2014 Author Share Posted November 3, 2014 Сделал вот так: $path_to_forum = '../forum_ipb/'; require_once( $path_to_forum . 'initdata.php' ); require_once( IPS_ROOT_PATH . 'sources/base/ipsRegistry.php' ); require_once( IPS_ROOT_PATH . 'sources/base/ipsController.php' ); $ipbRegistry = ipsRegistry::instance(); $ipbRegistry->init(); $member = $ipbRegistry->member()->fetchMemberData(); $ipbRegistry = ipsRegistry::instance(); $ipbRegistry->init(); $member = $ipbRegistry->member()->fetchMemberData(); if ($member['name']) { //имя пользователя echo $member['name']; echo '<br>'; //фото пользователя echo IPSMember::buildProfilePhoto( $member, 'full' ); //аватарка пользователя echo '<br>'; echo IPSMember::buildAvatar( $member ); } else echo 'не авторизован'; Все нормально, показывает, что залогинен админ, аватарку рисует. На форуме делаю логаут. Но на сайте все равно показывает, что админ онлайн... Я даже время на час вперед перевел - та же песня.Логиню другого пользователя, на сайте онлайн все равно остается админ.Неужели нужно делать кнопку логаут и на самом сайте? Link to comment Share on other sites More sharing options...
siv1987 Posted November 3, 2014 Share Posted November 3, 2014 $ipbRegistry = ipsRegistry::instance(); $ipbRegistry->init(); $member = $ipbRegistry->member()->fetchMemberData(); $ipbRegistry = ipsRegistry::instance(); $ipbRegistry->init(); $member = $ipbRegistry->member()->fetchMemberData(); Зачем этот код повторяется два раза? Для проверки авторизированого пользователя нужно использовать не 'name' а 'member_id'. У гостя тоже есть имя - Guest, а вот ид у него нету.Если сайт и форум на разных поддоменах, в настройках форума нужно задать основной домен с точкой впереди, например - .site.ru Чтобы cookies установленные на домене верхнего уровня были доступны на другие поддомены. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now