Jump to content

Odd behaviour for a simple SELECT or is my logic wrong?


rwwd

Recommended Posts

Hi there people of the database forum,

 

I don't often post on here, but this little query has me concerned, what have I done wrong, I can't see anything, but so long as the username & email are filled out, it appears that you could enter anything into the md5() password part, I cannot understand why this is so:

 

(all data to this point has been sanitised too :))

 

"SELECT * FROM `tester` WHERE `name` = '".$_POST['username']."' OR `user_email` = '".$_POST['username']."' AND `password` = '".md5($_POST['password'])."' LIMIT 1";

 

Any ideas?

 

Cheers,

Rw

AND takes precedence over OR - wrap the conditions in parenthesis:

SELECT * FROM tester
WHERE ( `name` = 'POSTED USER NAME' 
           OR user_email = 'POSTED EMAIL')
AND password = 'MD5 OF POSTED PASSWORD;

 

The way you had it should have worked as long as the name was correct, since it would have been interpreted as [ name = POSTED  OR  (email = POSTED AND password = POSTED) ]

 

 

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.