Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Sesja działa po dwukrotnym odświeżeniu
Turson
post
Post #1





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


  1. <?php
  2. if($_SESSION["zalogowany"]!=1){
  3. if(!empty($_POST["login"]) && !empty($_POST["haslo"])){
  4. if(mysql_num_rows(mysql_query("select * from users where user_login = '".htmlspecialchars($_POST["login"])."' AND user_haslo = '".htmlspecialchars($_POST["haslo"])."'"))){
  5. echo 'Zalogowano poprawnie jako '.$_SESSION['login'].'. <a href=index.php>Przejdz na strone główna</a>';
  6.  
  7. $_SESSION["zalogowany"]=1;
  8. $_SESSION['login'] = $_POST['login'];
  9.  
  10. }
  11. else echo ShowLogin("Podano złe dane!!!");
  12. }
  13. else ShowLogin();
  14. }
  15. else{
  16. $nick = $_POST["login"];
  17. include("glowna.php");
  18. $haslo = @mysql_query("SELECT admin FROM users WHERE user_login='$_SESSION[login]'");
  19. while ($wiersz = mysql_fetch_array($haslo)) {
  20. if($wiersz[0] == 1) {
  21. $_SESSION["admin"]=1; }}?>
  22. <?php
  23. }
  24. ?>

Logowanie + sprawdzanie czy jest adminem i ewentualne dodanie tej informacji do sesji.

  1. <?php
  2. ?>
  3.  
  4. <?php
  5.  
  6. session_register("zalogowany");
  7. //strona dalej
  8. //nizej informacja o uzytkowniku
  9. <?PHP echo'<u>Zalogowany jako:</u> '.$_SESSION['login'].'
  10. <br><a href=?wyloguj=tak>Wyloguj</a><br>'; }
  11. if($_SESSION["admin"]==1){echo '<a href="admin.php">Admin Panel</a>';}
  12. //wylogowanie
  13. if($_GET["wyloguj"]=="tak"){$_SESSION["zalogowany"]=0;$_SESSION["admin"]=0;
  14. echo "<br>Zostałeś wylogowany z serwisu";}

Problemów jest kilka.
1) Gdy zaloguję się jako. np Turson, dostaję informację zwrotną "Zalogowano poprawnie jako $nick. Przejdz na strone główna"
W tym przypadku $nick to pozostałośc 'nickowa' po poprzedniej sesji, poprzednio zalogowanej osoby a nie tej aktualnie.
2) Kiedy zaloguję się jako admin i przejdę na stronę główną, a następnie odświeżę ponownie, otrzymuję link o możliwości przejścia do panelu admina, zamiast od razu po zalogowaniu i przejściu na index
Go to the top of the page
+Quote Post
krzywy36
post
Post #2





Grupa: Zarejestrowani
Postów: 370
Pomógł: 43
Dołączył: 1.12.2007
Skąd: Kędzierzyn Koźle

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


a niszczysz sesje przy wylogowywaniu? nie. dodaj session_destroy()

Ten post edytował krzywy36 26.03.2011, 10:41:50


--------------------
pretty as a shit.
Go to the top of the page
+Quote Post
Turson
post
Post #3





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


session_destroy() działa mi w ten sposób, że następnie logując się Zalogowano poprawnie jako '.$_SESSION['login'].'. działa w ten sposob ze nick w ogole nie wyswietla sie
Go to the top of the page
+Quote Post
krzywy36
post
Post #4





Grupa: Zarejestrowani
Postów: 370
Pomógł: 43
Dołączył: 1.12.2007
Skąd: Kędzierzyn Koźle

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


a masz w pierwszym pliku session_start()?
Edit: nie żebym się czepiał ale ten kod jest jakiś dziwny oO, jeśli nie jest zalogowany to go logujesz ok, ale jeśli jest zalogowany? \
  1. else{
  2. $nick = $_POST["login"];
  3. include("glowna.php");
  4. $haslo = @mysql_query("SELECT admin FROM users WHERE user_login='$_SESSION[login]'");
  5. while ($wiersz = mysql_fetch_array($haslo)) {
  6. if($wiersz[0] == 1) {
  7. $_SESSION["admin"]=1; }}?>

tego w ogóle nie rozumiem, co to ma na celu? jeśli chcesz sprawdzić czy uzytkownik jest adminem to po prostu dodaj w bazie kolejne pole np. "is_admin", a tutaj user musi wypełniać jakiś formularz logujący jak już jest zalogowany (?!).

Ten post edytował krzywy36 26.03.2011, 13:49:10


--------------------
pretty as a shit.
Go to the top of the page
+Quote Post
Turson
post
Post #5





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Tak na samym początku dokumentu
Go to the top of the page
+Quote Post
krzywy36
post
Post #6





Grupa: Zarejestrowani
Postów: 370
Pomógł: 43
Dołączył: 1.12.2007
Skąd: Kędzierzyn Koźle

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


ehh.
  1. if(mysql_num_rows(mysql_query("select * from users where user_login = '".htmlspecialchars($_POST["login"])."' AND user_haslo = '".htmlspecialchars($_POST["haslo"])."'"))){
  2. echo 'Zalogowano poprawnie jako '.$_SESSION['login'].'. <a href=index.php>Przejdz na strone główna</a>';
  3.  
  4. $_SESSION["zalogowany"]=1;
  5. $_SESSION['login'] = $_POST['login'];
  6.  
  7. }

nie widzisz nic zlego w tym kodzie? wyswietlasz $_SESSION['login'] któremu dopiero potem przypisujesz wartość i dziwisz się że jest puste? troche logiki...
session_destroy() ma być do wylogowywania.

Ten post edytował krzywy36 26.03.2011, 14:02:52


--------------------
pretty as a shit.
Go to the top of the page
+Quote Post
Turson
post
Post #7





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Ok - problem z podaniem nicku przy zalogowaniu naprawiony.
A to:
2) Kiedy zaloguję się jako admin i przejdę na stronę główną, a następnie odświeżę ponownie, otrzymuję link o możliwości przejścia do panelu admina, zamiast od razu po zalogowaniu i przejściu na index, tak samo z wylogowaniem, jak sie wyloguje to napisac Wyloguj dalej jest do nastepnego refresha

Ten post edytował TursoN 26.03.2011, 15:43:38
Go to the top of the page
+Quote Post
krzywy36
post
Post #8





Grupa: Zarejestrowani
Postów: 370
Pomógł: 43
Dołączył: 1.12.2007
Skąd: Kędzierzyn Koźle

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


nie mam pojęcia, kod jest napisany strasznie i nie mam czasu ani chęci się w nim babrać, jeśli jeszcze tego nie zrobiłeś to dodaj przy wylogowywaniu session_destroy(). Może ktoś inny znajdzie chęci, żeby to zrozumieć wink.gif.


--------------------
pretty as a shit.
Go to the top of the page
+Quote Post
Turson
post
Post #9





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


wyloguj.php
  1. <?php
  2. $_SESSION["zalogowany"]=0;$_SESSION["admin"]=0;
  3. echo "<br>Zostałes wylogowany z serwisu.<br><a href=index.php>zaloguj ponownie</a>";
  4. ?>

wiec jest:)
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 - 22:24