Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
zheka1980

Не проходит авторизация, форум установлен локально, на DENWER

Recommended Posts

Господа, установил на локальный сервер (последняя сборка DENWER, apache и все прочее - последние версии) форум 3.4.6. Установка прошла без сучка и задоринки, сам форум отображается, но - при попытке авторизоваться вначале пишет, что авторизация прошла успешно, сейчас вы перейдете к форумам автоматически, далее переход на главную - а там пустые формы ввода имени и пароля. Как будто я не логинился. Никаких ошибок не выдает.

 

С чем это может быть связано?

Share this post


Link to post
Share on other sites

Уместно привести логи ошибок денвера и системы.

Share this post


Link to post
Share on other sites

Вот логи Апача при запуске

[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.

А что такое логи системы?

Share this post


Link to post
Share on other sites

Своим вопросом вы помогли мне выбрать направление поиска.

Я раскомментировал 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/

Share this post


Link to post
Share on other sites

ЧТо хочу сказать - запустил 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%

Share this post


Link to post
Share on other sites

Сессия может проверятся по юзер агенту браузера (соответствующая настройка в ац). Если авторизируетесь в одном браузере в другом она слетит. Если авторизация вообще не работает ни в одном браузере, в первую очередь нужно смотреть работу cookies - получает ли их браузер. Если нет, смотрим настройки cookies в ац, для начала очистить все настройки, потом попробовать прописать домен как написано в описании к настройке "домен cookies".

 

Снова этот унылый г-код. Если вы его взяли с этого форума надо было прочитать всю тему. Не надо брать member_id из кукисов и загружать пользователя по нему, форум сам все это сделает $member = $ipbRegistry->member()->fetchMemberData(); Ид в куки можно подсунуть любой, а вы получается загружаете пользователя без никакой валидации.

Share this post


Link to post
Share on other sites

Дополню.

$id = IPSCookie::get('member_id');

Если при авторизации не ставить галку "Запомнить меня", то данная кука, равно, как и pass_hash, не записывается.

Share this post


Link to post
Share on other sites

У меня в юзер агенте для 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 для размещения на сайте?

Share this post


Link to post
Share on other sites
Где их смотреть?

В браузере. Вам же написали, что не нужно их использовать для определения авторизован юзер или нет.

А где почитать, как сделать ссылку для logout, форму для Login для размещения на сайте?
Откройте исходный код и посмотрите ссылки и формы.

 

http://ipbskins.ru/forum/topic6401.html

http://ipbskins.ru/forum/topic13198.html

Share this post


Link to post
Share on other sites

Далеко я от компа с моим проектом, но не терпится узнать: код, что я использую и код, который есть по ссылке что вы дали отлиючатся.

В том, что вы предложили есть такая штука $member = $ipbMemberLoginApi->getMember(); Равноценен ли полученный при этом $member тому, что получается при $member = IPSMember::load( $id );

Я к чему спрашиваю - смогу ли я так же как и в приведенном мной коде, подгружать аватарку и фото?

Share this post


Link to post
Share on other sites

Explorer вообще не стоит юзать как браузер. Во всех современных браузерах есть средства для просмотра cookies.

 

У меня в юзер агенте для Explorer записано \(compatible; MSIE[ /]([0-9.]{1,10}) Это что значит?

Ничего. Там вам делать особо нечего.

 

Я к чему спрашиваю - смогу ли я так же как и в приведенном мной коде, подгружать аватарку и фото?

Сможете.

Share this post


Link to post
Share on other sites

Своим вопросом вы помогли мне выбрать направление поиска.

Я не задавал вопрос.

Share this post


Link to post
Share on other sites

Сделал вот так:

$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 'не авторизован';

 

Все нормально, показывает, что залогинен админ, аватарку рисует. На форуме делаю логаут. Но на сайте все равно показывает, что админ онлайн... Я даже время на час вперед перевел - та же песня.

Логиню другого пользователя, на сайте онлайн все равно остается админ.

Неужели нужно делать кнопку логаут и на самом сайте?

Share this post


Link to post
Share on other sites

$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 установленные на домене верхнего уровня были доступны на другие поддомены.

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...