Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Przekierowanie
devbazy
post
Post #1





Grupa: Zarejestrowani
Postów: 93
Pomógł: 4
Dołączył: 10.08.2009

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


Witam tutejszą społeczność

Od jakiegoś już czasu nurtuje mnie jedno zagadnienie, a mianowicie przekierowanie, którego zadaniem jest przeniesienie użytkownika na wybraną przez niego stronę, po ówczesnym zalogowaniu. Nie chodzi mi tutaj wcale o header("location: strona.php"), a coś całkowicie odmiennego - być może z tym związanego, nie wiem. Zasadę działania wytłumaczę na prostym przykładzie. Dany użytkownik próbuje wejść na stronę dostępną tylko dla zalogowanych - w adresie wpisuje: www.dana-strona.pl/index.php?strona=panel - po wykonaniu takowej operacji następuje przekierowanie do formularza logowania, jednak adres strony nieco się zmienia: www.dana-strona.pl/index.php?strona=logowanie&next=panel. Wpisując poprawne dane w formularzu przenosi nas do pierwotnie wpisanego adresu: www.dana-strona.pl/index.php?strona=panel. Mógłby mi ktoś pojętny wytłumaczyć na jakiej zasadzie to działa. Z góry dzięki za jakąkolwiek pomoc.

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Fantazyn
post
Post #2





Grupa: Zarejestrowani
Postów: 135
Pomógł: 38
Dołączył: 24.02.2007
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


Wchodzi sobie gość na stronę:
www.dana-strona.pl/index.php?strona=panel

  1. if($_SESSION['logged']) // jakiś warunek na sprawdzenie czy user jest zalogowany
  2. {
  3. //jak jest zalogowany to pozostaje na tej stronie
  4. }
  5. else {
  6. //a jak nie to wywala go do logowania
  7. header("location: www.dana-strona.pl/index.php?strona=logowanie&next=".$_GET['strona']);
  8. }

www.dana-strona.pl/index.php?strona=logowanie&next=panel

loguje się...

  1. if (user i hasło jest dobre) // logujemy sie i jest ok
  2. {
  3. if(isset($_GET['next'])){ //jest ustawione przekierowanie do którego ma wrócić user
  4. header("location: www.dana-strona.pl/index.php?strona=".$_GET['next']);
  5. }
  6. // tu coś się robi jak user zalogował się, ale nie przyszedł z żadnej strony
  7. }
  8. else {
  9. // nie zalogował się poprawanie
  10. }


Mam nadzieję, że o to Ci chodziło : )

Ten post edytował Fantazyn 15.09.2009, 21:07:11
Go to the top of the page
+Quote Post
potreb
post
Post #3





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


Jeżeli nie zalogowany to powraca do formularza logowania, proste??

Taka sprawa a tak długie pytanie

Ten post edytował potreb 15.09.2009, 21:03:24
Go to the top of the page
+Quote Post
bogdan89
post
Post #4





Grupa: Zarejestrowani
Postów: 320
Pomógł: 36
Dołączył: 28.08.2006
Skąd: Wrocław

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


ja jeszcze tylko dodam, że można użyć zmiennych środowiskowych w PHP, które zastąpią to wieśniackie: "(...)&next=panel";
Go to the top of the page
+Quote Post
potreb
post
Post #5





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


Cytat(bogdan89 @ 15.09.2009, 20:04:37 ) *
ja jeszcze tylko dodam, że można użyć zmiennych środowiskowych w PHP, które zastąpią to wieśniackie: "(...)&next=panel";


Google też wieśniaki?
Go to the top of the page
+Quote Post
bogdan89
post
Post #6





Grupa: Zarejestrowani
Postów: 320
Pomógł: 36
Dołączył: 28.08.2006
Skąd: Wrocław

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


Cytat(potreb @ 15.09.2009, 22:36:32 ) *
Google też wieśniaki?


nie nazwałem wieśniakami tych co korzystają z takich rozwiązań.
Oni pewnie mają w tym jakieś swoje większe cele.

Ale jeśli chodzi o tylko i wyłącznie działające przekierowanie to można pozbyć się tej zmiennej.
Go to the top of the page
+Quote Post
devbazy
post
Post #7





Grupa: Zarejestrowani
Postów: 93
Pomógł: 4
Dołączył: 10.08.2009

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


Cytat(potreb @ 15.09.2009, 22:36:32 ) *
Taka sprawa a tak długie pytanie


Mogłem napisać to prościej, ale czy aby na pewno wszyscy zrozumieliby o co mi dokładnie chodzi? Tego pewien być nie mogłem, dlatego wolałem umieścić większość informacji w jednej wypowiedzi, niżeli później to wszystko upraszczać, wyjaśniać. Fantazyn, Twoje rozwiązanie okazało się skuteczne, a myślałem, że okaże się to trudniejsze, dzięki za pomoc. Temat można oczywiście zamknąć.

----------------------------

Otóż mam kolejny problem. Chciałem zastosować pewną regułkę w pliku .htaccess, by URL wyglądał nieco lepiej, ale niestety wygląda na to, że po wykonaniu tej czynności - tablica $_GET nie przekazuje żadnej wartości.

Wygląda to mniej więcej tak (pokaże to na wcześniejszym przykładzie podanym przez Fantazyna):

Dana osoba wchodzi na stronę: www.dana-strona.pl/panel/informacje/

  1. if($_SESSION['logged']) // jakiś warunek na sprawdzenie czy user jest zalogowany
  2. {
  3. //jak jest zalogowany to pozostaje na tej stronie
  4. }
  5. else {
  6. //a jak nie to wywala go do logowania
  7. header("location: www.dana-strona.pl/logowanie/?next=/panel/info/");
  8. }


Logujemy się...

  1. 1.
  2. if (user i hasło jest dobre) // logujemy sie i jest ok
  3. 2.
  4. {
  5. 3.
  6. if(isset($_GET['next'])){ //jest ustawione przekierowanie do którego ma wrócić user
  7. 4.
  8. header("location: www.dana-strona.pl".$_GET['next']); //powinno przejść na stronę: www.dana-strona.pl/panel/info/ - jednak wygląda na to, że $_GET niczego nie przekazuje
  9. 5.
  10. 6.
  11. }
  12. 7.
  13. // tu coś się robi jak user zalogował się, ale nie przyszedł z żadnej strony
  14. 8.
  15. }
  16. 9.
  17. else {
  18. 10.
  19. // nie zalogował się poprawanie
  20. 11.
  21. }


Tak to wygląda w pliku .htaccess

  1. RewriteRule ^logowanie/?next=/([^-]+)/?$ ?strona=logowanie&next=$1 [L]


Liczę na jakieś wskazówki. Wiem, że mogłem namieszać. Kombinuje już z tym dłuższy czas i nie mogę wymyślić jakiegoś sensownego rozwiązania.

Odświeżam temat.

Ten post edytował solid23 9.11.2009, 19:11:24
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.09.2025 - 16:01