【问题标题】:How to show users profile picture如何显示用户头像
【发布时间】:2018-07-07 11:38:20
【问题描述】:

我想在登录时显示我的用户个人资料图片。当他们单击change profile picture 按钮时,他们的图片将保存到目录中,然后保存到数据库中。我不知道从哪里开始。如何将用户拥有的任何图片显示为他们的个人资料图片?

profile.php:

<form id="form2" action="upload.php" method="post" enctype="multipart/form-data">
<p id="p1">Change profile picture:</p> <br />
<input type="file" name="fileToUpload" id="fileToUpload"><br />
<br><input id="sub1" type="submit" value="Change profile picture" name="change"><br />
</form>

<!-- Trigger the Modal -->
<img id="myImg" src="default.jpg" width="200" height="150">

编辑!!!!

<?php
$username = $_SESSION['username'];

if(isset($_FILES['image'])){
$errors= array();
$file_name = $_FILES['image']['name'];
$file_size = $_FILES['image']['size'];
$file_tmp = $_FILES['image']['tmp_name'];
$file_type = $_FILES['image']['type'];
$file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));

$extensions= array("jpeg","jpg","png");

if(in_array($file_ext,$extensions)=== false){
 $errors[]="extension not allowed, please choose a JPG, JPEG or PNG file.";
}

if($file_size > 2097152) {
 $errors[]='File size must be 2 MB';
}

 if(empty($errors)==true) {
 move_uploaded_file($file_tmp,"images/uploads/".$file_name);

$store=mysqli_query($conn,"UPDATE users SET userPic='$userPic' WHERE username='$username'");
mysqli_query($conn,$store);
 echo "Success";
}else{
 print_r($errors);
 echo"it failed";
}
}
?>

<?php
$getimg = mysqli_query($conn,"SELECT userPic FROM users WHERE username='" . 
$username . "'");
$rows=mysqli_fetch_array($getimg);
$img = $rows['userPic'];

?>



<img id="myImg" src="images/uploads/<?php echo $img?>"  alt="<?php echo $img ?>" width="200" height="150">

【问题讨论】:

  • 从数据库中选择您需要的用户信息(id、用户名、头像等),可选择将其存储在会话中,然后使用该数据将其显示在页面上..?
  • 这就是我显示用户名&lt;center&gt;&lt;h5&gt;&lt;?php echo $_SESSION['username']; ?&gt;&lt;/h5&gt;&lt;/center&gt;的方式
  • 有类似的吗?
  • 假设您做事正常并将图像名称存储在数据库中,并将图像存储在文件系统中某个公开可用的地方,那么是的。 &lt;img src="/images/profile_pictures/&lt;?= $_SESSION['profile_picture'] ?&gt;"/&gt; 之类的东西应该可以工作。请注意,您当然必须确保图像的路径正确匹配,但是您拥有它
  • 您在会话中将 userPic 存储在哪里?

标签: php html mysqli phpmyadmin


【解决方案1】:

要实现这一点:

1) 使用define() 在配置文件中定义您的用户头像目录 例如:define('PROFILE_PATH', 'your dir path');
2) 当用户登录时,使用 sql 查询获取图像名称,使用登录的用户 ID/用户名从数据库中获取个人资料图片名称
3) 传递PROFILE_PATH 并在标签中连接您的图像名称

