...

View Full Version : undefined variable problem



crewebiker
09-04-2007, 11:58 PM
i've came up with the following script for an 'easy' write to file from form page.

i've done it a few times before with success, but for some strange reason this time i'm having a bit of trouble with the variable 'page' coming up undefined. It's probably something really simple but i can't seem to be able to spot it.


if (isset($_POST['update'])){

$file = fopen('db/pages/home.php', 'a', 1);
fwrite($file, $page);
fclose($file);
}

else {
$lines = file('db/pages/home.php');
$l_count = count($lines);
for($x = 0; $x< $l_count; $x++)
{
}
echo "<form method=\"post\" name=\"update\" enctype=\"multipart/form-data\" action=\"?page=admin&mode=edit\">";
echo "<textarea name=\"page\" cols=\"80\" rows=\"8\">".$lines[5]."</textarea>";
echo "<input type=\"Submit\" name=\"update\" value=\"Update\"></form>";}

}

Any help would be greatly appreciated, thanks.

Fumigator
09-05-2007, 12:12 AM
If I had to guess I would say the "register_globals" PHP flag has been disabled on your PHP server. This "register_globals", when it's turned on, automatically assigns all the $_POST array elements (and $_GET elements) to non-array variables (i.e. the value in $_POST['page'] is assigned to $page). It's been an infamous security hole in PHP and because of that it defaults to "off" in PHP versions 4.3+.

To be safe and cross-server operational you should just use the $_POST['page'] variable, or manually assign $_POST['page'] to $page (and other form variables) at the beginning of your script.

meth
09-05-2007, 02:43 AM
register_globals, agreed. A form input or url name/value pair called 'page' is registering as the var $page when register_globals = On.

If it's a post, then:

$page = (!empty($_POST['page'])) ? $_POST['page'] : NULL;

will fix it, else:

$page = (!empty($_GET['page'])) ? $_GET['page'] : NULL;

crewebiker
09-05-2007, 02:59 PM
thanks guy, that's done the trick, now just another thing...

would i be able to get '$page' to only write to a specific line in '$file'?

tried using the same kinda way from the read script but can't quite get it, it comes up with 'fwrite(): supplied argument is not a valid stream resource in...'

again, help would be greatly appreciated.

thanks.

Fumigator
09-05-2007, 03:42 PM
You have to open the file in read/write mode and read each line in until you get to the line you want to overwrite and then write it.



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum