Zadejte hledaný výraz...

[MySQL] Double AND v Dotazu

Zdravím, chci se zeptat jak dostanu 2x And do sql dotazu
SELECT * FROM members WHERE (username='$myusername' and password='$mypassword') and trida='$myclass'
ma to vybrat z tabulky members a porovnat zda souhlasí Jméno, Heslo a Třída ale nějak to neudělá nic
Používám Placenou verzi PhpStorm pro Linux.
Complete Code
include('./conf/config.ini');
$myusername=$_POST;
$mypassword=$_POST;
$myclass=$_POST;
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM members WHERE (username='$myusername' and password='$mypassword') and trida='$myclass'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count==1){
while ($data = mysql_fetch_assoc($sql))
{
$_SESSION = $myclass;
$_SESSION = $myusername;
$_SESSION = $mypassword;
header("location:./xxx/index.php");
}
}
else {
echo "Jmeno nebo Heslo nebo Třída nesouhlasí";
}
5. 5. 2013 21:57:10
https://webtrh.cz/diskuse/mysql-double-and-v-dotazu/#reply898183
Milan Šťovíček
verified
rating uzivatele
5. 5. 2013 22:10:05
Zavorky v sql dotazu jsou zbytecne (AND je asociativni operace) - (X and Y and Z) je stejne jako X and (Y and Z) i (X and Y) and Z
V uvedenem prikladu by muselo byt heslo v databazi ulozeno v citelnem formatu (plain textu) bez zadneho kodovani, coz nepredpokladam. Heslo bude pravdepodobne kodovano pomoci md5(), mozna i s nejakym salt retezcem. To je potreba vycist bud z dokumentace systemu, ktery pouzivas nebo z jinych zdrojovych kodu (z tech, ktere heslo ukladaji/meni). Pokud bych musel neco poradit, zkusil bych nasledujici:
5. 5. 2013 22:10:05
https://webtrh.cz/diskuse/mysql-double-and-v-dotazu/#reply898182
Macejko.sk
verified
rating uzivatele
(5 hodnocení)
5. 5. 2013 22:12:13
Sql dotaz je ako tak v poriadku. Trosku bordel zo zavorkamy a s pouzitymi apostrofmi. Bud pouzivaj " kde ti budu premenne vybublavat. Alebo pouzivaj ' kde musis spojovat text a premenne. Takto mi to pride zbytocne.
Zaraza ma ta logika, kontrolujes ci count == 1 a potom while cyklus, wtf?
5. 5. 2013 22:12:13
https://webtrh.cz/diskuse/mysql-double-and-v-dotazu/#reply898181
Milan Šťovíček
verified
rating uzivatele
5. 5. 2013 22:13:02
A jeste kdyz to ctu me napada otazka, proc u uzivatelskeho jmena a hesla osetrujes vstup (stripslashes(), mysql_real_escape_string()) a u tridy ne? Nepozornosti se vystavujes nebezpeci SQL injection.
---------- Příspěvek doplněn 05.05.2013 v 22:14 ----------
Napsal Michal Macejko;945721
Zaraza ma ta logika, kontrolujes ci count == 1 a potom while cyklus, wtf?
Navic promennou $data vubec nepouzije ...
5. 5. 2013 22:13:02
https://webtrh.cz/diskuse/mysql-double-and-v-dotazu/#reply898180
Macejko.sk
verified
rating uzivatele
(5 hodnocení)
5. 5. 2013 22:18:20
Tak to som si ani nevsimol. A ukladat do sessions meno uzivatela a heslo? Dufam ze nepracujes na nejakom prihlasovani, lebo toto je absolutne zle.
5. 5. 2013 22:18:20
https://webtrh.cz/diskuse/mysql-double-and-v-dotazu/#reply898179
bohuziel pracujem
heslo není nijak zadělávané hashem ani md5 ani sha1 ani sha2
zkoušel jsem to ted všeljak ale nijak to nechce fungovat :(
neveděl by mi to někdo přepsat aby to fungovalo ?
---------- Příspěvek doplněn 05.05.2013 v 22:40 ----------
chyba vyřešena :D
díky Michal Macejko a stovicek.milan
chyba byla s while
jinak While, Odstraněn, a doplněna ochrana proti SQL Injectionu
5. 5. 2013 22:37:45
https://webtrh.cz/diskuse/mysql-double-and-v-dotazu/#reply898178
Milan Šťovíček
verified
rating uzivatele
5. 5. 2013 22:42:06
nojo, misto $sql patri $result, ze? Toho uz jsem si nevsiml :)
5. 5. 2013 22:42:06
https://webtrh.cz/diskuse/mysql-double-and-v-dotazu/#reply898177
ee to while to blokovalo :D
nenačetly se sessiony takže to nemohlo pustit dál
5. 5. 2013 22:44:28
https://webtrh.cz/diskuse/mysql-double-and-v-dotazu/#reply898176
Pro odpověď se přihlašte.
Přihlásit