Re: using mysql_escape_string with implode() !!

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Seems to me you'd be better off then writing code to handle all of
these, with is_array() doing the walk, and erroring out for Object and
Resource

Actually, an object should get type-casted to a string, and there's
even that nifty thing in PHP 5 where you can control what string it
gets changed to...  At least, that's what I would expect, as a naive
user, if __to_string or whatever it is is supposed to work.

Ah well.

On Thu, May 31, 2007 6:25 pm, Jim Lucas wrote:
> Richard Lynch wrote:
>> On Wed, May 30, 2007 9:55 pm, Jim Lucas wrote:
>>> Greg Donald wrote:
>>>> On 5/30/07, Richard Lynch <ceo@xxxxxxxxx> wrote:
>>>>> You want to use mysql_escape_string, and NOT addslashes and NOT
>>>>> Magic
>>>>> Quotes.
>>>> function slashes( $var )
>>>> {
>>>>  if( is_array( $var ) )
>>>>  {
>>>>    return array_map( 'slashes', $var );
>>>>  }
>>>>  else
>>>>  {
>>>>    return mysql_real_escape_string( $var );
>>>>  }
>>>> }
>>> Say I wanted to use this on something other than $_GET, $_POST, &
>>> $_COOKIE?
>>>
>>> Would it not be better practice to do this the other way around?
>>>
>>> function slashes ( $var ) {
>>>     if ( is_scalar($var) ) {
>>>          return mysql_real_escape_string( $var );
>>>     } else {
>>>          return array_map( 'slashes', $var );
>>>     }
>>> }
>>>
>>> This way, even if someone passes something that is not an array,
>>> but
>>> still not processable by mysql_real_escape_string(), it won't foul
>>> up
>>> the processor.
>>>
>>>> set_magic_quotes_runtime( 0 );
>>>>
>>>> if( get_magic_quotes_gpc() == 0 )
>>>> {
>>>>  $_GET = isset( $_GET )
>>>>    ? array_map( 'slashes', $_GET )
>>>>    : array();
>>>>
>>>>  $_POST = isset( $_POST )
>>>>    ? array_map( 'slashes', $_POST )
>>>>    : array();
>>>>
>>>>  $_COOKIE = isset( $_COOKIE )
>>>>    ? array_map( 'slashes', $_COOKIE )
>>>>    : array();
>>>> }
>>
>> Well, if it's not a scalar, and it's not an array, and you call
>> array_map on it, things could get very ugly very fast...
>>
>> I'm not sure what other datatypes you might try to pass in, that PHP
>> won't type-juggle to a string when it goes to
>> mysql_real_escape_string...
>>
>> Exactly what "other" data are you planning on calling 'slashes' on?
>>
>
> Things that will work with mysql_real_escape_string()
> 	boolean, integer, double, float, string, NULL
>
> Things that won't work with mysql_real_escape_string()
> 	array, object, resource id
>
>
> --
> Jim Lucas
>
>     "Some men are born to greatness, some achieve greatness,
>         and some have greatness thrust upon them."
>
> Unknown
>
>


-- 
Some people have a "gift" link here.
Know what I want?
I want you to buy a CD from some indie artist.
http://cdbaby.com/browse/from/lynch
Yeah, I get a buck. So?

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux