| 
	
 | 
 Posted by eholz1 on 03/12/07 20:46 
On Mar 9, 8:39 am, "shimmyshack" <matt.fa...@gmail.com> wrote: 
> On 8 Mar, 17:31, "eholz1" <ewh...@gmail.com> wrote: 
> 
> 
> 
> > Hello PHP, 
> 
> > I am having a problem.  I know the area of the problem, but not how to 
> > solve it. 
> > It has to do with a php page with a form on it, and I am trying to 
> > perform an insert query into 
> > my mysql database. 
> 
> > I know that when I "submit" (post) the form, everything goes blank, 
> > and the insert query is not run. 
> > Basically here is my story.  Initially I had a page with all in-line 
> > code, that uses includes for connection to the db, and a error 
> > processing page.  I also have another include page that has some 
> > functions in it, one of which is for resizing images.  That function, 
> > cleverly named resizeImage returns a down-sized height and width, 
> > which get loaded into the database table, along with info on the image 
> > itself (name, location,etc). 
> 
> > this page has php code which reads a directory, finds jpeg images, 
> > does a resizeImage for each image (in a for loop), and then performs 
> > the insert query for each image.  I would run the whole thing just by 
> > loading the page (no form tags on this page).  Everything works fine, 
> > I call the resizeImage function from the fileloader.php page, the 
> > function is in a page called size_image.php (I use a require for 
> > this). 
> 
> > I decided that I would like to add some flexibility to this page and 
> > create a form where I could enter a parameter (an integer), and click 
> > a button, which would then run this same insert query, and the 
> > resizeImage function, and then tell me if I inserted the records. 
> 
> > I am using a if(isset($_REQUEST['update'])) type construct to respond 
> > to the button click (named 'update'). 
> > and use the POST action and $_SERVER[PHP_SELF] as the form. 
> 
> > When I click the button, most of the page runs, and then all goes 
> > blank in the browser, and the records are not inserted into the 
> > database.  I am guessing that something in the post blitzes my 
> > variables, etc, so the query never runs, etc. 
> 
> > Below is some of the code in the page - I have an input box for the 
> > parameter, and a button to run the function.  I would appreciate any 
> > suggestions. 
> 
> > Thanks, 
> 
> also try not to get hacked: 
> make life easy on yourself, escape all values that go into the 
> database, to avoid SQL injection. 
> 
> EVERY VALUE SHOULD HAVE CORRECT TYPE 
> $name[1] -> string 
> $filesize -> int? 
> $height -> int? 
> $p -> string 
> 
> EVERY STRING (or even int) NEEDS TO BE ESCAPED USING 
> mysql_real_escape() or better mysql_real_escape_string( 
> 
> $insertSQL = sprintf( 
> "INSERT INTO `images3` " . 
> "(`name`, `folder`, `type`, `filesize`, `orig_width`, " . 
> "`orig_height`, `resize_width`, `resize_height`, `p`)" . 
> "VALUES( '%s', '%s', '%s', '%d', '%d', '%d' , '%d', '%d', '%s')", 
> mysql_real_escape_string($name[1]), 
> mysql_real_escape_string($path), 
> mysql_real_escape_string($filetype), 
> mysql_real_escape_string($filesize), 
> mysql_real_escape_string($width), 
> mysql_real_escape_string($height), 
> mysql_real_escape_string($n_width[0]), 
> mysql_real_escape_string($n_width[1]), 
> mysql_real_escape_string($p) 
> ); 
> 
> this gets boring, so why not have your vars in an array and use 
> array_walk to escape the values 
> 
> Also you should enforce bounds checking on all your vars, before entry 
> into the database, is your database only allowing 32 chars for a 
> $name[1], then use 
> $name[1] = substr($name[1],0,32); 
> etc... 
> 
> stay neat and tidy and you will be able to see clearly. 
 
Thanks for the tip - as always, there is much more for me to learn and 
use! 
 
eholz1
 
  
Navigation:
[Reply to this message] 
 |