Sessions - ověření

Vim že tenhle kod vypadá divně ale jinak jsem to nevymyslel a ono to stejně nefunguje. Nevíte jak na to? dík

MySQL_Query("Select * from redakce where login='$login' and heslo='$heslo'");
if
$_SESSION['login'] != $login
{
header ("Location: login.php");
}

if
$_SESSION['heslo'] != $heslo
{
header ("Location: login.php");
}
ja by som to spravil racej nejako takto:



<?
if ($login && $heslo) {
$sql=mysql_query("SELECT * FROM `redakce`") or die(mysql_error());
while ($row=mysql_fetch_array($sql)) {
if ($row['login']==$login && $row['heslo']==$heslo) {
$_SESSION['login'] != $login;
$_SESSION['heslo'] != $heslo;
header("location:login.php");
}
}
}
?>



* mozno ti to nefunguje preto, lebo funkcia header(location: x) nefunguje ak to mas includovane. Ak to chces prasmerovat a mas include, tak to skus racej pomocou maeta tagov alebo javascriptu.
Zaprve, na zacatku kazdyho skriptu, ktery pouziva sessions, musi byt

<?php
session_start();
?>

Ja sessions pouzivam u overovani prihlaseni jednu session promennou, ktera se vytvori pri prvnim uspesnem overeni podle databaze a zrusi se pri odhlaseni (pripadne expiraci session). Opakovane overovani podle databaze odpada diky obycejne kontrole existence te session promenne:



priklad MySQL:

users (id=int,name=text,password=text,last_login=int)
heslo je ulozeno jako md5 hash



priklad login.php

<?php
if (isset($POST["login"])) { ?>

<form> <!-- prihlasovaci formular. pole: name(text), password(password), target:login.php -->
...
</form>

<? }

session_start();
$result = mysql_query("SELECT id
FROM users
WHERE
name='$_POST[name]'
AND password=MD5('$_POST[heslo]')
LIMIT 1");

if (mysql_num_rows($result)) { // prihlaseni uspesne

session_register("user_id"); // registrace prihlaseni
$_SESSION["logged_user"] = mysql_result($result,0,0);
$next = "index.php?log=ok";

mysql_query("UPDATE users
SET last_login=UNIX_TIMESTAMP()
WHERE id='$_SESSION[logged_user]'
LIMIT 1");

}
else $next = "index.php?log=error";
header("Location: $next");
?>



priklad index.php , vsechny_stranky_vyzadujici_overeni.php

<?php
session_start();
if (!session_is_registered("logged_user")) {header("Location: login.php?login"); die();}
....
?>



priklad logout.php

<?php
session_start();
session_unregister('logged_user');
?>