Улучшить скрипт загрузки изображений

Я не специалист по 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
    }
}
?>

1 ответ

Решение

Есть много решений, которые могут быть реализованы для этой проверки.

Один из них (не самый лучший) - добавить идентификаторы пользователей к именам изображений, затем в процессе отображения разделить имя изображения, чтобы получить его идентификатор пользователя.
сравните идентификатор пользователя (из db) с идентификатором пользователя (из имени изображения), если он равен, тогда эта фотография принадлежит пользователю, в противном случае пропустите ее.

Другие вопросы по тегам