| 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: 13 let
|
|||
0