允许用户使用PHP上传配置文件图像

时间:2017-07-03 07:32:35

标签: php mysql image file-upload

我已经有了一个合适的图片上传系统。它上传&将图像存储在/uploads/文件夹中,现在我需要跟踪谁上传了个人资料图片,我想在我的用户个人资料页面上显示该图像。

这是我的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个表用于此目的,一个处理用户名,fname,lname,电子邮件,密码,用户描述等。我希望第二个显示他们的个人资料图像的状态,即他们是否已上传图像,状态为1,如果状态为0,则状态为0.如果状态为0,将显示目录/uploads/profiledefault.jpg中的图像,这是新用户的默认配置文件图像。在PHP方面,我还是初学者。希望有人能告诉我这里的方式。

2 个答案:

答案 0 :(得分:0)

您不需要使用另一张桌子。只需添加一列&#34; profile_image&#34;在您的第一个表中并将图像保存在该表中

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

当您想要显示个人资料图片时,只需检查profile_image列是否为空白。如果是则显示默认图像&#34; /uploads/profiledefault.jpg"否则显示来自&#34; profile_image&#34;的个人资料图片。列。

答案 1 :(得分:0)

我相信你有实体名为User。在此实体中添加属性profileImage并在上载后保存图像的路径。您将获得当前用户并将文件路径添加到其属性profileImage。每次注册新用户时,您只需提供profileImage默认图片/uploads/profiledefault.jpg的路径即可。这意味着用户将在每个点都拥有profileImage,而无需进行检查。