Jump to content

Recommended Posts

So I have this code... I'm basically passing a value from one page (a form) to another. The value on the second page (from POST) comes back empty UNLESS I then echo that same value.

 

<?php 
$var = $_POST['var']; //returns empty (I know because the next thing in the code is writing that var into the db.. nothing gets written).
?>

<?php 
$var = $_POST['var']; 
echo $var; // returns with the post value!! (and writes into the db perfectly.)
?>

 

Can someone please explain this to me? And, better yet, explain how I can actually pass that variable into the db without having to echo it (which causes header issues, etc).

Link to comment
https://forums.phpfreaks.com/topic/263616-really-weird-behaviour/
Share on other sites

Its likely that the page is being requested twice or you are redirecting to the same page and you are just seeing the result of the second page request (no post data is present.) By echoing some output, you are preventing the second request for the page.

 

What's your whole code on the problematic page?

I kind of thought of that too, but I don't know enough php to be able to take that thought further... Here is my full code (sorry, its long). The echo that i'm making happens on line 110, and its preventing the headers on line 160 from being sent.

 

<?php
session_start();

$option = $_POST['option'];
$upload_dir = "upload_pic"; 				// The directory for the images to be saved in
$upload_path = $upload_dir."/";				// The path to where the image will be saved
$thumb_image_name = $_SESSION['thumb_image_name'] = rand()."thumbnail_pic.jpg"; 	// New name of the thumbnail image
$max_file = "1024000"; 						// Approx 1MB
$max_width = "700";							// Max width allowed for the large image
$upload_dir_large = "uploaded_large";
$upload_path_large = $upload_dir_large."/";	
$thumb_image_location = $upload_path.$thumb_image_name;



//Image functions
//You do not need to alter these functions
function resizeImage($image,$width,$height,$scale) {
$newImageWidth = ceil($width * $scale);
$newImageHeight = ceil($height * $scale);
$newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
$source = imagecreatefromjpeg($image);
imagecopyresampled($newImage,$source,0,0,0,0,$newImageWidth,$newImageHeight,$width,$height);
imagejpeg($newImage,$image,90);
chmod($image, 0777);
return $image;
}
//You do not need to alter these functions
function resizeThumbnailImage($thumb_image_name, $image, $width, $height, $start_width, $start_height, $scale){
$newImageWidth = ceil($width * $scale);
$newImageHeight = ceil($height * $scale);
$newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
$source = imagecreatefromjpeg($image);
imagecopyresampled($newImage,$source,0,0,$start_width,$start_height,$newImageWidth,$newImageHeight,$width,$height);
imagejpeg($newImage,$thumb_image_name,90);
chmod($thumb_image_name, 0777);
return $thumb_image_name;
}
//You do not need to alter these functions
function getHeight($image) {
$sizes = getimagesize($image);
$height = $sizes[1];
return $height;
}
//You do not need to alter these functions
function getWidth($image) {
$sizes = getimagesize($image);
$width = $sizes[0];
return $width;
}


//Create the upload directory with the right permissions if it doesn't exist
if(!is_dir($upload_dir)){
mkdir($upload_dir, 0777);
chmod($upload_dir, 0777);
}
if(!is_dir($upload_dir_large)){
mkdir($upload_dir_large, 0777);
chmod($upload_dir_large, 0777);
}


/*



______________UPON LOADING THE PAGE FOR THE SECOND TIME_______________


*/


if(isset($_POST['upload']) && strlen($_POST['upload_thumbnail'])==0) {
$option2 = $_POST['retainoption'];


include "constants.php";
mysql_select_db ($db) OR DIE ("Unable to select db".mysql_error());
$result = mysql_query("SELECT width, height FROM image_options WHERE id='$option2'");

if (mysql_num_rows($result) == 0) {
    echo "No rows found, nothing to print so am exiting";
    echo $option2;
    exit;
}

$thumb_width = $_SESSION['width'] = mysql_result($result,0,"width");					// Width of thumbnail image
$thumb_height = $_SESSION['height'] = mysql_result($result,0,"height");						// Height of thumbnail image

}


//Check to see if any images with the same names already exist
if (strlen($_SESSION['lil'])>0){
if(strlen($thumb_image_location)>0){
	$thumb_photo_exists = $_SESSION['thumb_photo_exists'] = "<img src=\"".$_SESSION['lil']."\" alt=\"Thumbnail Image\"/>";
}else{
	$thumb_photo_exists = "";
}
   	$large_photo_exists = $_SESSION['large_photo_exists'] = "<img src=\"".$_SESSION['lil']."\" alt=\"Large Image\"/>";
} else {
   	$large_photo_exists = "";
$thumb_photo_exists = "";
}


