Показване и местене на снимка, която е извън /public_html/

vinsbg

Registered
Здравейте,

Потребителите в сайта могат да качват снимки, когато се логнат. За по-голяма сигурност съм изнесъл папката със снимки от потребители извън /public_html/.

Всяка снимка не е видима, докато администратор не я одобри и т.н.

Сега искам тези снимки, които са качени да ги визуализирам в администраторския панел, за да може админ да ги прегледа и одобри/изтрие..

Проблема ми е как да ги показвам?
Това ми е кода, където искам да ги покажа..
Код:
        <?php                            
        $pdo = Database::connect();
         $result = $pdo->prepare("SELECT * FROM images WHERE image_active = 'No' ORDER BY image_id DESC LIMIT 20");
                $result->execute();
                for($i=0; $row = $result->fetch(); $i++)
                {                
                    echo '  
                    	<a class="test-popup-link" href="/home/ххх/userImages/'.$row['image_name'].'"><img src="/home/ххх/userImages/'.$row['image_name'].'" style="margin-top: 10px;"> </a>             
                    </li>                    
                    ';    
                }
            Database::disconnect();
    ?>
Как мога да достъпя папката и да визуализирам снимките с php?

Note: xxx = юзъра на хостинга...
 
uphero каза:
Не става. Това, което прочетох из нета е, че браузера не чете снимка, която е извън /public_html/ папката, като снимка... или /www/, /htdocs/ и т.н.

Ето:
http://stackoverflow.com/a/258380/4199784

Проблема е как да ги извъртя в луупа, както в отговора на линка и да ги покажа всичките после на страницата.
 
vinsbg каза:
uphero каза:
Не става. Това, което прочетох из нета е, че браузера не чете снимка, която е извън /public_html/ папката, като снимка... или /www/, /htdocs/ и т.н.

Ето:
http://stackoverflow.com/a/258380/4199784

Проблема е как да ги извъртя в луупа, както в отговора на линка и да ги покажа всичките после на страницата.
Eто тук има едно смислено обяснение да преминава изображението, както капча през определена страница и от там викаш изображението.

http://stackoverflow.com/questions/1415973/storing-and-reading-images-above-public-html


Use an image relay script!

To serve a imagefile that is outside the public_html folder you would have to do it by a php script. E.g make a image-relay.php that reads the image that is outside the public html...

<?php
header('Content-Type: image/jpeg');
$_file = 'myimage.jpg'; // or $_GET['img']
echo file_get_contents('/myimages/'.$_file);
?>

Now, $_file could be a $_GET parameter, but its absolutley important to validate the input parameter...

now you can make an <img src="image-relay.php?img=flower.jpg"> to access a flower.jpg image that is located in /myimage/flower.jpg ...
 
Дака, прочел съм го това .. доколкото го разбирам това ме устройва ако знам името на снимката.. или се бъркам...

Проблема е как да ги извъртя в луупа, както в отговора на линка и да ги покажа всичките после на страницата.

направих отделен файл - userImages.php
Код:
$result = $pdo->prepare("SELECT * FROM images WHERE image_active = 'No' ORDER BY image_id DESC LIMIT 20");
$result->execute();
for($i=0; $row = $result->fetch(); $i++)
{     
          header('Content-Type: image/jpeg');
          $_file = $row['image_name']; 
          echo file_get_contents('/home/ххх/userImages/'.$_file );
}
След това в index.php слагам следното:
Код:
<img src="userImages.php?img=<?php echo $_file; ?>">
и нищо не се получава.. <?php echo $_file; ?> е празно ...
 
Revelation каза:
Позволява ти да ги качиш извън папката, а не ти дава да четеш ?
Да, когато са извън /public_html/ папката на хоста, снимката е просто текст .. не е снимка.
Мога да я прочета, но като текст... въпроса е как да ги прочета като снимки .. всички снимки в папката.
 
vinsbg каза:
Revelation каза:
Позволява ти да ги качиш извън папката, а не ти дава да четеш ?
Да, когато са извън /public_html/ папката на хоста, снимката е просто текст .. не е снимка.
Мога да я прочета, но като текст... въпроса е как да ги прочета като снимки .. всички снимки в папката.
Само във file_get_contents поставяш линковете към изображенията.

PHP:
$base64image = 'data:image/png;base64,'.base64_encode(file_get_contents('img/path/name.type'));
echo '<img src="'.$base64image.'" />';

Нещо подобно предполагам ти трябва.

PHP:
$result = $pdo->prepare("SELECT * FROM images WHERE image_active = 'No' ORDER BY image_id DESC LIMIT 20");
$result->execute();
for ($i=0; $row = $result->fetch(); $i++) {
    $_file = $row['image_name'];
	$base64image = 'data:image/png;base64,'.base64_encode(file_get_contents('/home/ххх/userImages/'.$_file));
	echo '<br><img src="'.$base64image.'" />';
}
 
dakata__92 каза:
Нещо подобно предполагам ти трябва.

PHP:
$result = $pdo->prepare("SELECT * FROM images WHERE image_active = 'No' ORDER BY image_id DESC LIMIT 20");
$result->execute();
for ($i=0; $row = $result->fetch(); $i++) {
    $_file = $row['image_name'];
	$base64image = 'data:image/png;base64,'.base64_encode(file_get_contents('/home/ххх/userImages/'.$_file));
	echo '<br><img src="'.$base64image.'" />';
}

Благодаря ти много. Така работи :?:
 

Back
Горе