Re: [PHP-DB] Slashes or no slashes
[email protected] (Karl DeSaulniers)
| Newsgroups | php.db |
|---|---|
| Message-ID | <[email protected]> |
On Aug 23, 2010, at 10:04 PM, Karl DeSaulniers wrote:
> On Aug 23, 2010, at 9:31 PM, Chris wrote:
>
>>
>>> To be more specific. Is this correct?
>>>
>>> function confirmUP($username, $password){
>>> $username = mysql_real_escape_string($username);
>>>
>>> /* Verify that user is in database */
>>> $q = "SELECT password FROM TBL-U WHERE username = '$username'";
>>
>> I normally do it in the query in case you use the variable
>> somewhere else but here it's ok because you don't use $username
>> elsewhere. Be careful though, it may bite you and it will be
>> difficult to track down.
>>
>> eg
>>
>> $q = "select password from table where username='" .
>> mysql_real_escape_string($username) . "'";
>>
>> echo "You entered " . htmlspecialchars($username) . ", either it
>> was wrong or the password was wrong. Try again.";
>>
>> Doing the escape_string before the query means you end up with
>> (basically)
>>
>> htmlspecialchars(mysql_real_escape_string($username));
>>
>> which will cause weird characters to show up in certain cases.
>>
>>> $result = $this->query($q);
>>> if(!$result || (mysql_numrows($result) < 1)){
>>> return 1; //Indicates username failure
>>> }
>>>
>>> /* Retrieve password from result */
>>> $dbarray = mysql_fetch_array($result);
>>> $dbarray['password'] = htmlspecialchars($dbarray['password']);
>>> $password = mysql_real_escape_string(md5($password));
>>> $password = htmlspecialchars($password);
>>
>> You're not displaying the password so don't htmlspecialchars it.
>>
>> Just:
>>
>> if ($dbarray['password'] == md5($password)) {
>> return 0; // success!
>> }
>>
>> Only specialchars it when you display it (like the echo above).
>>
>> --
>> Postgresql & php tutorials
>> http://www.designmagick.com/
>>
>>
>> --
>> PHP Database Mailing List (http://www.php.net/)
>> To unsubscribe, visit: http://www.php.net/unsub.php
>>
>
>
> Ahhh. I see.
> But I do still put the escape on what they entered so it will match
> what is in the database.
> Ok. Thank you Thank you Thank you.
>
> Best,
>
> Karl DeSaulniers
> Design Drumm
> http://designdrumm.com
>
>
> --
> PHP Database Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
Just to make sure, cause I am ready to get past this.
Is this correct?
function confirmUP($username, $password){
/* Verify that user is in database */
$q = "SELECT password FROM ".TBL_USERS." WHERE username =
'".mysql_real_escape_string($username)."'";
$result = $this->query($q);
if(!$result || (mysql_numrows($result) < 1)){
return 1; //Indicates username failure
}
/* Retrieve password from result */
$dbarray = mysql_fetch_array($result);
$dbarray['password'] = htmlspecialchars($dbarray
['password']); //Or is this where I need to leave htmlspecialchars
off too?
/* Validate that password is correct */
if(md5($password) == $dbarray['password']){
return 0; //Success! Username and password confirmed
}
else{
return 2; //Indicates password failure
}
}
Karl DeSaulniers
Design Drumm
http://designdrumm.com