Autor | Zpráva | ||
---|---|---|---|
fili Profil |
#1 · Zasláno: 17. 1. 2014, 08:57:30
Zdravim,
v DB mi stale pribudaju prazdne riadky. Mam nasledujuci kod, kde mam chybu. <? error_reporting(E_ALL); $email = $_POST['email']; $email=MySQL_Real_Escape_String($email); $sql = "INSERT INTO news(email) VALUES('$email')"; $query=MySQL_Query($sql); if($sql){ echo "<center>Boli ste úspešne prihlásený.</center><br>"; } else { echo "E-mail sa nepodarilo vložiť!<br><br>"; echo "MySQL chyba:<span style='color:red'>".MySQL_Error()."</span><br>"; echo "SQL dotaz:<b>".htmlSpecialChars($sql)."</b><br>"; } mysql_close(); ?> |
||
Joker Profil |
#2 · Zasláno: 17. 1. 2014, 09:17:06
fili:
No, podle mé oblíbené metriky (WTF na řádek) ten kód nevychází moc dobře. Když to vezmu postupně: - Dát error_reporting E_ALL budiž, ale na ostrém webu doufám (marně), že do logu! K čemu jsou návštěvníkovi webu chybové hlášky? - Nejenže se hodnota $_POST['email'] nijak nekontroluje, ani se neověřuje, jestli vůbec nějaká existuje. Když tomu skriptu nepošlu žádná data, vesele si uloží do databáze prázdný záznam a vygeneruje notice (…o které se předpokládám nikdo nedozví, protože chybové hlášky se generují návštěvníkovi do stránky). - MySQL rozšíření je už zastaralé a nemělo by se v nových skriptech používat. - $sql je SQL dotaz, takže if ($sql) bude vždycky splněno, skript napíše „Boli ste úspešne prihlásený.“ i v případě, že by při provádění dotazu nastala chyba.
- Vzhledem k předchozímu bodu část else nikdy nemůže nastat. - I kdyby už by tam bylo if ($query) , to se v případě chyby návštěvníkovi stránky vypíše SQL dotaz a jaká v něm nastala chyba?
|
||
fili Profil |
#3 · Zasláno: 17. 1. 2014, 16:38:13
Joker:
Mam tam este takuto kontrolu pri odosielani formulara a ked to skusam, tak mi nedovoli odoslat prazdny formular. <SCRIPT LANGUAGE="JavaScript"> <!-- function kontrola(adresa, suhlas) { if (adresa.indexOf("@")<1) { alert("Zadali ste nesprávnu e-mailovú adresu!"); pokracuj=false; } else if (suhlas==false) { alert("Musíte potvrdiť súhlas!"); pokracuj=false; } else pokracuj=true; } // --> </SCRIPT> |
||
pcmanik Profil |
#4 · Zasláno: 17. 1. 2014, 16:42:41
fili:
A užívatelia s vypnutým javascriptom? Tý vašu ochranu jednoducho preskočia. |
||
fili Profil |
#5 · Zasláno: 17. 1. 2014, 20:45:25
pcmanik:
Fakt, na toto som nepomyslel. Vdaka za upozornenie. Ako by to teda malo byt spravne, aby to fungovalo ako ma? |
||
juriad Profil |
#6 · Zasláno: 17. 1. 2014, 20:51:48
fili:
Vždy ošetřuj všechno na serveru (nikdy nevěř ničemu, co ti pošle uživatel/útočník). „Ochrana“ v Javascriptu je jen usnadnění pro uživatele, které mu napoví, že formulář není správně vyplněný. |
||
fili Profil |
#7 · Zasláno: 19. 1. 2014, 23:00:38
juriad:
Ano, to som uz pochopil, ale ako ma vyzerat taky kod v PHP? |
||
Časová prodleva: 10 let
|
0