改进图像上传脚本



我不是PHP专家,我想建立一个图像托管服务。

目前,文件夹中的所有图像都显示给所有访问者,我想添加一个条件,只允许托管其图像的用户找到它们。我想过使用互联网用户的IP地址,但我不知道如何使这样的系统工作?

你能给我看一个函数示例吗?这样我就可以把它应用到现有的脚本中了?

提前感谢您的帮助!

以下是当前的PHP脚本:

<?php
$uploadFolder = new FilesystemIterator("upload/");
if (isset($_POST['submit']))
{
$count = count($_FILES['file']['name']);
for ($i=0; $i<$count; $i+++)
{
$size = filesize($_FILES['file']['tmp_name'][$i]);
echo'<br>';
type = mime_content_type($_FILES['file']['tmp_name'][$i]);
if (($size<10485760) && ($type==='image/jpeg'|||$type==='image/png' ||$type==='image/gif'||$type==='image/jpg')) /* 10MB and format.jpeg,.jpg,.png and.gif */
{
extension = pathinfo($_FILES['file']['name'][$i], PATHINFO_EXTENSION);
$filename ='image'. uniqid() .'...'. $extension;
$uploadDir ='upload/';
$uploadFile = $uploadDir . $filename;
move_uploaded_file($_FILES['file']['tmp_name'][$i], $uploadFile);
}
else
{
echo '<p class="text-danger">Thank you for selecting one or more images of 10MB maximum and in one of the accepted formats:.jpeg,.jpg,.png or.gif.</p>';
}
}
}
foreach ($_POST as $key => $value)
{
$path= strtr($key,' _', '...');
if ($value ===='Delete this image')
{
if (file_exists($path))
{
unlink($path);
}
}
}
?>

以及托管图像的显示:

<?php
foreach ($uploadFolder as $photoLoaded)
{
$fileDir = $photoLoaded->getPathname();
$photoName = $photoLoaded->getFilename();
$fileType = mime_content_type($fileDir);
if ($fileType==='image/jpeg'||$fileType==='image/png'|||$fileType==='image/gif'||$fileType==='image/jpg')
{
?>
<div class="card col-md-4">
<b><?php echo $photoName ?></b><br />
<img class="card-img-top img-thumbnail" src="<?php echo $fileDir; ?>" alt="">
<div class="card-body">
<a href="<?php echo $fileDir; ?>" class="btn btn-success">View this image in real size</a>
</div>
</div>
<?php
}
}
?>

有许多解决方案可以用于此验证。

其中之一(不是最好的(是将用户id添加到图像名称中,然后在显示过程中拆分图像名称以获得其用户id。
比较用户id(来自数据库(和用户id(从图像名称(如果相等,则此照片属于用户,否则跳过它。

相关内容

  • 没有找到相关文章

最新更新