无法使用查询字符串引用<img/>标记中的PHP文件

时间:2012-03-13 13:33:44

标签: php mysql gd

我试图通过将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/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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注入,因为我打算稍后处理它们,一旦代码开始工作....谢谢

1 个答案:

答案 0 :(得分:0)

你的echo命令应该是这样的:

echo '<img src="imagedisplay.php?imageid=' . $lastimageid . ' " />';

查看生成的HTML源代码并确保它是正确的。检查错误日志,看看是否从图像脚本中收到任何错误。