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 * |
#2 · Zasláno: 17. 4. 2009, 00:27:17
oprava: www.budu.wu.cz
|
||
unk Profil * |
#3 · Zasláno: 18. 4. 2009, 13:09:39
to fakt nikdo nevíte ? :(
|
||
AM_ Profil |
#4 · Zasláno: 18. 4. 2009, 14:37:10
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 * |
#5 · Zasláno: 18. 4. 2009, 14:51:49
No tak děkuju. Podívám se na to pořádně, a napíši sem kdyžtak co kde jak....
|
||
Časová prodleva: 7 dní
|
|||
unk Profil * |
#6 · Zasláno: 25. 4. 2009, 20:03:57
Už jsem to vyřešil. Díky.
|
||
xwc Profil * |
#7 · Zasláno: 26. 4. 2009, 09:35:01
„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. |
||
Časová prodleva: 3 dny
|
|||
unk Profil * |
#8 · Zasláno: 28. 4. 2009, 22:35:16
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 |
#9 · Zasláno: 29. 4. 2009, 09:40:26
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í...
|
||
Časová prodleva: 15 let
|
0