我为每个用户都有特定的页面,里面没有帖子。我为他们添加了一个表单,用于将图像上传到上传文件夹,该文件夹将以该用户的唯一名称保存。这工作正常。
现在我需要限制其他用户的访问,试图通过摆弄 url 来查找其他提交的图像。我怎样才能确保这一点?
<?php
if($_POST)
{
if (!function_exists('wp_generate_attachment_metadata')){
require_once(ABSPATH . "wp-admin" . '/includes/image.php');
require_once(ABSPATH . "wp-admin" . '/includes/file.php');
require_once(ABSPATH . "wp-admin" . '/includes/media.php');
}
if($_FILES)
{
foreach ($_FILES as $file => $array)
{
if($_FILES[$file]['error'] !== UPLOAD_ERR_OK){return "upload error : " . $_FILES[$file]['error'];}
$filename=$_FILES[$file]["name"];
$extension=end(explode(".", $filename));
$newfilename=$prod ."something.".$extension;
$_FILES[$file]["name"] = $username . '-' . $newfilename;
$attach_id = media_handle_upload($file,$new_post);
echo wp_get_attachment_url($attach_id);
}
}
}
?>
使用 MD5 哈希创建图像的名称
$newfilename=MD5($prod ."something").".".$extension;
需要将映像作为 blob 存储在数据库中,以及用户名和映像名称(作为 varchar)。然后编写一个模仿图像文件的 php 包装器文件,并通过图像 url 查询字符串传递用户凭据以进行验证。访问图像的 HTML 代码如下所示:
<img src="image.php?imageName=YourImageName&user=JoeBlogg">