Trafiłem na artykuł : http://pl.wikibooks.org/wiki/PHP/Sesje
W ktorym sprawdzenie w tym wypadku odbywa się z tablica a nie z baza (co oczywiscie nie ma znaczenia w tym wypadku chodzi o zasade) odbywa sie tylko raz, jezeli login i haslo wystepuja w tablicy to zostaje wpisana wartosc (do zmiennej sesyjnej uzytkownik ) wieksza niz jeden.
Troche przerobiłem ten skrypt na własny użytek
Kod
<?php
$uzytkownicy = array(1 =>
array('login' => 'user1', 'haslo' => sha1('ppp')),
array('login' => 'user2', 'haslo' => sha1('ddd')),
array('login' => 'user3', 'haslo' => sha1('fff'))
);
function czyIstnieje($login, $haslo)
{
global $uzytkownicy;
$haslo = sha1($haslo);
foreach($uzytkownicy as $id => $dane)
{
if($dane['login'] == $login && $dane['haslo'] == $haslo)
{
// O, jest ktos taki - zwroc jego ID
return $id;
}
}
// Jeżeli doszedłe¶ a tutaj, to takiego użytkownika nie ma
return false;
} // end czyIstnieje();
session_start();
session_regenerate_id();
if(!isset($_SESSION['licznik']))
{
$_SESSION['licznik'] = 0;
// Sesja się zaczyna, wiec inicjujemy użytkownika anonimowego
$_SESSION['userid'] = 0;
}
$_SESSION['licznik']++;
echo $_SESSION['licznik'];
if($_SESSION['userid'] > 0)
{
// Ktos jest zalogowany
echo 'Witaj, '.$uzytkownicy[$_SESSION['uzytkownik']]['login'].' na naszej stronie!';
echo "<a href=\"login.php\">Wyloguj</a>";
}
else
{
if(($id = czyIstnieje($_SESSION['user'], $_SESSION['haslo'])) !== false)
{
// Logujemy uzytkownika, wpisal poprawne dane
$_SESSION['userid'] = $id;
echo 'Dziekujemy, zostales zalogowany! <a href="sesja.php">TO samo</a>';
}
else
{
echo 'Podales nieprawidlowe dane, zegnaj! <a href="login.php">Dalej</a>';
}
}
?>
$uzytkownicy = array(1 =>
array('login' => 'user1', 'haslo' => sha1('ppp')),
array('login' => 'user2', 'haslo' => sha1('ddd')),
array('login' => 'user3', 'haslo' => sha1('fff'))
);
function czyIstnieje($login, $haslo)
{
global $uzytkownicy;
$haslo = sha1($haslo);
foreach($uzytkownicy as $id => $dane)
{
if($dane['login'] == $login && $dane['haslo'] == $haslo)
{
// O, jest ktos taki - zwroc jego ID
return $id;
}
}
// Jeżeli doszedłe¶ a tutaj, to takiego użytkownika nie ma
return false;
} // end czyIstnieje();
session_start();
session_regenerate_id();
if(!isset($_SESSION['licznik']))
{
$_SESSION['licznik'] = 0;
// Sesja się zaczyna, wiec inicjujemy użytkownika anonimowego
$_SESSION['userid'] = 0;
}
$_SESSION['licznik']++;
echo $_SESSION['licznik'];
if($_SESSION['userid'] > 0)
{
// Ktos jest zalogowany
echo 'Witaj, '.$uzytkownicy[$_SESSION['uzytkownik']]['login'].' na naszej stronie!';
echo "<a href=\"login.php\">Wyloguj</a>";
}
else
{
if(($id = czyIstnieje($_SESSION['user'], $_SESSION['haslo'])) !== false)
{
// Logujemy uzytkownika, wpisal poprawne dane
$_SESSION['userid'] = $id;
echo 'Dziekujemy, zostales zalogowany! <a href="sesja.php">TO samo</a>';
}
else
{
echo 'Podales nieprawidlowe dane, zegnaj! <a href="login.php">Dalej</a>';
}
}
?>
Pytanie czy w kolejnych podstronach wystarczy zaczac sesje session_start();
i sprawdzic wyłącznie czy userid >0






Czy napewno takie rozwiązanie jest bezpieczne

Jezeli ktos sobie stworzy stronę
<?php
session_start();
$_SESSION['userid']=1;
?>
<a href="sesje.php">Link</a>
to czy takie cos zadziała
