Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Zmienna sesyjna, wykonywanie pliku od konkretnego miejsca
StadiPL
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 11.05.2013

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


Siema
Robię sobie system kont i mam pewien problem. Mianowicie mam plik który jest include'owany. Całość wczytywana jest na takim linku: http://localhost/?p=2 (p=2 oznacza że jest załadowana jakaś tam nieistotna strona 2)
login_form.php
  1. <a name="a">
  2. <?php $_SESSION['url']=$_SERVER['REQUEST_URI']; ?>
  3. <a name="b">
  4. <?php $url=$_SERVER['REQUEST_URI']; ?>
  5. Zaloguj się:<br />
  6. <form method="POST" action="
  7. <?php
  8. //jeśli zawiera już r=function to nie dodaje tylko wchodzi na aktualny url
  9. if (preg_match('/^.*r=function$/', $url)) {echo $url;} else {
  10. //jeśli nie ma r=function w url'u to dodaje
  11. if (preg_match('/^.*?.*=.*$/', $url))
  12. //jeśli są też inne zmienne w url'u
  13. {echo $url ."&r=function";}
  14. //jeśli nie ma innych zmiennych
  15. else {echo $url ."?r=function";}
  16. }
  17. ?>
  18. ">
  19. Nickname: <input type="text" name="nickname"><br />
  20. Hasło: <input type="password" name="password"><br />
  21. <input type="submit" value="login" name="login">
  22. </form>

zmienna r=function powoduje załadowanie login_function.php Gdy ktoś wpisze dobre dane, to login_function.php zrobi coś takiego:
  1. $url=$_SESSION['url'];
  2. header("Location: $url");

Jednak gdy coś się nie zgadza, to robi coś takiego (przykład, ale reszta działa analogicznie):
  1. $back=include('login_form.php');
  2. if ($token_activate_check == 0) {echo "Konto nieaktywowane" .$back;}

No i teraz jak to zrobić żeby przy podaniu złego loginu i hasła zaczął czytać login_form od części "b"?
Druga kwestia jest taka, że nawet gdy za pierwszym razem użytkownik poda dobre dane, to odwiedzana strona się odświerza i pokazuje ukrytą treść (widoczną tylko po zalogowaniu - czyli loguje normalnie), jednak w miejscu gdzie znajduje się formularz logowania powinien się pojawić panel użytkownika. Zamiast tego dalej widzę tam formularz, a dodatkowo błędy że nie zdefiniowano nickname i password oraz wyświetla mi komunikat niespełnionego pierwszego warunku logowania (w podanym przezemnie przykładzie to byłoby "konto nieaktywowane". Jest to normalny efekt w przypadku zwykłego załadowania http://localhost/?p=2&r=function Tylko czemu po poprawnym logowaniu ładuje mi ten link? Powinien załadować stronę bez zmiennej "r"..
Próbowałem też tak pobierać potrzebny link, ale nie pomogło:
  1. <?php unset($_SESSION['url']); $_SESSION['url']=$_SERVER['REQUEST_URI']; ?>

Jakby się przydało, to załączam jeszcze ten pliczek:
panel.php
  1. <?php
  2. //ładowanie odpowiedniej strony na bazie zmiennej z linku
  3.  
  4. //jeśli r puste
  5. if (empty($_GET['r'])) {
  6. //jeśli niezalogowany
  7. if(empty($_SESSION["logged"]))$_SESSION["logged"]=0;
  8. if ($_SESSION['logged']!=1) {include('login_form.php');}
  9. //jeśli zalogowany
  10. else {echo "Witaj " .$_SESSION['nickname'] ." <br />To jest twój panel użytkownika";}
  11. }
  12. //jeśli r ma daną wartość
  13. else if ($_GET['r']=="function") {include('pages/functions/login_function.php');}
  14. //w wypadku gdy r nie jest puste i ma inną wartość niż wyżej zdefiniowane
  15. else echo "Zje..ny błąd";
  16. ?>
Go to the top of the page
+Quote Post

Posty w temacie


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 - 00:58