On 5/26/06, Brad Bonkoski <[EMAIL PROTECTED]> wrote:


Dotan Cohen wrote:

> In the php manual:
> http://www.php.net/manual/en/function.mysql-real-escape-string.php
>
> The following method is suggested:
> <?php
> // Quote variable to make safe
> function quote_smart($value)
> {
>   // Stripslashes
>   if (get_magic_quotes_gpc()) {
>       $value = stripslashes($value);
>   }
>   // Quote if not a number or a numeric string
>   if (!is_numeric($value)) {
>       $value = "'" . mysql_real_escape_string($value) . "'";
>   }
>   return $value;
> }
>
> // Connect
> $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
>   OR die(mysql_error());
>
> // Make a safe query
> $query = sprintf("SELECT * FROM users WHERE user=%s AND password=%s",
>           quote_smart($_POST['username']),
>           quote_smart($_POST['password']));
>
> mysql_query($query);
> ?>
>
> What is the purpose of the sprintf? If it were using %d on integers I
> could see the point, but as we're talking about %s strings, what is
> the advantage to using sprintf? How does this differ from:
> $query = "SELECT * FROM users WHERE user=".$_POST['username']." AND
> password=".$_POST['password'];
>
> Dotan Cohen
> http://linux-apache-mysql-php.org
> 23
>

Well they are passing the result of the quote_smart function into the
string.....
so it would be the same as say:
$user = quote_smart($_POST['username']);
$pass = quote_smart($_POST['pasword']);
$query = "select * from users where user=$user and password=$pass";

Your query would not use the quote_smart() function, as well as be wrong
it those values were strings....
-Brad



I meant:
$query = "SELECT * FROM users WHERE
user=".quote_smart($_POST['username'])." AND
password=".quote_smart($_POST['password']);

The point was, what's the advantage of the sprintf?

Dotan Cohen
http://what-is-what.com
921

Reply via email to