当用户提交图片时,文件将被移动到生成的文件夹(出于安全目的),其文件路径记录在数据库中。当用户停留在页面上时,图片会正确显示,但当用户退出页面并重新访问时,他们之前上传的图片无法显示(根本没有显示)。我似乎无法通过其会话变量从其位置唤起图像,并希望了解这一点,谢谢。
我尝试过的事情:
回显头像会话变量 - >图像根本不显示
回显图像的位置 - >用户在提交后未离开页面时显示图像。当用户离开时 重新访问页面,图像不显示。在它的位置,一个 图像所在位置的轮廓显示。
这是我的代码:
$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" />
答案 0 :(得分:0)
只要用户没有关闭浏览器,会话变量才会处于活动状态。
因此,如果您尝试回复git status --porcelain
,那么当用户刚刚上传了您的网页并在您的网页上浏览时,它就能正常工作。当他们离开并稍后回来时,会话已被清除。此外,会话仅在当前用户和网络服务器之间,并且仅为用户本身显示头像,而不是您网站上的任何其他人!
因此,从会话中加载图像不是理想的解决方案!
每次用户访问您的网页时,您都需要从数据库中加载他们的信息(包括头像路径)并直接从那里显示。