2016-04-12 2 views
0

こんにちは、私はすでに以下の私のコードを入力しました。データベースはイメージのパスを保存していますが、イメージを表示していません。どこが間違っていますか?私はどのように私は使用しているコードからデータベースから画像を取得するのですか?

<div class="profile"> 
    <?php 
    if (isset($_FILES['profile']) === true) { 
     if (empty($_FILES['profile']['name']) === true) { 
      echo 'Please choose a file'; 
     } else { 
      $allowed = array('jpg', 'jpeg', 'gif', 'png'); 
      $file_name = $_FILES['profile']['name']; 
      $file_extn = strtolower(end(explode('.', $file_name))); 
      $file_temp = $_FILES['profile']['tmp_name']; 
      if (in_array($file_extn, $allowed) === true) { 
       ///upload file. 
       change_profile_image($session_user_id, $file_temp, $file_extn); 
      } else { 
       echo 'incorrect file type. Allowed formats: '; 
       echo implode(', ', $allowed); 
      } 
     } 
    } 
    if (empty($user_data['profile']) === false) { 
     echo '<img src"', $user_data['profile'], '" 
        alt="', $user_data['first_name'], '\'s">'; 
    } 
    ?> 
    <form action="" method="post" enctype="multipart/form-data"> 
     <input type="file" name="profile"> 
     <input type="submit"> 
    </form> 
</div> 

と私が呼び出していた機能change_profile_imageは以下の通りです:

function change_profile_image($user_id, $file_temp, $file_extn) { 
    $file_path = 'images/profile/' . substr(md5(time()), 0, 10) . '.' . $file_extn; 
    //echo $file_path; 
    move_uploaded_file($file_temp, $file_path); 
    mysql_query("UPDATE `users` SET `profile` = '" 
      . mysql_real_escape_string($file_path) 
      . "' WHERE `user_id` = " 
      . (int) $user_id); 
} 

データベースは、画像のパスを保存しますが、Webページ上の画像を表示していません。すべての

+0

私を許しますが、実際に写真をどこに表示しようとしていますか? –

+2

'echo ' Chris

+0

なぜ単純な画像変更コードが複雑でなければならないのですか? –

答えて

3

echo '<img src="'.$user_data['profile'].'" 

等号が追加されており、コンマではなく完全停止がfo r連結。

+2

Chris;私はコメントからの回答を投稿するのは間違っているとは思えません。それは正しいものではない自分の利益のために他の人のコメントをフィードバックする人です。あなたはここで私の投票をしました;-) P.s .:私は時々それを自分で行います。 –

+0

お役立ち情報Thanks @ Fred-ii-。 – Chris

+0

あなたは歓迎です。クリス、*歓声* –

1

最初にファイルをアップロード

とき、私はいくつかのセキュリティ問題を分離したい...、ファイルの拡張子を確認すべきではありません。私たちは、ファイルがどこその保存されていることを確認してくださいどのようなファイルサーバーを参照することはできません。まず、...戻って質問に

を今すぐ

class FileSecure 
{ 
    public resource $Allowed; 
    private object $Info; 
    public function __construct($allow) 
    { 
     $this->Allowed = $allow;  
     $this->Info = new finfo(); 
    } 
    public function Check($file) : bool 
    { 
     if(in_array($fileType = $this->Info->file($file, FILEINFO_MIME_TYPE, $this->Allowed))) { return true; } else { return false; } 
    } 
} 
$fileCheck = array(
    'Image' => new FileSecure(['image/bmp', 'image/gif', 'image/jpeg', 'image/png']), 
    'Text' => new FileSecure(['text/plain']), 
    'Compressed' => new FileSecure(['application/zip', 'application/x-rar-compressed']) 
); 

// End of Class 

($fileCheck['Image']->Check($_FILES['profile']['name']))? "" : die("Invalid image file..."); // make sure you delete the file if it is false 

:あなたは、単にそのようなファイルMIMEをチェックする必要がありますパスリンクもあります。

クエリがある場合は、クエリがvar_dump()であり、正しい拡張子と名前を持つ正しいパスであることを確認してください。

第二に、あなたは簡単にエラー報告を有効にすることで自分自身を見つけることができる構文の問題の多くを持っている...

あなたがこれを行うことができます:あなたが保存している場合は、注意してください:error_reporting(1);

編集ディレクトリをdatetime(substr(md5(time()), 0, 10))とすると、データベースパスにこの日付を含めて、どこにいるかを知る必要があります。

注:isset()あなたは、単純なDOをすることができ、trueまたはfalseにそれを一致させる必要はありませんを使用して:

あなたがに

echo '<img src"', $user_data['profile'], '" 

変更、それを書いた

// false 
if(!isset($...)) 
{ 
} 

// true 
if(isset($...)) 
{ 
} 
関連する問題