Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 2 of 2
  1. #1
    New Coder
    Join Date
    Jun 2010
    Posts
    54
    Thanks
    4
    Thanked 0 Times in 0 Posts

    Some headers not working in php/javascript code!

    Hey guys-I realize that this is a javascript/php hybrid, but I am having a strange problem here. Basically, this script uploads an image (from another page), then allows you to crop it and save it. I want to have it redirect back to the original page in the form of a php header (see if $_GET['action']==done). However, it doesn't seem to want to send the header! This is strange because my first header, right above the second, that redirects to an error page, works just as planned. Here is the code. The headers I've added are very close to the top.

    Code:
    <?php
    /*
    * Copyright (c) 2008 http://www.webmotionuk.com
    * "PHP & Jquery image upload & crop"
    * Date: 2008-05-15
    * Ver 1.0
    * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
    *
    * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
    * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
    * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
    * IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
    * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
    * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
    * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 
    * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 
    * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    *
    * http://www.opensource.org/licenses/bsd-license.php
    */
    
    if ($_GET['action']=="done")
    {
    	if ($_POST['x1']=="" || $_POST['y1']=="" || $_POST['x2']=="" || $_POST['y2']=="" || 
    	$_POST['w']=="" || $_POST['h']=="")
    	{
    		header("Location: profile.php?action=cropError");
    	}
    }
    if ($_GET['action']=="done")
    {
           header("Location: profile.php");
    }
    
    session_start();
    
    $userid = $_SESSION['userid'];
    
    
    //Constants
    //You can alter these options
    $upload_dir = "uploadPic"; 				// The directory for the images to be saved in
    $upload_path = $upload_dir."/";				// The path to where the image will be saved
    $large_image_name = $userid."full.jpg"; 		// New name of the large image
    $thumb_image_name = $userid."thumb.jpg"; 	// New name of the thumbnail image
    $max_file = "100000"; 						// 100KB
    $max_width = "500";							// Max width allowed for the large image
    $thumb_width = "175";						// Width of thumbnail image
    $thumb_height = "234";						// Height of thumbnail image
    
    //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;
    }
    
    //Image Locations
    $large_image_location = $upload_path.$time.$large_image_name;
    $thumb_image_location = $upload_path.$time.$thumb_image_name;
    
    //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);
    }
    
    //Check to see if any images with the same names already exist
    if (file_exists($large_image_location)){
    	if(file_exists($thumb_image_location)){
    		$thumb_photo_exists = "<img src=\"".$upload_path.$thumb_image_name."\" alt=\"Thumbnail Image\"/>";
    	}else{
    		$thumb_photo_exists = "";
    	}
       	$large_photo_exists = "<img src=\"".$upload_path.$large_image_name."\" alt=\"Large Image\"/>";
    } else { 
       	$large_photo_exists = "";
    	$thumb_photo_exists = "";
     } 
    
    if (isset($_POST["upload"])) { 
    	//Get the file information
    	$userfile_name = $_FILES['image']['name'];
    	$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 100KB 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'])){
    
    			move_uploaded_file($userfile_tmp, $large_image_location);
    			chmod($large_image_location, 0777);
    			
    			$width = getWidth($large_image_location);
    			$height = getHeight($large_image_location);
    			//Scale the image if it is greater than the width set above
    			if ($width > $max_width){
    				$scale = $max_width/$width;
    				$uploaded = resizeImage($large_image_location,$width,$height,$scale);
    			}else{
    				$scale = 1;
    				$uploaded = resizeImage($large_image_location,$width,$height,$scale);
    			}
    		}
    		//Refresh the page to show the new uploaded image
    		header("location:".$_SERVER["PHP_SELF"]);
    		exit();
    	}
    }
    
    if (isset($_POST["upload_thumbnail"]) && strlen($large_photo_exists)>0) {
    	//Get the new coordinates to crop the image.
    	$x1 = $_POST["x1"];
    	$y1 = $_POST["y1"];
    	$x2 = $_POST["x2"];
    	$y2 = $_POST["y2"];
    	$w = $_POST["w"];
    	$h = $_POST["h"];
    	//Scale the image to the thumb_width set above
    	$scale = $thumb_width/$w;
    	$cropped = resizeThumbnailImage($thumb_image_location, $large_image_location,$w,$h,$x1,$y1,$scale);
    	//Reload the page again to view the thumbnail
    	header("location:".$_SERVER["PHP_SELF"]);
    	exit();
    }
    
    if ($_GET['a']=="delete"){
    	if (file_exists($large_image_location)) {
    		unlink($large_image_location);
    	}
    	if (file_exists($thumb_image_location)) {
    		unlink($thumb_image_location);
    	}
    	header("location:".$_SERVER["PHP_SELF"]);
    	exit(); 
    }
     if($_GET['action']=="done"){
    
    	include('functions.php');
    	dbconnect();
    
    	$query = "UPDATE user SET picture='$thumb_image_name' WHERE userid='$userid'";
    
    	$result = mysqli_query($cxn,$query)
    	or die ("Couldn't execute query");
    
    	$_SESSION['picture'] = $thumb_image_name;
    
    	header( "refresh:0;url=profile.php" );
    
    }
    include('top.php');
    ?>
    
    <!-- 
    * Copyright (c) 2008 http://www.webmotionuk.com / http://www.webmotionuk.co.uk
    * Date: 2008-05-15
    * Ver 1.0
    * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
    *
    * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
    * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
    * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
    * IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
    * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
    * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
    * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 
    * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 
    * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    *
    * http://www.opensource.org/licenses/bsd-license.php
    -->
    
    <?php
    //Only display the javacript if an image has been uploaded
    if(strlen($large_photo_exists)>0){
    	$current_large_image_width = getWidth($large_image_location);
    	$current_large_image_height = getHeight($large_image_location);?>
    			
    <script type="text/javascript">
    function preview(img, selection) { 
    	var scaleX = <?php echo $thumb_width;?> / selection.width; 
    	var scaleY = <?php echo $thumb_height;?> / 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: '175:234', onSelectChange: preview }); 
    });
    
    </script>
    <?php } ?>
    
    <?php
    //Display error message if there are any
    if(strlen($error)>0){
    	echo "<ul><li><strong>Error!</strong></li><li>".$error."</li></ul>";
    }
    
    
    		if(strlen($large_photo_exists)>0){?>
    			<img src="<?php echo $upload_path.$large_image_name;?>" style="float: left; margin-right: 10px;" id="thumbnail" alt="Create Thumbnail" />
    		<div class="cropInstructions">
    		<?php if ($_GET['action']=="done")
    		{ 
    			echo "<h3>Picture Updated!</h3>";
    		}
    		?>
    		<h3>Crop Profile Picture</h3><p>To crop the photo, simply click your mouse on the picture to the 
    		left and drag it to the desired size.</p>
    			<br style="clear:both;"/>
    			<form name="thumbnail" action="cropImage.php?action=done" 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="done" value="yes" id="done" />
    				<input type="submit" name="upload_thumbnail" value="Save Thumbnail" class="cropButton" />
    			</form><br>
    			<a href="profile.php">Back To Edit Profile</a>
    		</div>
    
    	<?php	 }
    include('bottom.php'); ?>
    <!-- Copyright (c) 2008 http://www.webmotionuk.com -->
    </body>
    </html>
    Last edited by soneen; 06-07-2010 at 05:09 AM. Reason: bad title

  • #2
    Supreme Master coder! abduraooft's Avatar
    Join Date
    Mar 2007
    Location
    N/A
    Posts
    14,861
    Thanks
    160
    Thanked 2,223 Times in 2,210 Posts
    Blog Entries
    1
    You could add some echo statements inside the if blocks before the header() calls to check whether the execution really reaches there.
    The Dream is not what you see in sleep; Dream is the thing which doesn't let you sleep. --(Dr. APJ. Abdul Kalam)


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •