mysql

HackForum

mysql#
cus,mam takovej problemek z db chtel bych se zeptat v cem tady delam chybu pri kazdy kontrole mi to napise ze zadany nick jiz existuje ..ale ja sem si jist ze zadavam pokazde jiny...jinak to poustim na wz
tadz je script:

function prezdivkavdb($nick)
{$vysledek=mysql_query("select * from uzivatel where nick ='".$nick."'");
return (boolean) mysql_num_rows($vysledek);}

if (prezdivkavdb($nick)) {echo "Zadaný nick je již použitý."; exit;}


(odpovědět)
snapi26.9.2006 13:36
re: mysql#
mno, newim, ja bych to asi zkusil takhle:

function prezdivkavdb ($nick) {
$vysledek=MySQL_Query("SELECT nick FROM uzivatel WHERE nick='$nick'");
if (mysql_num_rows($vysledek)>0) return true; else return false;
}

ten radek "return (boolean) mysql_num_rows($vysledek)" jsem moc nepochopil, ale to byze byt zpusobeno tim, ze jsou erupce na slunci... ;)


(odpovědět)
Prooyam | E-mail | ICQ 39095969226.9.2006 14:01
re: mysql#
Prooyam :ani takhle to nejde ...mozna to muze bejt tou db na wz .. nejde mi ani jednoducha podminka
if(!$nick){echo "Musíte zadat nick."; exit;} taky z nickem...dik
(odpovědět)
snapi26.9.2006 14:22
re: mysql#
tak podle me to DB na wz urcite neni... asi tam jeste budes mit jinou chybku...
(odpovědět)
Prooyam | E-mail | ICQ 39095969226.9.2006 14:37
re: mysql#
A takto by to melo vypadat v KVALITNIM skriptu:

function prezdivkavdb ($nick) {
$vysledek=MySQL_Query('SELECT COUNT (*) FROM uzivatel WHERE nick="'.AddSlashes($nick).'"');
return $vysledek[0]==0;
}
(odpovědět)
--==[FReeZ]==-- | E-mail | Website26.9.2006 15:23
re: mysql#
vraci true, kdyz nick neni nalezen v DB
(odpovědět)
--==[FReeZ]==-- | E-mail | Website26.9.2006 15:24
re: mysql#
function neni_tam($nick){
$res=mysql_query("SELECT * FROM `uzivatele` WHERE `nick`='".$nick."';");
return $res?false:true; }

kdyz tam neni, vraci true, jinak false...
(odpovědět)
dayvee | Website | ICQ 26899873326.9.2006 17:28
re: mysql#
dayvee:
1. neni to imunni vuci SQL injection
2. vybiras zbytecne vsechny uzivatele, misto abys je pocital (rozdil mezi pocet++; a pridanim novych retezcu do pole znas)
3. proto je tve reseni mnohem pomalejsi

(odpovědět)
--==[FReeZ]==-- | E-mail | Website26.9.2006 18:33
re: mysql#
freez: v pripade ze tam skutecne neni, ho to nenajde tak jako tak a nic nezapocita, proto na tom neni nic pomalejsiho. ze to neni imunni? to zalezi na pouziti.... radsi totiz provedu najednou par prikazu co "osetrej" nejakej string, nez abych je spoustel opkazdy zvlast. je to efektivnejsi... a k tomu, sql injection tady nehraje dulezitou roli, i kdybys s tim delal cokoliv, tak pomoci funkce co vraci bool nevymamis z databaze zadnou dulezitou informaci... takze nema cenu se tim moc zabejvat
(odpovědět)
dayvee | Website | ICQ 26899873327.9.2006 16:04
re: mysql#
dayvee: na tohle pozor, pri nejmensim lze celou databazi sdeletovat (kdyz bude mit uzivatel prihlaseny k db dostatecna privilegia), nebo lze celou db vyexportovat do souboru a ten si pak stahnout. Urcite by se toho naslo vic, co by se dalo provest ciste pomoci SQL, kazdopadne je lepsi jak rikas vsechny vstupy od usera osetrit ihned a tim se vyvarovat pozdejsich der
(odpovědět)
--==[FReeZ]==-- | E-mail | Website27.9.2006 17:15

Zpět
 
 
 

 
BBCode