pablo_83
3.07.2012, 07:37:57
witam,
mam problem z stworzeniem uwierzytelniania użytkowników za pomocą tego samego loginu na stronie i na forum jednocześnie. Mianowicie chcę aby user, który loguje się na stronie był jednocześnie zalogowany na forum (problem popularny, jednak nie mogę znaleźć zadowalającego rozwiązania).
Rozwiązanie, które chciałem zastosować to:
- podczas rejestracji usera w portalu uzupełniam też tabelkę users w forum. Pierwszym problemem jaki napotkałem jest hasło, w phpbb3 do hashowania użyta jest funkcja phpbb_hash, której nie mogę w żaden sposób zastosować przez funkcję redirect(), powodującą błąd nadpisywania oryginalnej funkcji redirect() w moim frameworku (CodeIgniter). Jeśli ktoś ma pomysł jak to obejść czekam na propozycje.
Spróbowałem więc tworzyć usera z hasłem w zwykłej md5, i później samemu sprawdzać usera.
Tutaj problem jest taki że nie wiem jakiego rodzaju uwierzytelnianie jest zastosowane (w oparciu o jakie dane i w jaki sposób hashowane).
Przy normalnym logowaniu na forum są tworzone 3 ciastka
- phpbb3_ljnzq_u
- phpbb3_ljnzq_sid
- phpbb3_ljnzq_k
oraz tworzony jest wpis w tabeli sessions, nie wiem jakie dane są hashowane w kolumnie session_id nigdzie nie mogę tego znaleźć.
(nie mam bladego pojęcia po co ciastka są skoro po ich wykasowaniu nadal jestem zalogowany).
Z tego co wyczytałem to wystarczyć powinien poprawny wpis do tabelki sessions w forum (na podstawie tego jest sprawdzane zalogowanie), tylko cały czas nie wiem jakie dane są trzymane w postaci md5 w kolumnie session_id.
Ma ktoś wiedzę jak poprawnie wpisać te dane rejestracyjne do bazy (hasło) i później z nich utworzyć poprawną sesje dla forum. Proszę o pomoc.
Może ktoś się spotkał z tym problemem lub ma inne rozwiązanie.
rocktech.pl
3.07.2012, 08:26:09
Witam.
Musisz użyć funkcji z phpBB.
Przeszukaj forum phpBB hasło to
phpBB bridge.
W skrócie będzie to wyglądać tak:
//funkcje usera W phpBB
require_once(ROOT_PATH."/includes/functions_user.php");
$auth->login($username,$password);
pablo_83
10.07.2012, 18:12:36
@rocktech funkcji podanej przez Ciebie nie znalazłem w kodzie, prawdopodobnie w phpbb3 jest to inaczej rozwiązane.
@tajgeer - tutorial nie zawiera info o sposobie uwierzytelniania użytkowników.
Doszedłem już do tego (już... dopiero to lepsze słowo) że po zalogowaniu sesja jest trzymana w url i bazie danych (tabelka sessions) a po przejściu na kolejną stronę tworzone jest ciasteczko z tymi samymi danymi co w tabelce.
Nadal nie wiem jakie dane są trzymane w kolumnie session_id (tabelka sessions), nie jest to raczej md5 bo próbowałem użyć decode do md5 i nic nie znajduje. Próbowałem też sztucznie tworzyć insert do tabelki sessions i tworzyć ciastko z tymi samymi danymi, jednak nie zdało to rezultatu. Po wejściu na forum tworzy się inne ciastko (co dziwne) o tej samej nazwie, jedyne różnice to że działa w obrębie domeny i ma dowolny rodzaj połączenia (oraz oczywiście string sessji).
Przypomnę że cały portal funkcjonuje poprawnie mam uwierzytelnianie i obsługę klientów. Chciałbym zrobić tak aby przy logowaniu się do portalu user automatycznie zostawał zalogowany na forum. logowanie z forum zostanie w ogóle wyrzucone.
ma ktoś pomysł na rozwiązanie
EDIT:
problem rozwiązany ;]
okazało się że w tabeli sessions kolumna session_browser jest także wymagana a defakto jest ona kluczowa, musi być w niej zawartość $_SERVER['HTTP_USER_AGENT'], wartość kolumny session_id może być dowolnym stringiem ważne aby był taki sam zapisany w ciastku
po katowaniu się z pierdołą, temat do zamknięcia