为什么化身在重新访问页面时会消失?

时间:2015-07-20 17:28:12

标签: php image mysqli

当用户提交图片时,文件将被移动到生成的文件夹(出于安全目的),其文件路径记录在数据库中。当用户停留在页面上时,图片会正确显示,但当用户退出页面并重新访问时,他们之前上传的图片无法显示(根本没有显示)。我似乎无法通过其会话变量从其位置唤起图像,并希望了解这一点,谢谢。

我尝试过的事情:

  1. 回显头像会话变量 - >图像根本不显示

  2. 回显图像的位置 - >用户在提交后未离开页面时显示图像。当用户离开时 重新访问页面,图像不显示。在它的位置,一个 图像所在位置的轮廓显示。

  3. 许多小调整(例如,将头像会话变量设置为位置,等等)。
  4. 这是我的代码:

         $fln = $_FILES['avatar']['name'];
         if(isset($fln) && tmp_name !== "") {
           $tmp_name = $_FILES['avatar']['tmp_name'];
           $fls = $_FILES['avatar']['size'];
           $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
           $rdn = substr(str_shuffle($chars), 0, 15);
           //size checker
    
           if($fls > 6500000) {
              echo "Image must be less than 6.5 MB...";
           }
           else {
             mkdir("user_data/user_avatars/$rdn/");
             $location = "user_data/user_avatars/$rdn/$fln";
             move_uploaded_file( $tmp_name, $location);
             $imageCD = "UPDATE users SET avatar=? WHERE email=? LIMIT 1";
             $imageST = $con->prepare($imageCD);
             $imageST->bind_param('ss', $location, $_SESSION["email_login"]);
             $imageST->execute();
    
             $_SESSION["avatar"] = $location;
           }
               }
               else {
                 $location = "/img/default_pic.jpg";
    
               }
    

    以下是图像显示的位置:

        <img src="<?php echo  $_SESSION["avatar"]; ?>" class="profilePic" id="profilePic" />
    

1 个答案:

答案 0 :(得分:0)

只要用户没有关闭浏览器,会话变量才会处于活动状态。

因此,如果您尝试回复git status --porcelain,那么当用户刚刚上传了您的网页并在您的网页上浏览时,它就能正常工作。当他们离开并稍后回来时,会话已被清除。此外,会话仅在当前用户和网络服务器之间,并且仅为用户本身显示头像,而不是您网站上的任何其他人!

因此,从会话中加载图像不是理想的解决方案!

每次用户访问您的网页时,您都需要从数据库中加载他们的信息(包括头像路径)并直接从那里显示。