if (isset($_POST["upload"])) {
$option2 = $_POST['retainoption'];
echo $option2;
//Get the file information
$images = md5($_FILES['image']['name']); // .'_'. time();
$userfile_tmp = $_FILES['image']['tmp_name'];
$userfile_size = $_FILES['image']['size'];
$filename = basename($_FILES['image']['name']);
$file_ext = substr($filename, strrpos($filename, '.') + 1);

//Only process if the file is a JPG and below the allowed limit
if((!empty($_FILES["image"])) && ($_FILES['image']['error'] == 0)) {
	if (($file_ext!="jpg") && ($userfile_size > $max_file)) {
		$error= "ONLY jpeg images under 1MB are accepted for upload";
	}
}else{
	$error= "Select a jpeg image for upload";
}
//Everything is ok, so we can upload the image.


if (strlen($error)==0){

	if (isset($_FILES['image']['name'])){

		$_SESSION['lil'] = $upload_path.$images.".".$file_ext;
		$_SESSION['lil2'] = $upload_path_large.$images.".".$file_ext;
		copy($userfile_tmp, $_SESSION['lil2']); //save large file into separate dir
		move_uploaded_file($userfile_tmp, $_SESSION['lil']); 
		chmod($_SESSION['lil'], 0777);
		chmod($_SESSION['lil2'], 0777);

		$width = getWidth($_SESSION['lil']);
		$height = getHeight($_SESSION['lil']);
		//Scale the image if it is greater than the width set above
		if ($width > $max_width){
			$scale = $max_width/$width;
			$uploaded = resizeImage($_SESSION['lil'],$width,$height,$scale);
		}else{
			$scale = 1;
			$uploaded = resizeImage($_SESSION['lil'],$width,$height,$scale);
		}

		//Delete the thumbnail file so the user can create a new one
		if (file_exists($thumb_image_location)) {
			unlink($thumb_image_location);
		} 
	} else {
		echo "there's been an error with upload";
	}
	//Refresh the page to show the new uploaded image
	//echo '<META HTTP-EQUIV="Refresh" Content="0; URL='.$_SERVER["PHP_SELF"].'">'; 
	header("location:".$_SERVER["PHP_SELF"]);
}
} 


/*


_______ UPON LOADING THE PAGE FOR THE THIRD TIME ________


*/



