logowanie.cls
Kod
<?php
class logowanie
{
private $login;
private $haslo;
function __construct($login, $haslo)
{
$this -> login = $login;
$this -> haslo = $haslo;
}
public function sprawdz()
{
if ($this -> login && $this -> haslo) {
if ($this -> login == "jan" && $this -> haslo == "jan")
{
session_id();
$_SESSION[$user] = $this -> login;
echo "Jestes zalogowany jako <b>" .$_SESSION[$user]. "</b> o id = " .session_id(). " - <a href=log2.php>przejdz dalej</a>";
}
else
{
echo "Nieprawidlowy login lub haslo";
echo "</BR></BR>";
$formularz = new form_logowania();
$formularz -> wyswietl();
}
}
else if (session_id() && $_SESSION[$user])
{
echo "Jestes zalogowany jako <b>" .$_SESSION[$user]. "</b> o id = " .session_id(). " - <a href=log2.php>przejdz dalej</a>";
}
else
{
$formularz = new form_logowania();
$formularz -> wyswietl();
}
}
}
?>
class logowanie
{
private $login;
private $haslo;
function __construct($login, $haslo)
{
$this -> login = $login;
$this -> haslo = $haslo;
}
public function sprawdz()
{
if ($this -> login && $this -> haslo) {
if ($this -> login == "jan" && $this -> haslo == "jan")
{
session_id();
$_SESSION[$user] = $this -> login;
echo "Jestes zalogowany jako <b>" .$_SESSION[$user]. "</b> o id = " .session_id(). " - <a href=log2.php>przejdz dalej</a>";
}
else
{
echo "Nieprawidlowy login lub haslo";
echo "</BR></BR>";
$formularz = new form_logowania();
$formularz -> wyswietl();
}
}
else if (session_id() && $_SESSION[$user])
{
echo "Jestes zalogowany jako <b>" .$_SESSION[$user]. "</b> o id = " .session_id(). " - <a href=log2.php>przejdz dalej</a>";
}
else
{
$formularz = new form_logowania();
$formularz -> wyswietl();
}
}
}
?>
Klasa form_logowania() wstawia po prostu formularz do zalogowania. Login i hasło będzie pobierane oczywiście z bazy danych. Tutaj dane są przykładowe i "na szybkiego"

Kod powyżej wstawiam tak:
log.php
Kod
<?php
session_start();
function __autoload($nazwa_klasy) {
require_once("klasy/$nazwa_klasy.cls");
}
$logowanie = new logowanie($_POST['login'], $_POST['haslo']);
$logowanie -> sprawdz();
?>
session_start();
function __autoload($nazwa_klasy) {
require_once("klasy/$nazwa_klasy.cls");
}
$logowanie = new logowanie($_POST['login'], $_POST['haslo']);
$logowanie -> sprawdz();
?>
I przykładowa strona, która przejmuje id sesji oraz nazwę użytkownika:
log2.php
Kod
<?php
session_start();
if (session_id() && $_SESSION[$user]) {
echo "Jestes zalogowany jako <b>" .$_SESSION[$user]. "</b> o id = " .session_id(). " - <a href=log.php>przejdz wstecz</a>";
}
else
{
echo "Nie ma cie w bazie - <a href=log.php>Wroc do strony logowania</a></BR>";
}
?>
session_start();
if (session_id() && $_SESSION[$user]) {
echo "Jestes zalogowany jako <b>" .$_SESSION[$user]. "</b> o id = " .session_id(). " - <a href=log.php>przejdz wstecz</a>";
}
else
{
echo "Nie ma cie w bazie - <a href=log.php>Wroc do strony logowania</a></BR>";
}
?>
Teraz mam pytania.
1. Czy do super globalnej tablicy $_SESSION mogę wrzucic co mi się podoba?
2. Czy przekazywanie przez tę tablicę loginu jest ok, czy lepiej to zrobic jakoś inaczej?
3. Czy dobrze rozumiem, że ta tablica jest przechowywana w ciastkach?
4. Czy zamiast pisać:
Kod
$logowanie = new logowanie($_POST['login'], $_POST['haslo']);
$logowanie -> sprawdz();
$logowanie -> sprawdz();
...można napisać bez tej zmiennej? Chodzi o coś w stylu:
Kod
new logowanie($_POST['login'], $_POST['haslo']) -> sprawdz();
Jeśli tak, to jak, bo u mnie na localhoście nie działa? (wiem, że to pytanie powinno być w dziale o OOP, ale zamiast się rozdrabniać, napiszę w jednym poście)
5. Czy skrypt jest dość bezpieczny jak na zwykłą szkolną stronkę? Jeśli jest dziurawy jak sito, to proszę Was o podanie mi ewentualnych możliwości odnośnie wykradzenia sesji, przejęcia hasła oraz loginu itp.
Pozdrawiam.