Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> problem z autentycznoscia sesji
piotrekk
post
Post #1





Grupa: Zarejestrowani
Postów: 123
Pomógł: 2
Dołączył: 13.11.2006

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


Witam,
mam następujący problem.
Tworze witrynę do której przypisałem sesje. Funkcja zapisująca login do sesji wygląda następująco:
  1. <?php
  2. function registerLogin($login)
  3. {
  4.  // Rejestracja loginUsername w celu pokazania, ze uzytkownik jest zalogowany
  5.  $_SESSION["login"] = $login;
  6.  
  7.  // Rejestracja adresu IP dla uruchomionej sesji
  8. $_SESSION["loginIP"] = $_SERVER["REMOTE_ADDR"];
  9. }
  10. ?>


Wykorzystuje ją przy logowaniu. Następnie po zalogowaniu przenoszony jestem do głównego miejsca, gdzie moge dokonywać zakupów. Klikając na koszyk wykonowany jest skryp szybkiego zamowienia, gdzie sesja sprawdzana jest w następujący sposób.

  1. <?php
  2. function autentycznoscSesji()
  3. {
  4. if(isset($_SESSION["login"]))
  5. {
  6. unregisterLogin();
  7. header("Location : ../panelLogowanie.php");
  8. }
  9. // sprawdza czy wywolanie pochodzi z innego adresu ip niz na poczatku
  10. elseif($_SESSION["loginIP"] != $_SERVER["REMOTE_ADDR"])
  11. {
  12. // WYWOLANIE POCHODZI Z INNEGO KOMPUTERA NIZ KOMPUTER UZYTY WCZESNIEJ, MOZLIWE ZE 
    KTOS CHCE PRZECHWYCIC SESJE
  13. //isset($_SESSION["loginIP"]) || 
  14.  
  15. unregisterLogin();
  16. header("Location: ../panelLogowanie.php");
  17. }
  18.  
  19.  
  20. }
  21. ?>

Gdy nie jestem zalogowany wszystko działa poprawnie i przenoszony jestem do panelu logowania, jednak gdy sie zaloguje funkcja nie działa poprawnie i nie wykonywana jest dalsza cześć skryptu.
Proszę o pomoc, jeżeli potrzebne są jakieś dodatkowe informacje to oczywiście je napisze.

dzięki !
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Cezar708
post
Post #2





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


na poczatek to zmieniłbym:
  1. <?php
  2. function unregisterLogin()
  3. {
  4. unset($_SESSION["login"]);
  5. unset($_SESSION["loginIP"]);
  6. }
  7. ?>

w końcu jak kolesia wylogowywujesz to nie muszisz sprawdzać czy istnieje ( w najgorszym razie nie istnieje i tak usuwasz )

po drugie zamień:
  1. <?php
  2. function autentycznoscSesji()
  3. {
  4. if (  !isset($_SESSION["login"]) 
  5.  || !isset($_SESSION["loginIP"]) 
  6.  || ($_SESSION["loginIP"] != $_SERVER["REMOTE_ADDR"])
  7. ) {
  8. return false;
  9. }
  10. return true;
  11. }
  12. ?>


i dopiero obsługę zrób w kodzie (ewentualnie dopisz jeszcze jakąś funkcję):

  1. <?php
  2. //1. sprawdzanie czy uzytkownik jest zareejstrowany ( spr. sesji)
  3. require_once "include/function.php";
  4. require_once "include/mysql.inc";
  5.  
  6.  
  7. if ( !autentycznoscSesji() ){
  8. unregisterLogin();
  9. header("Location : ../panelLogowanie.php");
  10. die;
  11. }
  12.  
  13. // dalsza część
  14. ?>


być może błąd wynika z tego że w niektórych przypadkach Twoja funkcja nie podejmuje żadnej akcji a ma to miejsce w momencie gdy usr jest niezalogowany. Sprawdź jak to działa.
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: 3.10.2025 - 17:04