Защитите изображение и пользователя PDF, просмотрите файл, только пользователь является логином - PullRequest
0 голосов
/ 17 февраля 2019

У меня есть эта проблема, я должен защищать изображения и документы пользователей, которые загружаются на сайт.Я написал некоторый код, но я не понимаю, почему он не работает.

каталог файлов:

/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 ();вернуть только ложь ... никто не может мне помочь?

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

У вас проблема в файле htaccess.Попробуйте

Options -Indexes
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} .*jpeg$|.*jpg$|.*gif$|.*png$|.*pdf$ [NC]
RewriteRule ^(.*)$../system/functions/imageAuth.php?img=$1 [NC,L]
0 голосов
/ 17 февраля 2019

Я бы начал с печати $ _GET ['img'] и убедился, что она существует на сервере.

Вы можете использовать fileexists (), чтобы проверить его наличие, прежде чем пытаться его прочитать.

...