2008. 01. 18, péntek keltezéssel 12.10-kor Wolf ezt írta:
> ---- Eric Butera <[EMAIL PROTECTED]> wrote: 
> > On Jan 18, 2008 11:38 AM, Wolf <[EMAIL PROTECTED]> wrote:
> > > Steve,
> > >
> > > This should work as some basic sudo code.  You are running into a number 
> > > of issues with your usage of the foreach as it sounds like what you 
> > > really want to do is walk through one array and grab the corresponding 
> > > value from another.
> > >
> > > <?php
> > > // First check to make sure you are getting both fields
> > > if(isset($_POST['name']) && is_array($_POST['name']) && 
> > > isset($_POST['order']) && is_array($_POST['order']))
> > > {
> > >  // Now assign them to easier to play with variables
> > >  $names=$_POST['name'];
> > >  $orders=$_POST['orders'];
> > >  // This tests for the same number of items as names
> > >  if (count($names) == count($orders))
> > >  {
> > >   $i=0;
> > >   while($i<=count($names))
> > >   {
> > >    $update_data = "UPDATE sections SET `order` = '$orders[$i]' WHERE name 
> > > = '$names[$i]'";
> > >    $response = mysql_query( $update_data, $cnx );
> > >    if(mysql_error()) die ('database error<br>'.mysql_error());
> > >   }
> > >  }
> > > }
> > > ?>
> > >
> > > HTH,
> > > Wolf
> > >
> > >
> > > --
> > > PHP General Mailing List (http://www.php.net/)
> > > To unsubscribe, visit: http://www.php.net/unsub.php
> > >
> > >
> > 
> > Hi Wolf,
> > 
> > Your code is missing data validation!  Hopefully you don't do stuff
> > like that either.
> > 
> > function super_duper_escaper($value, $db) {
> >     if (!get_magic_quotes_gpc()) {
> >             $value = mysql_real_escape_string($value, $db);
> >     }
> >     return $value;
> > }
> > 
> > $_sql = "UPDATE sections SET `order` = %d WHERE name = '%s'";
> > $sql = sprintf(
> >     $_sql,
> >     (int)$orders[$i],
> >     super_duper_escaper($names[$i], $cnx)
> > );
> > 
> > What we're doing here is making sure that the order is a number and
> > that the name is a string that properly escapes out the quotes to make
> > sure people can't break out of the context of data and into commands.
> > Look up SQL injection for more information.
> > 
> > Don't rely on magic quotes, etc as it is a server specific setting, is
> > going away in php6, and does not take character sets into
> > consideration.  The mysql extension is just as bad as it wont allow
> > you to update the character set context from the mysql server default.
> >  So use mysqli or pdo unless everything matches across the board.
> 
> 
> Of course it was missing the data validation, I don't write a whole page/app 
> for anyone just out of the blue.  I was expecting Steve to make sure he 
> handled the data validation on his side before implementing the code fully.  
> As it is, I would have used a function and array_walk to check the validness 
> of each field and assign it to a new array if it was valid, then use the new 
> arrays to actually be pushed into the mysql queries.  :)
> 
> I also tend to put in a referrer checker to make sure the page is coming 
> where it should be coming from and depending on how nice I am either 
> redirecting back to my page and my form, or heading them off to other fun 
> places (like ratemypoo or something similar)  :)

I wouldn't do that as the referer value can be set on the client side to
anything... I just simply don't trust it.

greets
Zoltán Németh

> 
> Wolf
> 

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

Reply via email to