if (isset($_POST["upload_thumbnail"]) && strlen($_SESSION['lil'])>0) {
//Get the new coordinates to crop the image.
$option2 = $_POST['retainoption'];

$x1 = $_SESSION['x1'] = $_POST["x1"];
$unscaledx1 = getWidth($_SESSION['lil2']) * $x1 / $max_width;

$y1 = $_SESSION['y1'] = $_POST["y1"];
$unscaledy1 = getHeight($_SESSION['lil2']) * $y1 / getHeight($_SESSION['lil']);

//$x2 = $_SESSION['x2'] = $_POST["x2"];
//$unscaledx2 = ceil(getWidth($_SESSION['lil2']) * $px2);

//$y2 = $_SESSION['y2'] = $_POST["y2"];
//$unscaledy2 = ceil(getHeight($_SESSION['lil2']) * $py2);

$w = $_SESSION['w'] = $_POST["w"];
$unscaledW = getWidth($_SESSION['lil2']) * $w / $max_width;

$h = $_SESSION['h'] = $_POST["h"];
$unscaledH = getHeight($_SESSION['lil2']) * $h / getHeight($_SESSION['lil']);

//Scale the image to the thumb_width set above

$scale = getWidth($_SESSION['lil2']) / $max_width;

$_SESSION['cropped'] = $cropped = resizeThumbnailImage($thumb_image_location, $_SESSION['lil2'],$unscaledW,$unscaledH,$unscaledx1,$unscaledy1,$scale);
//Reload the page again to view the thumbnail


include "constants.php";
		// prepare the image for insertion
                   // $imgData =addslashes (file_get_contents($cropped));

                    // put the image in the db...
                    // select the db
                    mysql_select_db ($db);
                    $db or die ("Unable to select db".mysql_error());
                    
$q = "INSERT INTO `test_image` (`name`,`option`) VALUES ('$_SESSION[cropped]','$option2')";
$sql = mysql_query($q);
if(!isset($sql)){die(mysql_error());}


if (file_exists($_SESSION['lil'])) {
	//unlink($_SESSION['lil']);
}

if (file_exists($_SESSION['lil2'])) {
	//unlink($_SESSION['lil2']);
}

if (file_exists($thumb_image_location)) {		
	//unlink($thumb_image_location);
}
                    
header("location:".$_SERVER["PHP_SELF"]."?id=".mysql_insert_id());
exit();
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Upload & Crop</title>
<script type="text/javascript" src="js/jquery-pack.js"></script>
<script type="text/javascript" src="js/jquery.imgareaselect-0.3.min.js"></script>
</head>
<body>
<?php
session_start();

//Only display the javacript if an image has been uploaded
if(strlen($_SESSION['lil'])>0){
$current_large_image_width = getWidth($_SESSION['lil']);
$current_large_image_height = getHeight($_SESSION['lil']);
$wid = $_SESSION['width']/4;
$heit = $_SESSION['height']/4;
?>
<script type="text/javascript">
function preview(img, selection) { 
var scaleX = <?php echo $wid;?> / selection.width; 
var scaleY = <?php echo $heit;?> / selection.height; 

$('#thumbnail + div > img').css({ 
	width: Math.round(scaleX * <?php echo $current_large_image_width;?>) + 'px', 
	height: Math.round(scaleY * <?php echo $current_large_image_height;?>) + 'px',
	marginLeft: '-' + Math.round(scaleX * selection.x1) + 'px', 
	marginTop: '-' + Math.round(scaleY * selection.y1) + 'px'
});
$('#x1').val(selection.x1);
$('#y1').val(selection.y1);
$('#x2').val(selection.x2);
$('#y2').val(selection.y2);
$('#w').val(selection.width);
$('#h').val(selection.height);

} 

$(document).ready(function () { 
$('#save_thumb').click(function() {
	var x1 = $('#x1').val();
	var y1 = $('#y1').val();
	var x2 = $('#x2').val();
	var y2 = $('#y2').val();
	var w = $('#w').val();
	var h = $('#h').val();
	if(x1=="" || y1=="" || x2=="" || y2=="" || w=="" || h==""){
		alert("You must make a selection first");
		return false;
	}else{
		return true;
	}
});
}); 

$(window).load(function () { 
$('#thumbnail').imgAreaSelect({ aspectRatio: <?php echo $wid;?> + ':' + <?php echo $heit;?>, onSelectChange: preview }); 
});

</script>
<?php }?>
<h1>Photo Upload and Crop</h1>
<?php
session_start();

include "constants.php";

if(isset($_GET['id'])){
// select the db
mysql_select_db ($db) OR DIE ("Unable to select db".mysql_error());
//sql query
$getid = $_GET['id'];
$sql2 = mysql_query("SELECT name FROM test_image WHERE id='$getid'");
$name = mysql_fetch_assoc($sql2);
echo "  <form method='post' action='number.php' enctype='multipart/form-data'>";
echo "<input type='hidden' name='option' value=".$option.">";
echo "<input type='submit' name='number' value='Generate Photos'>";
echo "<br><a href=/form1.php>Go back</a>";
unset ($_SESSION['id'], $id);
}else{
	if(strlen($_SESSION['lil'])>0){
		echo $_SESSION['lil'];
		echo $option2; ?>
	<h2>Create Thumbnail</h2>
	<div align="center">

		<img src="<?php echo $_SESSION['lil'];?>" style="float: left; margin-right: 10px;" id="thumbnail" alt="Create Thumbnail" />
		<div style="float:left; position:relative; overflow:hidden; width:<?php echo $wid;?>px; height:<?php echo $heit;?>px;">
			<img src="<?php echo $_SESSION['lil'];?>" style="position: relative;" alt="Thumbnail Preview" />
		</div>
		<br style="clear:both;"/>
		<form name="thumbnail" action="<?php echo $_SERVER["PHP_SELF"];?>" method="post">
			<input type="hidden" name="x1" value="" id="x1" />
			<input type="hidden" name="y1" value="" id="y1" />
			<input type="hidden" name="x2" value="" id="x2" />
			<input type="hidden" name="y2" value="" id="y2" />
			<input type="hidden" name="w" value="" id="w" />
			<input type="hidden" name="h" value="" id="h" />
			<input type="hidden" name="retainoption" value="<?php echo $option2; ?>">
			<input type="submit" name="upload_thumbnail" value="Save Thumbnail" id="save_thumb" />
		</form>
	</div>
<hr />
<?php 	} ?>

<h2>Upload Photo</h2>
<?php 
echo $option;
?>
<form name="photo" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
Photo <input type="file" name="image" size="30" /> <input type="hidden" name="retainoption" value="<?php echo $option; ?>"> <input type="submit" name="upload" value="Upload" />
</form>
<?php } ?>
</body>
</html>

I didn't go through your code completely, but it appears you have multiple blocks of code responsible for handling the submitted form data. You should put that ALL together within one conditional statement testing if the form has been submitted. Since uploading a file can cause both the $_POST and $_FILES arrays to be empty if you exceed the post max size setting, it is customary to test if $_SERVER['REQUEST_METHOD'] == 'POST' to detect if an upload form has been submitted -

if($_SERVER['REQUEST_METHOD'] == 'POST'){

    // all your form processing code would go in here...

}

 

You also need an exit; statement after each header() redirect to prevent the remainder of the code on the page from running while the browser requests the new page.

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.