Jump to content

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


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

 

 

Hi there DavidAM,

 

I shall just try the amended code & see what happens, fortunately this is for an intranet site & as yes on one has reported this to me :)

 

[EDIT] Cheers, works like a treat

 

Cheers,

Rw

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.