Интеграция авторизации в свой шаблон

Автор EDuard, 17 мая 2007, 21:25:59

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

EDuard

Всем привет!

Возникла необходимость использования единой авторизации SMF и самописной CMS.
Форум расположен в директории site/forum/
создаю файл index.php в директории site/

код index.php


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<link href="css/style.css" type="text/css" rel="stylesheet" />
</head>
<body>
<?
require_once("forum/SSI.php");
$logout_url_f = "http://site/";//УРЛ перенаправления после выхода
$login_url_f = "http://site/";//УРЛ перенаправления после входа
$data=ssi_welcome($output_method='array');
if ($data["is_guest"] != 1)
{
$_SESSION["logout_url"] = $logout_url_f;
$block_cont="
<h3>Авторизация</h3>
<a href=\"".$scripturl."?action=logout;sesc=".$sc."\">Выйти</a>
";
} else {
$_SESSION["login_url"] = $login_url_f;
$block_cont = "
<h3>Авторизация</h3>
<form action=\"".$scripturl."?action=login2\" method=\"post\" accept-charset=\"".$context["character_set"]."\">
<fieldset>
<label for=\"user\">Логин</label>
<input type=\"text\" id=\"user\" name=\"user\" size=\"15\" class=\"au_str\" />
<label for=\"passwrd\">Пароль</label>
<input type=\"password\" name=\"passwrd\" id=\"passwrd\" size=\"15\" class=\"au_str2\" />
<input type=\"hidden\" name=\"cookielength\" size=\"4\" maxlength=\"4\" value=\"60\" />
<input type=\"submit\" value=\"Войти\" class=\"au_loginout\" />
<a href=\"".$scripturl."?action=register\">Регистрация</a>&nbsp;&nbsp;<span>[<a href=\"".$scripturl."?action=reminder\" title=\"Забыли пароль?\">?</a>]</span>
</fieldset>
</form>
";
}
return $block_cont;
print $block_cont;
?>
</body>
</html>


1) юзер не залогинен на форуме site/forum
логинимся на site/ все отлично на сайте и на форуме

2) закрываем браузер

3) открываем браузер видим:
site/ - юзер не залогинен
site/forum - юзер залогинен

4) при попытке залогиниться на site/ переадрисует на site/forum на site/ - остаеться не автоизованным

5) выпоняем logout на site/forum

6) авторизуемся на site/
все снова отлично
на site/
и на site/forum

Подскажите плиз из-за чего может возникать проблема 4) и как ее можно решить?


Avdenago

ммм. могу конечно ступить... но форум помнит юзера по куку.

а в вашем коде я если честно не приметил проверку на сайте на "залогинен ли пользователь". 

EDuard

Avdenago, не подскажете код?
есть ли функция проверки в SSI.php?


EDuard

Avdenago, спасибо, но так и не нашел проверку на куки... :-\

EDuard

Всем спасибо.
Просто в админке форума нужно включить опцию "Использовать независимые cookies для субдоменов". Урря!!!

EDuard

Авторизация проходит успешно, но теперь возникают проблемы при выходе из форума.
Находясь на сайте (http://site.ru/) нажимаю ссылку "Выход", происходит переадресация на (http://site.ru/forum/) выходит сообщение об ошибке

"Не удалось проверить сессию. Пожалуйста, выйдите из форума и зайдите снова."

В чем может быть проблема?

EDuard

идентификатор сессии при выходе через сайт и через форум разный. т.е. при выходе через сайт он определяеться не правильно. почему? может кто-то сталкивался?

Андрей К

Цитата: EDuard от 07 июля 2007, 22:44:10
Авторизация проходит успешно, но теперь возникают проблемы при выходе из форума.
Находясь на сайте (http://site.ru/) нажимаю ссылку "Выход", происходит переадресация на (http://site.ru/forum/) выходит сообщение об ошибке

"Не удалось проверить сессию. Пожалуйста, выйдите из форума и зайдите снова."

В чем может быть проблема?
Цитата: EDuard от 08 июля 2007, 14:16:57
идентификатор сессии при выходе через сайт и через форум разный. т.е. при выходе через сайт он определяеться не правильно. почему? может кто-то сталкивался?

Аналогичная проблема! Как это дело пофиксить? Подскажите плиииз...
Приглашаем к общению рок-музыкантов - www.sakharock.ru

_cosmos

покажите какая ссылка у вас на выхож долджна быть примерно такой адрес
http://site.ru/forum/index.php?action=logout;sesc=1777d770338368c0339d0f692d872c51

vakas

Цитата: EDuard от 08 июля 2007, 14:16:57
идентификатор сессии при выходе через сайт и через форум разный. т.е. при выходе через сайт он определяеться не правильно. почему? может кто-то сталкивался?

я сталкивался - решилось у меня заменой
session_start(); - на
require_once("forum/SSI.php");

Wodan

Пользуюсь скриптом, аналогичным с автором темы.

И проблемы те же. Из-за того, что создаются разные сессии не работает выход.

Также после входа скрипт не возвращает на страницу, где был произведен вход, а переходит на индексную страницу форума.

Версия форума 1.1.8

Wodan

Вопрос исчерпан, это мешали мои скрипты!

BogdanNB

Времена идут, проблемы остаются те же самые... но решения я так и не нашел. =(

У меня следующая (аналогичная по сути) ситуация:

Есть сайт (http://somesite.com) и СМФ форум на сабдомене (http://forum.somesite.com)... на сайте SSI форма авторизации СМФ форума... у форума включена опция "Использовать независимые cookies для субдоменов" для нормальной работы SSI... есть на сайте ссылка на сам форум... В зависимости от того авторизуется ли пользователь через форму на сайте или переходит на форум по ссылке, инициализирую $_SESSION['login_url'] и $_SESSION['logout_url'], чтобы залогинившись на сайте пользователь оставался на сайте в т.ч. и после нажатия "Выход"... а перейдя на форум и залогинившись там - оставался на форуме, но по нажатию "Выход" на форуме возвращался на главную страницу сайта... в общем с этим то все в порядке.

Проблема именно с попыткой выхода по ссылке на сайте... происходит редирект на форум (что естественно при возникновении ошибки) с выводом следующего сообщения:
"Невозможно проверить месторасположение отсылаемого файла. Пожалуйста, вернитесь назад и попробуйте снова."
В английской версии: "Unable to verify referring url.  Please go back and try again."

Если находясь на этой странице форума с ошибкой нажать "Выход" (самого форума), пользователь благополучно "выйдет" и окажется на главной странице сайта...

При этом обе logout-ссылки абсолютно идентичные: sesc имеет одинаковое значение, как у ссылки, которую генерирует SSI на сайте (при нажатии на которую выдается ошибка), так и у ссылки на самом форуме форуме (на странице с ошибкой) по которой выход происходит нормально... =(

Как видно из сообщения об ошибке и значений sesc - проблем с сессией нет. Понимаю, проблема с "месторасположением" о котором говорится в сообщении об ошибке, связана с доменами - с тем, что форум располагается на сабдомене, но как побороть пока не придумал... =(

Подскажите, может кто-то уже решал такую проблему?