【讨论】:

    【解决方案2】:

    好的,所以我的第一个问题是您是否使用某种数据库。如果您确实在 users 表中创建了一个名为“avatar”的字段,我们将在此处存储文件名。其次,在您的 localhost 目录中创建一个名为“uploads”的文件,在这里我们将存储图片的文件名。 其次,你有会议吗?如果是这样,我已将会话定义为 $user,因此请更改它以适合您的会话。然后只需添加此代码。我把它们都放在同一个文件中,但如果你愿意,你可以把它做成一个单独的文件。

    <?php
        $servername = "localhost";
        $username = "";
        $password = "";
        $database = "";
    
        // Create connection
        $conn = mysqli_connect($servername, $username, $password, $database);
    
    $user = $_SESSION['username'];
    
       if(isset($_FILES['image'])){
          $errors= array();
          $file_name = $_FILES['image']['name'];
          $file_size = $_FILES['image']['size'];
          $file_tmp = $_FILES['image']['tmp_name'];
          $file_type = $_FILES['image']['type'];
          $file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));
    
          $extensions= array("jpeg","jpg","png");
    
          if(in_array($file_ext,$extensions)=== false){
             $errors[]="extension not allowed, please choose a JPEG or PNG file.";
          }
    
          if($file_size > 2097152) {
             $errors[]='File size must be 2 MB';
          }
    
          if(empty($errors)==true) {
             move_uploaded_file($file_tmp,"uploads/".$file_name);
    
            $store=mysqli_query($conn,"UPDATE tbl SET avatar='$file_name' WHERE username='$user'");
            mysqli_query($conn,$store);
             echo "Success";
          }else{
             print_r($errors);
             echo"it failed";
          }
       }
    ?>
    
          <form action="" method="POST" enctype="multipart/form-data">
    <p id="p1">Change profile picture:</p> <br />
             <input type="file" name="image" />
             <input type="submit"/>
          </form>
    
    <?php
    
    $getimg = mysqli_query($conn,"SELECT avatar FROM tbl WHERE username='$user'");
    $rows=mysqli_fetch_array($getimg);
    $img = $rows['avatar'];
    
    ?>
    
    
    
    <img id="myImg" src="uploads/<?php echo $img?>"  alt="<?php echo $img ?>" width="200" height="150">
    

    请提出任何问题,我很乐意为您提供帮助。

    【讨论】:

    • 好的,我会更新我的代码,告诉你我做了什么,看到了什么
    • 好吧,完成后添加评论 - 请注意确保您编辑 sql 查询以适合您的 tbl 连接
    • 好的,当您尝试上传图片时会发生什么?
    • 请检查“用户名”是否与您的数据库中的字段相同。您在此页面上使用会话吗?您是否在数据库中存储用户名的位置旁边创建了一个字段?
    • 我只是移动了上传图像的代码并将其放入我的 upload.php 文件中。当我单击更改个人资料图片按钮并转到 upload.php 时,它只是一个空白屏幕
    【解决方案3】:

    测试过!

    <?php
    
    
        
        $username = isset($_SESSION['username']) ? $_SESSION['username'] : "";
    
        $conn = mysqli_connect("localhost", "root", "", "test");
        
        if(!empty($username))
        {
            if(isset($_FILES['image']))
            {
              $errors= array();
              $file_name = $_FILES['image']['name'];
              $file_size = $_FILES['image']['size'];
              $file_tmp = $_FILES['image']['tmp_name'];
              $file_type = $_FILES['image']['type'];
              $file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));
        
              $extensions= array("jpeg","jpg","png");
        
              if(in_array($file_ext,$extensions)=== false){
                 $errors[]="extension not allowed, please choose a JPEG or PNG file.";
              }
        
              if($file_size > 2097152) {
                 $errors[]='File size must be 2 MB';
              }
        
              if(empty($errors)==true)
              {
                 move_uploaded_file($file_tmp,"uploads/".$file_name);
        
                $store = "UPDATE users SET userPic='$file_name' WHERE username='$username'";
        
                if(mysqli_query($conn, $store))
                {
                    echo "Success";
                }
                else
                {
                    echo "Update failed!";
                }
        
              }else{
                 print_r($errors);
                 echo"it failed";
              }
            }
        ?>
        
        <?php
        $getimg = mysqli_query($conn,"SELECT userPic FROM users WHERE 
        username='$username'");
        $rows=mysqli_fetch_array($getimg);
        $img = $rows['userPic'];
        
        ?>
        
        
        
         <img id="myImg" src="images/uploads/<?php echo $img?>"  alt="<?php echo $img ?>" width="200" height="150">
        
        
         <?php  
        }
        else
        {
            echo "Invalid Username";
        }
    

    有需要的可以给我留言

    乔斯菲

    【讨论】:

    • 这行不通。我不断收到此错误:( ! ) Parse error: syntax error, unexpected '$username' (T_VARIABLE) in C:\wamp\www\website\profile.php on line 49
    • 好的,我会更新代码并使其在本地工作,所以您只需更新源代码好吗?
    • 在上面编辑了您的代码。替换为现有代码并重试
    • 错误:: $store=mysqli_query($conn,"UPDATE users SET userPic='$userPic' WHERE username='$username'"); mysqli_query($conn,$store);上面粘贴的代码无需更改数据库列即可工作
    • 同样的事情正在发生。我看到了图片所在的框,但我只看到数据库中图片的名称
    猜你喜欢
    • 2020-10-25
    • 2021-12-10
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多