Mam jednoduchy script na prihlasenie uzivatela:
Kód:
<?
Header("Pragma: No-cache");
Header("Cache-Control: No-cache, Must-revalidate");
Header("Expires: ".GMDate("D, d M Y H:i:s")." GMT");
$MC = MySQL_Connect("xxxxxx", "xxxxxx", "xxxxxx");
$MS = MySQL_Select_Db("xxxxxxx");
If ((IsSet($_POST[login])) AND (IsSet($_POST[password]))):
$password=$_POST[password];
$login=$_POST[login];
$p = MD5(sha1($password));
$MSQ = MySQL_Query("SELECT * FROM users WHERE (login LIKE '$login') AND (password LIKE '$p')");
If (MySQL_Num_Rows($MSQ) <> 1):
echo "Neautorizovaný prístup";
Exit;
Else:
$SN = "autorizacia";
Session_name("$SN");
Session_start();
$sid = Session_id();
$date = Date("U");
$at = Date("U") - 1800;
$MSQ = MySQL_Query("INSERT INTO autorizacia VALUES ('$sid', $date)");
$MSQ = MySQL_Query("DELETE FROM autorizacia WHERE date < $at");
Endif;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Autorizacia</title>
</head>
<body>
Prihlasenie prebehlo v poriadku. Tu bude stranka.
Dalsia podstranka <a href='stranka.php'>Link</a>
<?
Elseif (IsSet($lo)):
$SN = "autorizacia";
Session_name("$SN");
Session_start();
$sid = Session_id();
$MSQ = MySQL_Query("DELETE FROM autorizacia WHERE id = '$sid'");
echo "Boli ste odhlaseny";
Else:
?>
<form action="autorizacia.php" method="post">
<input type="Text" name="login">
<br>
<input type="Password" name="password">
<br>
<input type="Submit" value="Prihlasenie">
</form>
<?Endif;?>
</body>
</html>
Toto funguje dobre - teda po prihlaseni skontroluje udaje s udajmi v databaze a vypise Prihlasenie prebehlo v poriadku. Tu bude stranka.
Potom tam mam link na nejaku dalsiu podstranku:
Kód:
Dalsia podstranka <a href='stranka.php'>Link</a>
Ked sa otvori tato dalsia stranka, includujem do nej script napr. overenie.php, ktory overi, ci ma uzivatel pristup na tuto stranku - teda iba ak je prihlaseny. Ten script overenie.php je tu:
Kód:
<?
$MC = MySQL_Connect("xxxxxx", "xxxxxx", "xxxxxx");
$MS = MySQL_Select_Db("xxxxxx");
$SN = "autorizacia";
Session_name("$SN");
Session_start();
$sid = Session_id();
$date = Date("U");
$ad = Date("U") - 300;
$MSQ = MySQL_Query("SELECT * FROM autorizacia WHERE (id = '$sid') AND (date >= $ad)");
If (MySQL_Num_Rows($MSQ) <> 1):
echo "Neautorizovaný prístup";
Exit;
Else:
$MSQ = MySQL_Query("UPDATE autorizacia SET date = $date WHERE id = '$sid'");
Endif;
MySQL_Close($MC);
?>
Teda ta podstranka vyzera napr. takto /stranka.php/:
Kód:
include ('overenie.php');
bla blabla ....
<a href="autorizacia.php?lo=true">Odhlásit sa</a>
Problem je v tomto includovanom scripte pri funkcii Session_start(); - tu mi vypisuje
Kód:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /domains1/...../root/stranka.php:2) in /domains1/.../root/overenie.php on line 9
Line 9 je presne to Session_start();. Lenze ja to musim pouzit v kazdej podstranke. Neviem ake headers boli uz poslane, ked je ten script includovany na samom zaciatku stranky. Viete mi prosim poradit v com je chyba? Diky