2017-07-03 16 views
0

私はすでに適切な画像アップロードシステムを持っています。 &は、/uploads/というフォルダに画像を保存するので、誰がプロフィール画像をアップロードしたかを把握して、その画像を自分のユーザープロフィールページに表示する必要があります。ユーザーがPHPでプロフィール画像をアップロードできるようにする

これは私のupload.phpです:

<?php 
include('db.php'); 

// Check if user is logged in using the session variable 
if ($_SESSION['logged_in'] != 1) { 
    $_SESSION['message'] = "You must log in before viewing your profile page!"; 
    header("location: error.php");  
} 

if (isset($_POST['submit'])) { 
    $file = $_FILES['file']; 

    $fileName = $file['name']; 
    $fileTmpName = $file['tmp_name']; 
    $fileSize = $file['size']; 
    $fileError = $file['error']; 
    $fileType = $file['type']; 

    $fileExt = explode('.', $fileName); 
    $fileActualExt = strtolower(end($fileExt)); 

    $allowed = array('jpg', 'jpeg', 'png', 'pdf'); 

    if (in_array($fileActualExt, $allowed)) { 
     if ($fileError === 0) { 
      if ($fileSize < 1000000) { 
       $fileNameNew = uniqid('', true).".".$fileActualExt; 
       $fileDestination = 'uploads/'.$fileNameNew; 
       move_uploaded_file($fileTmpName, $fileDestination); 
       header("Location: user.php"); 
      } else { 
       echo "Your file is too big!"; 
      } 
     } else { 
      echo "There was an error uploading your file!"; 
     } 
    } else { 
     echo "You cannot upload files of this type!"; 
    } 
} 

と、これはHTMLです:

<form action="upload.php" method="POST" enctype="multipart/form-data" > 
<div class="specialcontainer"> 
    <input type="file" name="file" id="file" class="inputfile"> 
</div> 
    <div class="inner"></div> 
    <button type="submit" name="submit" class="uploadbuttonstyle">Upload</button> 
</form> 
</div> 

が、私は、この目的のために2つのテーブルを持って、1はfnameは、ユーザ名を処理し、 lname、電子メール、パスワード、ユーザーの説明など。そして、私は自分のプロフィール画像のステータスを表示したい、つまり画像をアップロードした場合、状態は1になります。ステータスが0の場合は、新規ユーザーのデフォルトのプロファイルイメージであるディレクトリ/uploads/profiledefault.jpgのイメージが表示されます。 PHPについてはまだ初心者です。誰かが私にここで道を見せることを望んでいた。

答えて

0

このために別のテーブルを使用する必要はありません。ちょうどあなたの最初のテーブル内の1つの以上の列「profile_image」を追加し、そのテーブル

if (move_uploaded_file($fileTmpName, $fileDestination)) { 
// save/update "profile_image" field here. 
} 

で画像を保存して、あなたがプロフィール画像を表示したいときprofile_image欄が空白であるか、ないところだけ確認してください。そうであれば、デフォルトイメージ "/uploads/profiledefault.jpg"を表示し、そうでなければ "profile_image"カラムからプロファイルイメージを表示します。

+0

私はprofile_image列を更新するためにUPDATEクエリを使用する必要があり、WHERE句には彼/彼女の電子メールのような各ユーザの一意の値が含まれていると思いますか? –

+0

はい絶対に正しい! – Sehdev

0

あなたはEntityという名前のユーザーがいると思います。このエンティティでは、プロパティーprofileImageを追加し、アップロードされた後に画像にパスを保存します。現在のユーザーを取得し、ファイルパスをプロパティーprofileImageに追加します。新しいユーザーが登録されるたびに、profileImageにデフォルト画像/uploads/profiledefault.jpgのパスを渡すだけです。つまり、ユーザーはいつでもprofileImageを持ち、確認する必要はありません。

関連する問題