Задать вопрос
@ended

Как передать нужный путь к файлам на другую страницу?

Есть функция

<?php 

function get_images($dir){
 @$files = scandir($dir);
 unset($files[0], $files[1]);
 return $files;
}

 ?>


Она лежит в отдельном файле, собирает изображения в папке в массив, который мне потом нужно будет вывести на другой странице. Есть одна страница home_page.php , которая содержит ссылки, к примеру:

<a href="cats.php">Category1</a>
<a href="cats.php">Category2</a>


и вторая cats,php, на которой нужно будет отобразить картинки.

cats.php общая страница, но в зависимости от ссылки, нужно в переменной $dir передавать каждый раз разный путь к файлам. Как это лучше осуществить?

Функция вывода картинок:
<?php if($images): ?>
<?php foreach($images as $image): ?>
 <figure class="card">
  <a data-fancybox="gallery" href="<?=$dir . $image?>">
    <img class="card-img" src="<?=$dir . $image?>" alt="1">
  </a>
</figure>
<?php endforeach; ?>
<?php else: ?>
 <p>В данной галерее нет картинок</p>
<?php endif; ?>


Обращение к функции во втором файле:

<?php 
include '../functions.php';
$dir = '../img/photo/in_car/';
$images = get_images($dir);
?>


Здесь значение переменной $dir указано для наглядности. Надеюсь обьяснил все понятно.
  • Вопрос задан
  • 68 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Функция, конечно, ад.
Как и ответы, которые здесь настрочат местные помогайки.

Первое, о чем тебе надо позаботиться - это безопасность
Чтбы не вываливать наружу содержимое любой папки на диске.
Поэтому "как передать" зависит от того, какая структура папок
Если совсем сложная, то ссылки на голереи хранить в БД, передавать id записи в таблице. а в cats.php доставать ссылку из базы.
Если БД нету и это для тебя ну совсем неподъемно сложно, то передавать прямо ссылку и как-то её валидировать

Например если главных категорий не очень много, и вложенность всегда 2

$sections = ['tentacles','yaoi','yuri'];

$parts = explode("/", $dir);
$dir = "../img/$dir/"
if (count($parts) <> 2 || !in_array($parts[0], $sections, true) || !is_dir($dir)) {
    return [];
}
и дальше уже лепить свой скандир

в общем лучше по базе
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы