Re: Sanitizing potential MySQL strings with no database connection

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

 



On Tue, 2009-10-20 at 14:58 +0200, Dotan Cohen wrote:

> > Yes, the mysql_real_escape_string() function uses the databases character encoding to determine how to encode the
> > string, whereas the older deprecated version mysql_escape_string() required no connection as it always assumed
> > Latin-1 (as far as I know)
> 
> Is there such a function that always assumes UTF-8? That's what it
> always will be.
> 
> 
> > The data itself only needs to be sanitised just prior to being inserted into the DB anyway, it
> > shouldn't be used to validate data in any way, there are functions specifically for that. To me, it just seems that the logic
> > of the script is flawed if you require the data to be sanitised before a connection has been made to the DB.
> >
> 
> I am not requiring the data to be sanitised before a connection has
> been made to the DB. The function that calls
> mysql_real_escape_string() is in an include file of commonly-reused
> functions. Scripts that connect to databases and scripts that do not
> connect to databases include this file.
> 
> To clarify, the include file contains these funtions:
> function clean_mysql ($dirty)
> function clean_html ($dirty)
> function make_paginated_links_menu ($pages, $difference)
> function obfuscate_email_address ($address)
> 
> Not all of the  functions are used in all scripts, however, this file
> of reusable functions is included in all of them. Only the clean_mysql
> function gives me trouble because it calls mysql_real_escape_string().
> 
> --
> Dotan Cohen
> 
> http://what-is-what.com
> http://gibberish.co.il
> 


No, and you clearly missed the point about that function being pretty
much dead anyway.

You mentioned also in your last email that you would make a DB
connection if none existed. That should be very easy if you read the
page on mysql_real_escape_string()

If says:

Returns the escaped string, or FALSE on error.

So all you have to do, is have warnings turned off (as it generates an
E_WARNING if you have no active connection) and then look at the return
value of a call to the function:

if(mysql_real_escape_string($variable) === false)
{
    // create a default DB connection
}

Thanks,
Ash
http://www.ashleysheridan.co.uk



[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