我试图通过将image_id(an auto increment field)
传递到查询字符串中,然后将imagedisplay.php(file used to display the image)
包含在图像标签中来显示存储在数据库中的图像。问题是这个文件imagedisplay.php
无法访问,即控件似乎从未进入该文件。主文件和imagedisplay.php
文件的代码如下。请注意,由于一些格式问题,我无法在这里编写代码的头部。head部分是在Dreamweaver中预先格式化的标准html部分。
<body>
<div class="page shadow-round">
<div id="header">
<div id="logo">
<script type="text/javascript" src="../js/header.js"></script>
</div>
</div>
<div id="menu">
<script type="text/javascript" src="../js/navmenu.js"></script>
<script type="text/javascript">
</script>
</div>
<div class="content overflow" style="height:900px;">
<?php
require_once 'login.php'; //contains the classes for connecting to databases
$dbh=new DB_Mysql; //executing queries
$func=new DB_Mysql_code_functions;
session_start();
if(isset($_SESSION['username']))
{
echo<<<_END
<form method="post" action="admin_social_activities.php" enctype="multipart/form-data">
<table width="990">
<tbody>
<tr><td>Select an image file to be uploaded:</td></tr>
<tr><td><input type="submit" value="UPLOAD" /></td></tr>
</tbody>
</table>
</form>
_END;
if(isset($_FILES['imagefile']['tmp_name']))
{
$imagefile=$_FILES['imagefile']['tmp_name'];
$image_size=$_FILES['imagefile']['size'];
$image_name=addslashes($_FILES['imagefile']['name']);
$image_data = addslashes(file_get_contents($imagefile));
$image_array=getimagesize($imagefile);
$image_type=$image_array['mime'];
$image_height=$image_array[1];
$image_width=$image_array[0];
$maxfilesize=2000000;
if($maxfilesize<$image_size)
{
echo "Please upload a smaller image. The size of the image is too large.";
}
else
{
$query="INSERT INTO gallery(image_name,image_type,image,image_size) VALUES ('". $image_name."','".$image_type."','".$image_data."','".$image_size."')";
$stmt=$dbh->execute($query);
$lastimageid=mysql_insert_id();
echo "<p>You uploaded this image</p>";
echo "<img src='imagedisplay.php?imageid=".$lastimageid."' />";
}
}
}
else
echo "<br/><br/> Your are <span class="red"><b>not Authorized</b></span> to view this page. If you are the Admin, please login with your credentials again. <a href='login_page.php'>Click here to continue</a>";
?>
</div>
</body>
</html>
现在的问题是,控制永远不会转到imagedisplay.php
,也就是说,它不能完全引用imagedisplay.php
。
imagedisplay.php
的代码如下:
<?php
require_once 'login.php';
$dbh= new DB_Mysql();
$func=new DB_Mysql_code_functions;
$id=$_GET['imageid'];
$query="SELECT * FROM gallery where image_id=".$id;
$stmt=$dbh->execute($query);
$row=$stmt->fetch_row();
$imagedata=$row[3];
header("Content-type:image/jpeg");
echo $imagedata;
?>
我已经尝试了所有带引号的排列组合,尝试了echo语句来查看控件是否进入文件。。。。但它不是。。。它只保留在主文件中。。。我不明白原因。。。请帮忙。。。请不要担心SQL注入,因为我计划稍后在代码开始工作后处理它们。。。。感谢
您的echo命令应该是这样的:
echo '<img src="imagedisplay.php?imageid=' . $lastimageid . ' " />';
查看您生成的HTML源代码,并确保它是正确的。检查您的错误日志,看看您的图像脚本是否有任何错误。