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 <[EMAIL PROTECTED]> 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

Reply via email to