У меня есть эта проблема, я должен защищать изображения и документы пользователей, которые загружаются на сайт.Я написал некоторый код, но я не понимаю, почему он не работает.
каталог файлов:
/storage/user_id/docs/namefile.jpg
пример:
/storage/1/docs/1616.jpg
Теперь я добавил файл .htaccess
в хранилище папки:
Options -Indexes
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} .*jpeg$|.*jpg$|.*gif$|.*png$|.*pdf$ [NC]
RewriteRule (.*) http://localhost/system/functions/imageAuth.php?img=$1 [NC,L]
Файл imageAuth.php
<?php
require_once($_SERVER['DOCUMENT_ROOT'].'/system/core/config.php');
if(!strip_tags($_GET['img']) || !isset($_GET['img']) || $_GET['img'] == "" ){
header('Location https://'.$_SERVER['HTTP_HOST']);
}
$reqpath = strip_tags($_GET['img']);
$foundslash = strpos($reqpath,'/');
if($foundslash === FALSE){
header('Location https://'.$_SERVER['HTTP_HOST']);
}
$string = trim($reqpath, "/");
$parts = explode("/", $string);
$uid = $parts[1];
$files = explode(".", $_GET['img']);
$ext = end($files);
if($ext == "jpg" || $ext == "jpeg" || $ext == "gif" || $ext == "png"){
$ext = "image/".$ext;
}else if($ext == "pdf"){
$ext = "application/".$ext;
}
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-store, no-cache,must-revalidate");
header("Cache-Control: post-check=0, pre-check=0",false);
header("Pragma: no-cache");
header("Content-type: ".$ext);
$authed = FALSE;
$uc = $user->get_user_c($uid);
if($_SESSION['user_c'] == $uc){
$authed = TRUE;
}
if($authed){
@readfile($_GET['img']);
}else{
@readfile("storage/not_authed.jpg");
}
?>
Яубедитесь, что функция $user->get_user_c()
работает правильно.Но я не понимаю, почему это не показывает изображение, так как я проверил все, что мне нужно, чтобы отобразить изображение или PDF.
Отображение изображения в теге html или открыть изображение ссылки.
Ошибка: "невозможно загрузить изображение"
Я проверяю, открыто ли изображение с помощью файла php, работает, но не открывается в обычном теге
Устранена ошибка в файле пути, нотеперь, если я попытаюсь getimagesize ();вернуть только ложь ... никто не может мне помочь?