Forum o stronach internetowych

Jest to forum na którym można znaleźść m.in. jak stworzyć stronę internetową.

Ogłoszenie

Poszukujemy kilka osób na stanowiska moderatora i administratora. Chętni zgłaszać się w dziale rekrutacja.

#1 2013-10-18 20:52:09

 Niedostepny

HeadAdmin

33666952
Skąd: Uszczyn
Zarejestrowany: 2013-10-18
Posty: 12
Punktów :   

[TUT]Sesje + hash

Witam!

Za prezentuje wam jak w łatwy sposób możemy zrobić sesje (Autoryzację gracza które chce wejść na np. konto.php które wymaga zalogowania)

Zaczynamy.



na początek w każdym pliku w którym chcemy mieć dostępne nasze "sesje" lub "autoryzacje" dodajemy na początku:

Spoiler:

<?php
session_start();
?>

lub w pliku konfiguracyjnym (lub łączenia z bazą), który jest przeważnie dodawany do wszystkich plików gry.



Następnie musimy zapisać id, hash naszego gracza do sesji.

W pliku odpowiadającym za logowanie dodajemy (W miejscu w którym wszystko jest poprawne i można gracza zalogować):



Zmienna $gracz['id'] przechowuje id gracza.

Spoiler:

$_SESSION = array();
$_SESSION['id'] = $gracz['id'];
$_SESSION['hash'] = sha1($user['id'] . $_SERVER['REMOTE_ADDR']);

1 linijka odpowiada za przeczyszczenie naszej sesji, 2 za wpisanie do sesji Identyfikator (id) gracza, 3 odpowiada za 'Hash' Sesji dodając do niej specialny, zakodowany w sha1 ciąg znaków.



Dobrze, stworzyliśmy sesję, zapisaliśmy w niej użytkownika, co dalej?

Musimy sprawdzić jakoś czy gracz jest zalogowany.

Stwórzmy plik Test.php który będziemy dołączać do każdego pliku który ma być dostępny tylko dla zalogowanego użytkownika.

Oto kod tego pliku:

Spoiler:

@session_start(); // Startujemy sesję

if(empty($_SESSION['id']) or empty($_SESSION['hash'])){
    $_SESSION = array();
    header("Location: index.php");
} else {
    $session_check = sha1($_SESSION['id'] . $_SERVER['REMOTE_ADDR']);
    if($_SESSION['hash'] != $session_check){
        $_SESSION = array();
        header("Location: index.php");
        exit;
    }
    $uzytkownik = @mysql_fetch_array(mysql_query("select * from gracze where id =".$_SESSION['id'])); // Pobieranie uzytkownika z bazy
    if(empty($uzytkownik)){
        $_SESSION = array();
        session_destroy();
        header('Location: index.php');
        exit;
    }
}

Dzięki linijce 13 czyli $uzytkownik = @mysql_fetch_arr... pobieramy użytkownika z bazy, przez co w każdym pliku z autoryzacją mamy dane naszego użytkownika w zmiennej $użytkownik, dzięki czemu nie musimy pobierać "Manualnie" użytkownika z bazy.



Ale jak wylogować / usunąć sesję gracza?

Wystarczy usunąć sesję tzn.

Spoiler:

$_SESSION = array();
session_destroy();

Dobrze jest także od razu przekierować użytkownika na stronę główną, otrzymamy taki kod:

Spoiler:

$_SESSION = array();
session_destroy();
header('location: index.php');
exit;

I to by było na tyle.

Pozdrawiam!

Offline

 
Forum prowadzone przez Niedostepny.

Stopka forum

RSS
Powered by PunBB
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi


Darmowe Forum | Ciekawe Fora | Darmowe Fora
www.howlofterror.pun.pl www.terrorsquad.pun.pl www.nc10.pun.pl www.psychologia-artykuly.pun.pl www.polishcrew.pun.pl