Re: Re: PHP MySQL insert

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

 



sorry...here is the message

On 8/19/05, areguera <alain.reguera@xxxxxxxxx> wrote:
> On 8/19/05, Ben Ramsey <ramsey@xxxxxxx> wrote:
> > Alain Reguera Delgado wrote:
> > > you could try:
> > >
> > > 1. get all form variables into an array
> >
> > fine
> >
> > > 2. validate values
> >
> > Good, but do this step as you put the values into a separate array,
> > don't put all the values into the array first and then validate them
> > later... make sure the input received is input expected and then save
> > only the input to the array that passes the validation/filtering tests
> 
> yes .. that's much better .. :)
> 
> >
> > > 3. convert all values into entities using htmlentities()
> >
> > Why do you want to do this before saving to the database?
> 
> Ben, I got some troubles when moving database from one server to
> another, all Latin characters disappear, and the info turns a mess.
> Thought for a moment a server's language configuration setting. I was
> wondering by days to take this way, I thought if someone else wants
> the application and occurs the same because his configuration is not
> like mine. Then that solution came to me. Felt no matter what version
> or configuration of mysql or other db is used or what latin char is
> inserted, the data always be there for the web, in the language it
> speaks.
> 
> This step has
> > absolutely no bearing on preparing the statement for insertion into a
> > database. It won't protect against SQL injection.
> 
> Also, you will never
> > be able to do anything with this data other than use it for HTML output
> > (unless you try to reverse the entities, which seems like an awful lot
> > of work to me).
> 
> yes, I don't like either...its not flexible.
> 
> It's best to save the raw data as entered and escape it
> > (with htmlentities() or something else) ONLY on output.
> 
> that was the first way I used to go... but after that problem, I am not sure
> 
> >
> > As I mentioned in my last post to this thread, the best way to escape a
> > string for insertion into a database (and protect against SQL injection)
> > is to use the escape function for the particular database --
> > mysql_real_escape_string() in this case. You should never use
> > htmlentities() to escape data before saving it to a database. Do that
> > only after you've pulled data from the database and are outputting it
> > somewhere (like on a Web page).
> >
> > > 4. build sql query (do some tests 'til get it right)
> > > 5. execute the built query (with proper db function)
> > >
> > > by now, commas aren't a problem, they are limited between sql query's
> > > quotes. If some quotes are inserted as value they are previously
> > > converted to its entities and do not break the sql query.
> >
> > This is why you use mysql_real_escape_string(), etc. -- not htmlentities().
> >
> > > as previously said in this thread, the problem is on quoting and maybe
> > > on converting the values to entities, to prevent some quote break the
> > > sql structure.
> >
> > You don't need to convert the values to HTML entities when saving to a
> > database. That's not going to prevent this problem.
> 
> could you suggest something about Latin characters and portability?.
> 
> >
> > --
> > Ben Ramsey
> > http://benramsey.com/
> >
> > --
> > PHP General Mailing List (http://www.php.net/)
> > To unsubscribe, visit: http://www.php.net/unsub.php
> >
> >
>

-- 
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