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

Link to comment
Share on other sites

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) ]

 

 

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.