我写了一个程序来上传和使用php通过网站裁剪图像 但上传新图片后不会有异议。缓存尚未明确。当我按下Ctrl + F5然后将显示图像。我想在上传图像时动态清除现金。我添加了清除缓存的代码。但似乎没有用。
我添加了一个代码来清除缓存页面标题
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="Expires" content="Tue,01 Dec 1990 06:30:00 GMT">
我还添加了一个代码,用php
清除服务器端的缓存 clearstatcache();
header("Pragma: no-cache");
header("Cache: no-cahce");
header('Location: ../change_profile_image/', true, 302);
这是我的页面上传代码
<?php
include('SimpleImage.php');
$path = "../../uploads/ori_image/";
$path_thumbnail = "../../uploads/thumbnail_image/";
require "../../connection/db.ini.php";
if(isset($_SESSION['userid'])){
$user_id=$_SESSION['userid'];
require "../../connection/db.ini.php";
///change image
error_reporting (E_ALL ^ E_NOTICE);
session_start(); //Do not remove this
//only assign a new timestamp if the session variable is empty
if (!isset($_SESSION['random_key']) || strlen($_SESSION['random_key'])==0){
$_SESSION['random_key'] = strtotime(date('Y-m-d H:i:s')); //assign the timestamp to the session variable
$_SESSION['user_file_ext']= "";
}
#########################################################################################################
# CONSTANTS #
# You can alter the options below #
#########################################################################################################
$upload_dir = "../../uploads/ori_image"; // The directory for the images to be saved in
$upload_path = $upload_dir."/"; // The path to where the image will be saved
$large_image_prefix = "large_"; // The prefix name to large image
$thumb_image_prefix = "thumbnail_"; // The prefix name to the thumb image
$actual_image_name= "image_user_".$user_id;
$large_image_name = $large_image_prefix."image_user_".$user_id; // New name of the large image (append the timestamp to the filename)
$thumb_image_name = $thumb_image_prefix."image_user_".$user_id; // New name of the thumbnail image (append the timestamp to the filename)
$max_file = "2"; // Maximum file size in MB
$max_width = "300"; // Max width allowed for the large image
$thumb_width = "56"; // Width of thumbnail image
$thumb_height = "56"; // Height of thumbnail image
// Only one of these image types should be allowed for upload
$allowed_image_types = array('image/pjpeg'=>"jpg",'image/jpeg'=>"jpg",'image/jpg'=>"jpg",'image/png'=>"png",'image/x-png'=>"png",'image/gif'=>"gif");
$allowed_image_ext = array_unique($allowed_image_types); // do not change this
$image_ext = ""; // initialise variable, do not change this.
foreach ($allowed_image_ext as $mime_type => $ext) {
$image_ext.= strtoupper($ext)." ";
}
##########################################################################################################
# IMAGE FUNCTIONS #
# You do not need to alter these functions #
##########################################################################################################
function resizeImage($image,$width,$height,$scale) {
list($imagewidth, $imageheight, $imageType) = getimagesize($image);
$imageType = image_type_to_mime_type($imageType);
$newImageWidth = ceil($width * $scale);
$newImageHeight = ceil($height * $scale);
$newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
switch($imageType) {
case "image/gif":
$source=imagecreatefromgif($image);
break;
case "image/pjpeg":
case "image/jpeg":
case "image/jpg":
$source=imagecreatefromjpeg($image);
break;
case "image/png":
case "image/x-png":
$source=imagecreatefrompng($image);
break;
}
imagecopyresampled($newImage,$source,0,0,0,0,$newImageWidth,$newImageHeight,$width,$height);
switch($imageType) {
case "image/gif":
imagegif($newImage,$image);
break;
case "image/pjpeg":
case "image/jpeg":
case "image/jpg":
imagejpeg($newImage,$image,90);
break;
case "image/png":
case "image/x-png":
imagepng($newImage,$image);
break;
}
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){
list($imagewidth, $imageheight, $imageType) = getimagesize($image);
$imageType = image_type_to_mime_type($imageType);
$newImageWidth = ceil($width * $scale);
$newImageHeight = ceil($height * $scale);
$newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
switch($imageType) {
case "image/gif":
$source=imagecreatefromgif($image);
break;
case "image/pjpeg":
case "image/jpeg":
case "image/jpg":
$source=imagecreatefromjpeg($image);
break;
case "image/png":
case "image/x-png":
$source=imagecreatefrompng($image);
break;
}
imagecopyresampled($newImage,$source,0,0,$start_width,$start_height,$newImageWidth,$newImageHeight,$width,$height);
switch($imageType) {
case "image/gif":
imagegif($newImage,$thumb_image_name);
break;
case "image/pjpeg":
case "image/jpeg":
case "image/jpg":
imagejpeg($newImage,$thumb_image_name,90);
break;
case "image/png":
case "image/x-png":
imagepng($newImage,$thumb_image_name);
break;
}
chmod($thumb_image_name, 0777);
return $thumb_image_name;
}
//You do not need to alter these functions
function getHeight($image) {
$size = getimagesize($image);
$height = $size[1];
return $height;
}
//You do not need to alter these functions
function getWidth($image) {
$size = getimagesize($image);
$width = $size[0];
return $width;
}
//Image Locations
$large_image_location = $upload_path.$large_image_name.$_SESSION['user_file_ext'];
$thumb_image_location = $upload_path.$thumb_image_name.$_SESSION['user_file_ext'];
//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 name already exist
if (file_exists($large_image_location)){
if(file_exists($thumb_image_location)){
$thumb_photo_exists = "<img src=\"".$upload_path.$thumb_image_name.$_SESSION['user_file_ext']."\" alt=\"Thumbnail Image\"/>";
}else{
$thumb_photo_exists = "";
}
$large_photo_exists = "<img src=\"".$upload_path.$large_image_name.$_SESSION['user_file_ext']."\" 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'];
$userfile_type = $_FILES['image']['type'];
$filename = basename($_FILES['image']['name']);
$file_ext = strtolower(substr($filename, strrpos($filename, '.') + 1));
//Only process if the file is a JPG, PNG or GIF and below the allowed limit
if((!empty($_FILES["image"])) && ($_FILES['image']['error'] == 0)) {
foreach ($allowed_image_types as $mime_type => $ext) {
//loop through the specified image types and if they match the extension then break out
//everything is ok so go and check file size
if($file_ext==$ext && $userfile_type==$mime_type){
$error = "";
break;
}else{
$error = "Only <strong>".$image_ext."</strong> images accepted for upload<br />";
}
}
//check if the file size is above the allowed limit
if ($userfile_size > ($max_file*(2*(1048576)))) {
$error.= "Images must be under ".$max_file."MB in size";
}
}else{
$error= "Select an image for upload";
}
//Everything is ok, so we can upload the image.
if (strlen($error)==0){
if (isset($_FILES['image']['name'])){
//this file could now has an unknown file extension (we hope it's one of the ones set above!)
$large_image_location = $large_image_location.".".$file_ext;
$thumb_image_location = $thumb_image_location.".".$file_ext;
//put the file ext in the session so we know what file to look for once its uploaded
$_SESSION['user_file_ext']=".".$file_ext;
$ext=$_SESSION['user_file_ext'];
mysql_query("UPDATE user SET prof_pic='$actual_image_name$ext' WHERE user_id='$user_id'");
move_uploaded_file($userfile_tmp, $large_image_location);
chmod($large_image_location, 0777);
$width = getWidth($large_image_location);
$height = getHeight($large_image_location);
header("Pragma: no-cache");
header("Cache: no-cahce");
header('Location: ../change_profile_image/', true, 302);
//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);
}
//Delete the thumbnail file so the user can create a new one
if (file_exists($thumb_image_location)) {
unlink($thumb_image_location);
}
}
//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" && strlen($_GET['t'])>0){
//get the file locations
$large_image_location = $upload_path.$large_image_prefix.$_GET['t'];
$thumb_image_location = $upload_path.$thumb_image_prefix.$_GET['t'];
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();
}
///change image
}//end if isset session
?>
<link href="../../CSS/c.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/jquery-pack.js"></script>
<script type="text/javascript" src="js/jquery.imgareaselect.min.js"></script>
<div class="center " style="width:1010px;background-color:#c1e5ff; ">
<div style="height:34px;">
<?php require("../../menubar/menubar.php"); ?>
</div>
<div id="aa" class="center" style="width:1010px; ">
<p>
<div class="font" style="width:1010px; height:30px; background-color:#0094d6; display: table-cell;vertical-align: middle; text-indent:5px;">
<span class="font" style="width:1010px; height:30px; background-color:#0094d6; display: table-cell;vertical-align: middle; text-indent:5px;color:#FFFFFF;">Change Profile Picture</span></div></p>
<div class="center" style="width:900px; min-height:400px; background-color:#c1e5ff; font-size:12px;font-family:Arial, Helvetica, sans-serif; color:#0094d6; border-radius:7px;margin-top:50px;">
<br />
<br />
<!--prof pic image start-->
<div style="margin-left:10px;margin-right:10px; background-color:#DBF0F7;padding-bottom:30px;padding-left:10px;" onmouseover=" clearBrowserCache()">
<?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);
clearBrowserCache();
}
$(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("Please crop the image for your profile thumbnail !");
return false;
}else{
return true;
}
});
});
$(window).load(function () {
$('#thumbnail').imgAreaSelect({ aspectRatio: '1:<?php echo $thumb_height/$thumb_width;?>', onSelectChange: preview });
clearBrowserCache();
});
</script>
<script>
function clearBrowserCache() {
header("Pragma: no-cache");
header("Cache: no-cache");
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
}
</script>
<?php }?>
<h1> </h1>
<?php
//Display error message if there are any
if(strlen($error)>0){
echo "<div style='margin-left:3px;color:#d60000;margin-bottom:5px;'><li><strong>Error!</strong></li><li>".$error."</li></div>";
}
if(strlen($large_photo_exists)>0 && strlen($thumb_photo_exists)>0){
echo $large_photo_exists." ".$thumb_photo_exists;
//Clear the time stamp session and user file extension
$_SESSION['random_key']= "";
$_SESSION['user_file_ext']= "";
header("Location:../update_profile");
}else{
if(strlen($large_photo_exists)>0){?>
<div class="font" style="margin-bottom:10px;">Create Thumbnail <span style="color:#F00;font-size:10px" class="s_font"> *If the image didnt changed please press (Ctrl + F5)</span> </div>
<div align="center">
<img src="<?php echo $upload_path.$large_image_name.$_SESSION['user_file_ext'];clearstatcache();?>" style="float: left; margin-right: 10px;" id="thumbnail" alt="Create Thumbnail" onmouseover="clearBrowserCache()" />
<div style="border:1px #e5e5e5 solid; float:left; position:relative; overflow:hidden; width:<?php echo $thumb_width;?>px; height:<?php echo $thumb_height;?>px;">
<img src="<?php echo $upload_path.$large_image_name.$_SESSION['user_file_ext'];?>" 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="submit" name="upload_thumbnail" value="Save Image" id="save_thumb" class="inside_button" style="float:left; margin-top:10px;width:300px;" />
</form>
</div>
<hr style="background-color:#0099CC;margin-top:50px; margin-bottom:20px;"/>
<?php } ?>
<div class="font">Upload Your Photo</div>
<form name="photo" enctype="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"];?>" method="post">
<input type="file" name="image" size="30" style="background-color:#FFF;width:300px;" /> <input type="submit" name="upload" value="Upload" class="inside_button"/>
</form>
<?php } ?>
</div>
<!--prof pic image end-->
</div>
<p><div style="width:100%; height:50px; background-color:none"></div></p>
</div>
</div>
<div style="width:100%;background-color:#0094d6;" >
<div id="dd" style="background-color:#0094d6; width:1010px; height:45px;" class="center" ><div id="a" style="width:967px; height:45px;" >
<table width="100%" border="0">
<tr>
<td> </td>
<td style="font-family:Arial, Helvetica, sans-serif;font-size:10px; color:#FFF; text-align:center"> Copyright © LCB 2013, All rights reserved. </td>
<td> </td>
</tr>
<tr >
<td width="30%"> </td>
<td width="43%"> </td>
<td width="27%"> </td>
</tr>
</table>
</div>
</div>
</div>
我很困惑在这里做什么。有没有人有这个问题的主张或线索?
答案 0 :(得分:2)
你可以尝试这样的方法来欺骗缓存机制:
<img src="your_image.jpg?nocache=<?=time()?>"/>
每次浏览器都应将其视为新图像。 如果这对您有用,请告诉我。
答案 1 :(得分:1)
您可以为图片网址添加时间戳:
<img src="/image.jpg?timestamp=<?php echo Time(); ?>" >
这使得每个请求的URL都是唯一的,从而使每个请求都是唯一的。因此,没有缓存!
代码可能包含以下两行:
$thumb_photo_exists = "<img src=\"".$upload_path.$thumb_image_name.$_SESSION['user_file_ext']."?timestamp=".Time()."\" alt=\"Thumbnail Image\"/>";
和
$large_photo_exists = "<img src=\"".$upload_path.$large_image_name.$_SESSION['user_file_ext']."?timestamp=".Time()."\" alt=\"Large Image\"/>";
照顾$_SESSION['user_file_ext']
,您的Time()
时间戳就在那里。
答案 2 :(得分:0)
同时查看标题:
header("Cache: no-cahce");
应该是:
header("Cache: no-cache");