Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] integracja logowania strony z forum phpBB3 - ROZWIĄZANE, a dokładniej przekierowanie;)
KCG
post
Post #1





Grupa: Zarejestrowani
Postów: 449
Pomógł: 4
Dołączył: 1.12.2006

Ostrzeżenie: (0%)
-----


Praktycznie połączyłem już logowanie z forum, z tym, że jak zaloguję się formularzem na stronie, to jestem przekierowany na forum. Jakoś nie mogę znaleźć fragmentu odpowiadającego za to przekierowanie. Adres przekazuje zmienna $_GET['url'], w przypadku wylogawnia zrobiłem tak:
  1. <?php
  2. case 'logout':
  3. if ($user->data['user_id'] != ANONYMOUS && isset($_GET['sid']) && !is_array($_GET['sid']) && $_GET['sid'] === $user->session_id)
  4. {
  5. $user->session_kill();
  6. $user->session_begin();
  7. if ($_GET['url']) { // to dodałem
  8. header('Location: '.urldecode($_GET['url']));
  9. exit; 
  10. } // koniec mego kodu;)
  11. $message = $user->lang['LOGOUT_REDIRECT'];
  12. }
  13. else
  14. {
  15. $message = ($user->data['user_id'] == ANONYMOUS) ? $user->lang['LOGOUT_REDIRECT'] : $user->lang['LOGOUT_FAILED'];
  16. }
  17. meta_refresh(3, append_sid(&#092;"{$phpbb_root_path}index.$phpEx\"));
  18.  
  19. $message = $message . '
  20.  
  21. ' . sprintf($user->lang['RETURN_INDEX'], '<a href=\"' . append_sid(&#092;"{$phpbb_root_path}index.$phpex\") . '\">', ' ');
  22. trigger_error($message);
  23.  
  24. break;
  25. ?>

A logowanie pośrednio jest tu:
  1. <?php
  2. case 'login':
  3. if ($user->data['is_registered'])
  4. {
  5. redirect(append_sid(&#092;"{$phpbb_root_path}index.$phpEx\"));
  6. }
  7. login_box(request_var('redirect', &#092;"index.$phpEx\"));
  8. break;
  9. ?>

Może ktoś to robił i wie, gdzie szukać? smile.gif
Z góry dzięki.

No doszedłem, bo sprawa dosyć prosta, jest pole hidden 'redirect', tylko, że przez to pole przekierowuje http://strona/forum/dopiero mój adres, jest możliwość przejść wyżej do katalogu? ./ i ../ nie działa sad.gif

Sam doszedłem tongue.gif w polu trzeba podać pełny adres strony z http:// i działa. Z tym, że najpierw strona z info forum 'zostałeś zalogowany', ale po kilku sekundach lub kliknięciu w link następuje przekierowanie smile.gif
Ew. jakby ktoś wiedział, jak zrobić, aby bezpośrednio przekierował (jakby używając header('Location: ...')) byłbym wdzięczny winksmiley.jpg </a href=\"' . append_sid(\"{$phpbb_root_path}index.$phpex\") . '\"></br ></br >

Ten post edytował KCG 2.01.2008, 17:03:01


--------------------
9242594 - zaczynasz? jak mogę, to pomogę :D /podstawowa znajomość php :P /
"to pomoc zawsze będzie gestem pięknym, zaliczana do tych teraz rzadko spotykanych..."
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
Draz
post
Post #2





Grupa: Zarejestrowani
Postów: 7
Pomógł: 1
Dołączył: 11.02.2009

Ostrzeżenie: (0%)
-----


Dzisiaj nad tym siedzialem i wymyslilem takie rozwiazanie:

W pliku includes/functions.php jest funkcja login_box()

  1. <?php
  2. // The result parameter is always an array, holding the relevant information...
  3.            if ($result['status'] == LOGIN_SUCCESS)
  4.            {
  5.                $redirect = request_var('redirect', "{$phpbb_root_path}index.$phpEx");
  6.                $message = ($l_success) ? $l_success : $user->lang['LOGIN_REDIRECT'];
  7.                $l_redirect = ($admin) ? $user->lang['PROCEED_TO_ACP'] : (($redirect === "{$phpbb_root_path}index.$phpEx" || $redirect === "index.$phpEx") ? $user->lang['RETURN_INDEX'] : $user->lang['RETURN_PAGE']);
  8.    
  9.                // append/replace SID (may change during the session for AOL users)
  10.                $redirect = reapply_sid($redirect);
  11.    
  12.                // Special case... the user is effectively banned, but we allow founders to login
  13.                if (defined('IN_CHECK_BAN') && $result['user_row']['user_type'] != USER_FOUNDER)
  14.                {
  15.                    return;
  16.                }
  17.                $redirect = $_SERVER['HTTP_REFERER']; // te dwa wiersze wstawilem
  18.                      header('Location: '.$redirect.'');
  19.                //meta_refresh(0, $redirect); ---->zmiana
  20.                trigger_error($message . '
  21.    
  22.    ' . sprintf($l_redirect, '<a href="' . $redirect . '">', '</a>'));
  23.            }
  24. ?>


Pozdrawiam
Go to the top of the page
+Quote Post
KCG
post
Post #3





Grupa: Zarejestrowani
Postów: 449
Pomógł: 4
Dołączył: 1.12.2006

Ostrzeżenie: (0%)
-----


Można rzeźbić, a można poczytać na phpbb.com i zrobić wszystko prościej smile.gif
Tylko teraz mam inne problemy, z autowylogowywaniem, poruszane w innym wątku ;/


--------------------
9242594 - zaczynasz? jak mogę, to pomogę :D /podstawowa znajomość php :P /
"to pomoc zawsze będzie gestem pięknym, zaliczana do tych teraz rzadko spotykanych..."
Go to the top of the page
+Quote Post
Draz
post
Post #4





Grupa: Zarejestrowani
Postów: 7
Pomógł: 1
Dołączył: 11.02.2009

Ostrzeżenie: (0%)
-----


Dodanie 2 wierszy jest rzeźbieniem?
zastosowana wcześniej funkcja meta_refresh(0, $redirect); dodaje znacznik meta do strony logowania i dopiero po jej załadowaniu przekierowuje.
W każdym razie zastosowanie tego pozwala na natychmiastowy powrót na stronę z której się zalogowano.
W przypadku umieszczenia formularza logowania w nagłówku strony rozwiązanie takie pozwala na szybkie zalogowanie i powrót na stronę np. czytanego artykułu.
Go to the top of the page
+Quote Post
KCG
post
Post #5





Grupa: Zarejestrowani
Postów: 449
Pomógł: 4
Dołączył: 1.12.2006

Ostrzeżenie: (0%)
-----


Można, ale moim zdaniem nie warto ingerować w pliki forum, skoro logowanie to:
  1. <?php
  2. $auth->login($username, $password, $remember, 1, 0);
  3. ?>

Więcej tutaj http://www.phpbb.com/kb/article/phpbb3-cro...ns-integration/ . Nie wymądrzam się, tylko przekazuję doświadczenie winksmiley.jpg


--------------------
9242594 - zaczynasz? jak mogę, to pomogę :D /podstawowa znajomość php :P /
"to pomoc zawsze będzie gestem pięknym, zaliczana do tych teraz rzadko spotykanych..."
Go to the top of the page
+Quote Post
Draz
post
Post #6





Grupa: Zarejestrowani
Postów: 7
Pomógł: 1
Dołączył: 11.02.2009

Ostrzeżenie: (0%)
-----


Szperałem dalej i:
funkcja login() - jak można się domyślać loguje do systemu; używa przy okazji funkcji login_db(). Jak logowanie się nie udaje zwraca info o błędach zapisane w tablicy np:
Kod
return array(
         'status'        => 'LOGIN_ERROR_PASSWORD',
         'error_msg'        =>'LOGIN_ERROR_PASSWORD',        
         'user_row'        => $row,
);

żeby to info wydobyć i obsłużyć trzeba użyć np. login_box()

Jak dla mnie nie ma łatwiejszej opcji szybkiego zalogowania na stronę bez przechodzenia przez stronę forum.
Jak coś znajdziesz to napisz, czekam na rozwiązanie.

Ten post edytował Draz 13.02.2009, 17:02:47
Go to the top of the page
+Quote Post
KCG
post
Post #7





Grupa: Zarejestrowani
Postów: 449
Pomógł: 4
Dołączył: 1.12.2006

Ostrzeżenie: (0%)
-----


Cytat(Draz @ 13.02.2009, 17:01:42 ) *
Jak dla mnie nie ma łatwiejszej opcji szybkiego zalogowania na stronę bez przechodzenia przez stronę forum.
Jak coś znajdziesz to napisz, czekam na rozwiązanie.

Napisałem post wyżej.


--------------------
9242594 - zaczynasz? jak mogę, to pomogę :D /podstawowa znajomość php :P /
"to pomoc zawsze będzie gestem pięknym, zaliczana do tych teraz rzadko spotykanych..."
Go to the top of the page
+Quote Post
Draz
post
Post #8





Grupa: Zarejestrowani
Postów: 7
Pomógł: 1
Dołączył: 11.02.2009

Ostrzeżenie: (0%)
-----


To może wytłumaczę o co mi chodzi:
- użytkownik loguje się do systemu, mamy kilka opcji - logowanie powiodło się lub wpisał złe hasło albo login.

- pozostawiając przy Twoim rozwiązaniu w przypadku pomyślnego zalogowania jest super, powiedzmy że dodajesz do tego przekierowanie i jesteś tam skąd się logowałeś

- ale co kiedy wpisałeś złe dane? funkcja login() zwraca ci błędy, ale trzeba jeszcze je obsłużyć, aby użytkownik wiedział co jest nie tak. W efekcie, albo piszesz własny kod obsługujący błędy i omawiane w tym temacie przekierowania, albo modyfikujesz już istniejącą funkcję login_box()
wg. mnie łatwiejsza i szybsza jest 2 opcja
Go to the top of the page
+Quote Post
KCG
post
Post #9





Grupa: Zarejestrowani
Postów: 449
Pomógł: 4
Dołączył: 1.12.2006

Ostrzeżenie: (0%)
-----


Jeśli po tym, co napisałem użytkownik nie jest zalogowany, tzn. że podał błędne dane, ot obsługa błędów.
Może faktycznie ta funkcja jest dla Ciebie lepsza, ale z ciekawości jakie jeszcze chcesz błędy obsługiwać? Może coś przeoczyłem.


--------------------
9242594 - zaczynasz? jak mogę, to pomogę :D /podstawowa znajomość php :P /
"to pomoc zawsze będzie gestem pięknym, zaliczana do tych teraz rzadko spotykanych..."
Go to the top of the page
+Quote Post
Draz
post
Post #10





Grupa: Zarejestrowani
Postów: 7
Pomógł: 1
Dołączył: 11.02.2009

Ostrzeżenie: (0%)
-----


Masz rację, wystarczy wypisać - wystąpił błąd podczas logowania... to zależy jakie rozwiązanie pasuje do danego projektu.
A błędy które ja chce obsługiwać, dam przykład: jeżeli forum jest zintegrowane ze stroną np wydawnictwa i loginem jest numer prenumeraty, a hasło jest wybierane przez użytkownika - jako użytkownik chciałbym wiedzieć czy podczas błędnego logowania:
a. mojego loginu czyli numeru prenumeraty nie ma jeszcze w bazie, lub numer prenumeraty wygasł (program wypisuje odpowiedni komunikat - w tym przypadku kontaktuje się z wydawnictwem)
b. mój login jest w bazie, ale wpisałem złe hasło (komunikat - nie pamiętasz hasła? - przejdź na zakładkę przypomnij hasło - w tym przypadku oszczędzamy sobie x maili od użytkowników, którzy myślą że ich numer prenumeraty został skasowany).

Ten post edytował Draz 15.02.2009, 08:59:58
Go to the top of the page
+Quote Post
KCG
post
Post #11





Grupa: Zarejestrowani
Postów: 449
Pomógł: 4
Dołączył: 1.12.2006

Ostrzeżenie: (0%)
-----


Masz rację, ja aż takich możliwości aktualnie nie potrzebuję smile.gif


--------------------
9242594 - zaczynasz? jak mogę, to pomogę :D /podstawowa znajomość php :P /
"to pomoc zawsze będzie gestem pięknym, zaliczana do tych teraz rzadko spotykanych..."
Go to the top of the page
+Quote Post
gigilio
post
Post #12





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 1.08.2009

Ostrzeżenie: (0%)
-----


a jeśli nie działa wogóle funkcja redirect??
Go to the top of the page
+Quote Post
KCG
post
Post #13





Grupa: Zarejestrowani
Postów: 449
Pomógł: 4
Dołączył: 1.12.2006

Ostrzeżenie: (0%)
-----


Co to znaczy nie działa, jaką masz wersję phpbb? Dobrze używasz funkcji?


--------------------
9242594 - zaczynasz? jak mogę, to pomogę :D /podstawowa znajomość php :P /
"to pomoc zawsze będzie gestem pięknym, zaliczana do tych teraz rzadko spotykanych..."
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 18:01