Autor | Zpráva | ||
---|---|---|---|
Vopiatos Profil |
#1 · Zasláno: 31. 1. 2011, 19:53:50 · Upravil/a: Vopiatos
Mam zde registraci kterou jsem stáhl z netu ale zda se mi trochu nefunkční sice vše funguje
ale když stránku pro registrované třeba neco.php kterou chci zobrazit jen pro vyvolené, zkopiruju adresu: 127.0.0.1/neco.php tak se zobrazi přitom by neměla měla by vypadat asi takto: 127.0.0.1/neco.php?id=1&code=4a2c9b17324f56d229120ea3af0741b7 aby se zobrazila jen registrovaným. Kde je prosím chyba. Nebo že by to dělali cokies. index.php <? include("config.php"); $spojeni=mysql_connect($MySQL_server,$MySQL_user,$MySQL_user_password); $spojenidb=mysql_select_db($MySQL_db); if (!$spojeni) { echo"Nepodarilo se navazat spojeni se serverem."; exit; } $prihlasen=""; if($co=="logout"){ MySQL_Query("UPDATE $MySQL_tabulka SET ip='' WHERE id='$id';"); $code=""; $error="<b>Nyní jste byl odhlášen.</b><br>Pokud budete chtít dále pokračovat v režimu pro registrované, musíte se znova přihlásit<br><br>"; } if($nick!=""){ $bb = MySQL_Query("SELECT * FROM $MySQL_tabulka WHERE nick='$nick';"); echo MySQL_Error(); $aa=MySQL_Fetch_Array($bb); if(($aa[heslo]==$heslo) and ($heslo!="")){ $IP=$REMOTE_ADDR; MySQL_Query("UPDATE $MySQL_tabulka SET ip='$IP' WHERE nick='$nick';"); $time=time(); MySQL_Query("UPDATE $MySQL_tabulka SET posledni_akce='$time' WHERE nick='$nick';"); $kod=MD5($time.$REMOTE_ADDR); MySQL_Query("UPDATE $MySQL_tabulka SET kod='$kod' WHERE nick='$nick';"); $url="id=".$aa[id]."&code=".$kod; $prihlasen=$aa[id]; } else {$error="Přihlášení se nepodařilo. Špatné uživatelské jméno, nebo heslo.<br><br>";} } if($code!=""){ $bb = MySQL_Query("SELECT * FROM $MySQL_tabulka WHERE id='$id';"); $aa=MySQL_Fetch_Array($bb); $rozdil = time() - $aa[posledni_akce]; if($rozdil>300 or $rozdil<0) $povol="ne"; if(($aa[kod]==$code)and($aa[ip]==$REMOTE_ADDR) and ($povol=="")){ $time=time(); MySQL_Query("UPDATE $MySQL_tabulka SET posledni_akce='$time' WHERE id='$id';"); $url="id=".$id."&code=".$code; $prihlasen=$id; } else {$str="";MySQL_Query("UPDATE $MySQL_tabulka SET ip='' WHERE id='$id';"); $error="<b>Nejste přihlášen</b><BR>Buď nesouhlasí IP, nebo se provedlo automatické odhlášení, kvůli neaktivitě delší než 5 minut. Přihlaste se proto prosím znovu.<br><br>";} } ?> <!-- zacatek - nejaka stranka --> <HTML> <HEAD> <META name="resource-type" content="document"> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1250"> <META HTTP-EQUIV="pragma" CONTENT="no-cache"> <TITLE>Moje stranka</TITLE> </HEAD> <BODY> <table> <tr><TD width="150"> <!-- konec - nejaka stranka --> <!-- zacatek - prihlasovaci okno/okno pro registrovane --> <TABLE><tr><td align="center"> <?if($prihlasen==""){?> <TABLE width="165"><tr><td align="center"> <TABLE width="100%"><tr><TD align="center" width="100%"><b>Login</b></table> <table><FORM method="post" action="index.php"> <tr><td valign="top"> <td valign="top"> <tr><td valign="top">Nick:<td valign="top"><INPUT type="text" name="nick" size="10"> <tr><TD valign="top">Heslo:<td valign="top" ><INPUT type="password" name="heslo" size="10"> <tr><th colspan="2"><INPUT type="submit" value="LOGIN"> <tr><th colspan="2"><a href="registrace.php"><FONT size="2">REGISTRACE</FONT></a> </FORM> </table></table> <?}else{ $bb = MySQL_Query("SELECT * FROM $MySQL_tabulka WHERE id='$prihlasen';"); $aa=MySQL_Fetch_Array($bb); $kredit=$aa[kredit]; echo'<TABLE width="165"><tr><td align="center">'; echo'<TABLE width="100%"><tr><TD align="center" width="100%"><b>Uživatel</b></table>'; echo "<table><tr><TD align=\"right\"><b>Přihlášen:</b><td>$aa[jmeno]</table>"; echo "<A href=\"index.php?$url\">Hlavní strana</A><br>"; echo "<A href=\"neco.php?$url\">Něco pro registrované</A><br>"; echo "<A href=\"index.php?co=logout&$url\">ODHLÁSIT</A>"; echo'</table>'; } ?> </table> <!-- konec - prihlasovaci okno/okno pro registrovane --> <!-- zacatek - nejaka stranka --> <TD width="*"> <? // vypis chyb pri logoani do nejake stranky echo $error; ?> </body> </html> <!-- konec - nejaka stranka --> <?MySQL_close();?> registrace.php <HTML> |
||
Vopiatos Profil |
#2 · Zasláno: 31. 1. 2011, 19:58:13
a jeste tabulka:
CREATE TABLE registrace( id int( 11 ) NOT NULL auto_increment, jmeno varchar( 30 ) NOT NULL default '', adresa varchar( 150 ) NOT NULL default '', nick varchar( 20 ) NOT NULL default '', heslo varchar( 25 ) NOT NULL default '', mail varchar( 35 ) NOT NULL default '', mobil varchar( 13 ) NOT NULL default '', kod varchar( 100 ) NOT NULL default '', ip varchar( 20 ) NOT NULL default '', posledni_akce bigint( 20 ) NOT NULL default '0', UNIQUE KEY id( id, adresa ) ); |
||
Tori Profil |
#3 · Zasláno: 31. 1. 2011, 20:09:24
jak vypadá config.php - nespoléhá se na register_globals a session_register ? (= Ptám se, odkud se bere proměnná $code.)
|
||
Vopiatos Profil |
#4 · Zasláno: 31. 1. 2011, 20:28:12 · Upravil/a: Vopiatos
config.php
<? $MySQL_server="localhost"; $MySQL_user=""; $MySQL_user_password=""; $MySQL_db=""; $MySQL_tabulka=""; ?> |
||
Tori Profil |
#5 · Zasláno: 31. 1. 2011, 20:42:35 · Upravil/a: Tori
Aha, až teď jsem se pořádně koukla, že přihlášení se řeší pouze přilepováním md5 haše za každou použitou URL na stránce a ověřováním proti DB při každém požadavku. To je dost zbytečné, nemluvě o nutnosti uhlídat všechny odkazy, aby obsahovaly ten kód.
Dalo by se to přepsat na používání session, anebo zkusit najít jiné hotové řešení, které session využívá. |
||
Časová prodleva: 13 let
|
0