Autor Zpráva
unk
Profil *
Zdravím,

chtěl bych se zeptat na radu. Mám fungující registraci, login. Ale nechci mít v každý stránce zdrojový kod indexu, tak se snažím udělat přes require. Ale mám zádrhel. na www.bude.wu.cz login: unk heslo:310310 si můžete vyzkoušet co to dělá. Nevím si vůbec rady. Děkuji předem za odpovědi a rady.

Takto vypadá index.php:


<?
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("mysql.ic.cz", "ic_unk", "***");  // heslo smazal moderátor
$MS = MySQL_Select_DB("ic_unk");

If ((IsSet($login)) AND (IsSet($password))):
$p = MD5($password);
$MSQ = MySQL_Query("SELECT * FROM users WHERE (login LIKE '$login') AND (password LIKE '$p')");

If (MySQL_Num_Rows($MSQ) <> 1):
echo "Neautorizovaný přístup";
Exit;

Else:
$SN = "autorizace";
Session_name("$SN");
Session_start();
$sid = Session_id();
$time = Date("U");
$at = Date("U") - 1800;

$MSQ = MySQL_Query("INSERT INTO autorizace VALUES ('$sid', $time)");
$MSQ = MySQL_Query("DELETE FROM autorizace WHERE time < $at");
Endif;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<title>Autorizace</title>
</head>
<link rel = "stylesheet" type = "text/css" href = "./design.css" />
<body>
<div id = "obsah">




<div id ="logo"></div>
<div id = "levy">

<ul id = "menu">
<li> <a href="autorizace.php?id=1" >HOME</a></li>
 <li> <a href = "autorizace.php?id=2" >EMAIL</a></li>
 <li> <a href = "autorizace.php?id=3" >Zivot</a></li>
 <li> <a href = "autorizace.php?id=4" >Galerie</a></li>
</ul>

<a href="index.php?id=true">Odhlásit se</a> 
<br>
<p>
<a href="http://jigsaw.w3.org/css-validator/check/referer">
    <img style="border:0;width:88px;height:31px"
        src="http://jigsaw.w3.org/css-validator/images/vcss-blue"
        alt="Valid CSS!" />
</a>
</p>

</div>

<div id = "hlavnipanel">
<?
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("mysql.ic.cz", "ic_unk", "***"); // připojíme se k databázi
$MS = MySQL_Select_DB("ic_unk");

If (!IsSet($autorizace)): // pokud cookie neexistuje, vyhodíme uživatele
echo "Neautorizovaný přístup";
Exit;
Else:
SetCookie("autorizace", "true", Date("U") + 15*60); // pošleme cookie s novějším časem expirace
Endif;
MySQL_Close($MC); // uzavřeme spojení s databází
?>

<?
switch ($_GET['id']) {
case '1': require "./require/index_2.php";
break;
case '2': require "./require/sendmail.php";
break;
case '3': require "./require/galerie.php";
break;
case '4': require "./require/zivotopis.php";
break;

}

?>

      
</div>
<div id = "pata">
Kontakt: UNK.Cory@seznam.cz
Jmeno: Richard Čechura
Design by Coriii
</div>
</div>

<?
Elseif (IsSet($lo)):

$SN = "autorizace";
Session_name("$SN");
Session_start();
$sid = Session_id();

$MSQ = MySQL_Query("DELETE FROM autorizace WHERE id = '$sid'");
echo "Byl(a) jste odhlášen(a)!";
Else:
?>
<form action="autorizace.php" method="post">
<input type="Text" name="login">
<br>
<input type="Password" name="password">
<br>
<input type="Submit" value="Přihlaš">
</form>
<?Endif;?>
</body>
</html>
<?MySQL_Close($MC);?> 



v každým souboru, který pak má být přístupný po přihlášení má být ještě tento MySQL kod:

<?
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("mysql.ic.cz", "ic_unk", "***"); // připojíme se k databázi
$MS = MySQL_Select_DB("ic_unk");

If (!IsSet($autorizace)): // pokud cookie neexistuje, vyhodíme uživatele
echo "Neautorizovaný přístup";
Exit;
Else:
SetCookie("autorizace", "true", Date("U") + 15*60); // pošleme cookie s novějším časem expirace
Endif;
MySQL_Close($MC); // uzavřeme spojení s databází
?>
unk
Profil *
oprava: www.budu.wu.cz
unk
Profil *
to fakt nikdo nevíte ? :(
AM_
Profil
Spíš se nikomu nechce luštit taková kvanta ještě blbě formátovaného kódu. Zkus problém nějak zjednodušit, zanalyzuj si, kde přesně dostáváš nějaký neočekávaný výsledek, až bude znít dotaz třeba "tady a tady mám určitou proměnnou, kterou odtud nemůžu přečíst", tak ti třeba někdo poradí.
Už jenom tohle je otřesnost:
SELECT * FROM users WHERE (login LIKE '$login') AND (password LIKE '$p')
If (MySQL_Num_Rows($MSQ) <> 1):
Když někdo bude mít třeba jméno FRANTA a někdo FRANTA1, tak to oboum při přihlášení vyplivne neautorizovaný přístup. Za1, porovnávej přes =, ne přes LIKE; za2, ta podmínka by měla být spíš mysql_num_rows($msq) == 0 nebo když už tak jen <1.
unk
Profil *
No tak děkuju. Podívám se na to pořádně, a napíši sem kdyžtak co kde jak....
unk
Profil *
Už jsem to vyřešil. Díky.
xwc
Profil *
Už jenom tohle je otřesnost:
SELECT * FROM users WHERE (login LIKE '$login') AND (password LIKE '$p')
If (MySQL_Num_Rows($MSQ) <> 1):
Když někdo bude mít třeba jméno FRANTA a někdo FRANTA1, tak to oboum při přihlášení vyplivne neautorizovaný přístup. Za1, porovnávej přes =, ne přes LIKE; za2, ta podmínka by měla být spíš mysql_num_rows($msq) == 0 nebo když už tak jen <1.

Neříkám, že já bych to takhle napsal, ale podle mě by to mělo dělat přesně to, co se od toho očekává, čili vrátit buď jeden nebo žádný řádek. Aspoň podle mých zkušeností s MySQL pokud porovnávaný řetězec neobsahuje zástupné znaky, tak se LIKE chová stejně jako =. Pro = ale zástupné znaky nelze použít.

Takže tohle bych jako problém neviděl.
unk
Profil *
Tak jsem to vyřeil.

Ale trápí mě problém tento

www.unk.ic.cz při přihlášení je vše v pohodě, ale v režimu, kdy pracuji jako
přihlášený uživatel a kliknu na odkaz v menu se otevře požadovaný odkaz ale už
bez CSS designu
Nevím kde by mohl být problém

už.jm.: unk
heslo: 310310
AM_
Profil
Zkoušel sis vůbec zobrazit zdrojový kód? 2x hlavička doctype a žádné formátování HTML dokumentu (<html><head>...)... tohle tě nenapadlo? vždyť tam ani definice CSS není...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: