Původně odeslal
Hardman
V ramci optimalizace webu premyslim, ze session budu inicializovat az v momente, kdy se overi uzivatel
A jaky je to problem? Vzdit stci udelat jen podminku misto toho cyklu ne?
treba nejak takhle
Kód:
if (mysql_num_rows($result) == 0) return;
$user = mysql_fetch_object($result);
session_start();
$_SESSION["user"] = $user -> name;
$_SESSION["passwd"] = $user -> passwd;
Jinak bych tu SESSION startoval nekde mimo tzn.: ne v index.php ale treba login.php kde se provedou prislusna overeni a pak redirekt na index.php nebo na neco jineho, kde jeste pred hlavickama bude metoda, ktera bude overovat zda nevyprselo casove kvantum, ktere dostal treba 15 min. (900 sec.) popripade muzes overovat i jina data dle obsahu SESSION.
IMHO ten while cyklus je to same to co jsem napsal ja. Nevidim v nem zadnou zavaznou chybu, ktera by se mela menit (optimalizovat) az na to ze je obsolote.
EDIT:
neco rychleho.
soubor login.php
Kód:
<?php
if (!isset($_POST["logingOn"])) return; // poslu ho do haje pokud to neslo z meho logovaciho formulare
$res = mysql_query("SELECT .....");
if (mysql_num_rows($res) == 0) return; // take neprijatelne
session_start();
$_SESSION["name"] = addslashes(htmlspecialchars($_POST["name"]));
$_SESSION["passwd"] = htmlspecialchars(md5($_POST["passwd"]));
$_SESSION["time"] = time() - 900; // nastavim casovou znacku o 15min. dozadu
header("location:// na zabezpecenou stranku");
?>
soubor validation.php
Kód:
<?php
session_start();
$res = mysql_query("SELECT ....... name = $_SESSION["name"] && passwd = $_SESSION["passwd"]");
if (mysql_num_rows($res) == 0) return; // posles ho zas do kytek nejlepe na prihlaseni :-)
if ($_SESSION["time"] > time()) return; // uz tu dlouho nic neudelal
$_SESSION["time"] = time() - 900;
?>
ostatni soubory do kterych nechces aby ti nekdo vstoupil bez autentizace
Kód:
<?php
require_once("validation.php");
?>
<!-- no a tady je uz ten tvuj bezpecnej zbytek //-->
Psal jsem to z hlavy a rovnou sem takze pokud to pouzijes tak to bude chtit doladit.