2016-12-02 9 views
1

イメージをmysqlデータベースにアップロードし、phpを使用してイメージの説明とともに表示します。画像をアップロードして表示した後、壊れた画像が表示されましたが、画像の説明はエラーなしで表示されました。どうすればこの問題を解決できますか?あなたはimagesディレクトリせずにDBに格納されているデータベースにアップロードした後にphpを使って表示された壊れたイメージを解決するには

<?php 

    $msg = ""; 
    //if upload button is pressed 
    if(isset($_POST['upload']))  
    { 
     // the path to store the uploaded image 
     $target = "images/".basename($_FILES['image']['name']); 

     // connect to database 
     $db = mysqli_connect("localhost","root","","product"); 

     // Get all the submitted data from the form 
     $image = $_FILES['image']['name']; 
     $text = $_POST['text']; 

     $sql = "INSERT INTO product_list (image, text) VALUES ('$image','$text')"; 
     mysqli_query($db,$sql); // stores the submitted data into the database table : product_list 

     // move uploaded image to the folder : image 
     if (move_uploaded_file($_FILES['image']['tmp_name'],$target)) 
     { 
      $msg = "Image and text uploaded successfully"; 
     }else 
     { 
      $msg = "There was a problem uploading image"; 
     } 
    } 

?> 

<!DOCTYPE html> 
<html> 
<head> 
<title>Image Upload With Description</title> 
<link rel="stylesheet" type="text/css" href="formstyle.css"> 
</head> 
<body> 
<div id="content"> 
<?php 
    $db = mysqli_connect("localhost","root","","product"); 
    $sql = "SELECT * FROM product_list"; 
    $result = mysqli_query($db, $sql); 
    while ($row = mysqli_fetch_array($result)) 
    { 
     echo "<div id='img_div'>"; 
      echo "<img src='".$row['image']."'>"; 
      echo "<p>".$row['text']."</p>"; 
     echo "</div>"; 
    } 
?> 
    <form method="post" action="try.php" enctype="multipart/form-data"> 
     <input type="hidden" name="size" value="1000000"> 
     <div> 
      <input type="file" name="image"> 
     </div> 

     <div> 
      <textarea name="text" cols="40" rows="4" placeholder="Details of product"></textarea> 
     </div> 

     <div> 
      <input type="submit" name="upload" value="Upload Image"> 
     </div> 
    </form> 
</div> 
</body> 
</html> 

This is my result :

enter image description here

+1

別の問題を試していますが、このコードでSQLインジェクションに開いています。パラメータ化されたクエリを使用します。 – chris85

+2

**警告**:mysqliを使用する場合は、[パラメータ化されたクエリ](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と['bind_param']( http://php.net/manual/en/mysqli-stmt.bind-param.php)を使用してクエリにユーザーデータを追加します。 **重大な[SQLインジェクションのバグ](http://bobby-tables.com/)を作成したため、文字列の補間または連結を使用してこれを実行しないでください。 ** '$ _POST'や' $ _GET'データを直接クエリに入れないでください。誰かがあなたのミスを悪用しようとすると、非常に危険です。 – tadman

+2

**警告**:ユーザに任意のファイル名を指定させないでください。マシン上で敵対的なコードをダンプするのを避けるため、UUIDのような単純なものでも、何らかのランダム化された識別子を常に使用してください。 – tadman

答えて

0

あなたの助けに感謝。あなたはそれを保存する必要がありますか、または常にあなたのイメージの呼び出しでそのように呼び出すことを忘れないでください。

echo "<img src='images/".$row['image']."'>"; 

あなたが書いているレコードをファイルシステムの場所と同じにしてください。

$image = 'images/' . $_FILES['image']['name']; 

このコードでは、SQLインジェクションとファイルインクルードインジェクションが可能です。

0

この

 <?php 

      $msg = ""; 
      //if upload button is pressed 
      if(isset($_POST['upload']))  
      { 
       // the path to store the uploaded image 
       $destination_path = getcwd().DIRECTORY_SEPARATOR; 
       $target_path = $destination_path . basename($_FILES["image"]["name"]); 

       // connect to database 
       $db = mysqli_connect("localhost","root","","product"); 

       // Get all the submitted data from the form 
       $image = $_FILES['image']['name']; 
       $text = $_POST['text']; 

       $sql = "INSERT INTO product_list (image, text) VALUES ('$image','$text')"; 
       mysqli_query($db,$sql); // stores the submitted data into the database table : product_list 


       //@move_uploaded_file($_FILES['image']['tmp_name'], $target_path) 

       // move uploaded image to the folder : image 
       if (move_uploaded_file($_FILES['image']['tmp_name'],$target_path)) 
       { 
        $msg = "Image and text uploaded successfully"; 
       }else 
       { 
        $msg = "There was a problem uploading image"; 
       } 
      } 

     ?> 

     <!DOCTYPE html> 
     <html> 
     <head> 
     <title>Image Upload With Description</title> 
     <link rel="stylesheet" type="text/css" href="formstyle.css"> 
     </head> 
     <body> 
     <div id="content"> 
     <?php 
      $db = mysqli_connect("localhost","root","","product"); 
      $sql = "SELECT * FROM product_list"; 
      $result = mysqli_query($db, $sql); 
      while ($row = mysqli_fetch_array($result)) 
      { 
       echo "<div id='img_div'>"; 
        echo "<img src='".$row['image']."'>"; 
        echo "<p>".$row['text']."</p>"; 
       echo "</div>"; 
      } 
     ?> 
      <form method="post" action="index.php" enctype="multipart/form-data"> 
       <input type="hidden" name="size" value="1000000"> 
       <div> 
        <input type="file" name="image"> 
       </div> 

       <div> 
        <textarea name="text" cols="40" rows="4" placeholder="Details of product"></textarea> 
       </div> 

       <div> 
        <input type="submit" name="upload" value="Upload Image"> 
       </div> 
      </form> 
     </div> 
     </body> 
     </html> 
関連する問題