Jest to forum na którym można znaleźść m.in. jak stworzyć stronę internetową.
HeadAdmin
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