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