2012-03-13 9 views
0

です。image_id(an auto increment field)をクエリ文字列に渡してから、画像タグにimagedisplay.php(file used to display the image)を含めると、データベースに格納された画像を表示しようとしています。問題は、このファイルimagedisplay.phpがアクセスできない、つまりコントロールがファイルに入っていないように見えるということです。メインファイルとimagedisplay.phpファイルのコードは次のとおりです。私はいくつかの書式の問題のためにここでコードの先頭部分を書くことができないことに注意してください。 headセクションは、Dreamweaverであらかじめフォーマットされた標準HTMLセクションです。<img>タグのPHPファイルは、クエリ文字列

<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インジェクションについて心配しないでください....ありがとう

答えて

0

echoコマンドは次のようになります。

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

生成されたHTMLソースを見て、それが正しいことを確認してください。エラー・ログを調べて、イメージ・スクリプトからエラーが発生していないかどうかを確認してください。

+0

2番目の連結の後にアポストロフィの見積もりを読みやすくするために、最後にスペースを入れました。 – TecBrat

+0

私は何を提案しましたか?試してもうまくいきませんでした:(また、htmlソースも正しいフォーマットを示していて、PHPエラーログにエラーは表示されません....私はここで何が間違っているのか分かりません! – shweta

+0

新しい問題は、私はhtmlソースをチェックし、そのパスは正常です....私は問題をトレースするためにFireBugを使用して、 "画像が壊れているか切り詰められている"ことを示しますが、ファイルをアップロードしている間はエラーは表示されません。同じデータを新しいファイル、例えばnew.jpgに書き込むと、画像ファイルがうまくいくことがわかります。 – shweta