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
 
Start new topic
Odpowiedzi
StadiPL
post
Post #2





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

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


A możesz zapodać prostym przykładem jak to zrobić w jednym pliku? Bo już jakiś czas temu szukałem samemu (bo uznałem że tak będzie prościej), ale nie znalazłem nic dobrego. Jak zapytałem na forum to dowiedziałem się że muszę to zrobić ajaxem - ja tego nie ogarniam, a najsampierw to bym się nauczył chociaż podstaw php. Z tego co wiem to jest jakieś "rozszerzenie" php
Go to the top of the page
+Quote Post

Posty w temacie


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: 5.10.2025 - 15:04