Используйте глобальные переменные для динамического изменения URL

#php #html #mysql #.htaccess #globals

#php #HTML #mysql #.htaccess #глобальный

Вопрос:

Так что это будет действительно сложно объяснить,

У меня есть папка A, и у меня есть папка B. Я использую общую базу данных для них обоих.

В обеих папках есть следующие файлы, внутри каждого из них => config.php , index.php , upload.php , control_admin.php , admin.php и view.php . Есть некоторые базовые файлы базы данных, CSS и JS, которые B разделяет с A (не представляет никакой проблемы).

Теперь A для проекта A, а B для проекта B.

для каждого из проектов у меня есть URL-адреса => a.example.com amp; b.example.com

В a.example.com/index.php Я загружаю файл изображения с такими характеристиками, как project_name = Apple Version = 1.

В b.example.com/index.php Я загружаю файл изображения с такими характеристиками, как project_name = Banana Version = 1.

Эти изображения загружаются в папки изображений в A и B соответственно.

Теперь, чтобы просмотреть эти изображения, я мог бы перейти к

a.example.comview.php ?$version= 1 и мог бы видеть рисунок.

аналогично для b.example.com

Я изменил это в .htaccess, чтобы создать удобный URL-адрес, который приведет меня к

a.example.com1 и отображает изображение по мере необходимости.

Теперь возникает проблема. Каждый из view.php файл имеет следующую ссылку на изображение

 <img src = "<?php echo     "http://".$GLOBALS['url']."".$GLOBALS['img_folder']."/".$new ?>" style = 'margin: 0px auto; display:block; max-width: 100%;height: auto;'>
  

Я беру эти глобальные переменные из config.php каждого файла.

Для:

 <?php $GLOBALS['project_name'] = 'Apple';?>

<?php $GLOBALS['url'] = 'a.example.com/'?>

<?php $GLOBALS["folder"] = 'FolderA'; ?>

<?php $GLOBALS['img_folder'] = 'AppleImages'; ?> 
  

Для B:

 <?php $GLOBALS['project_name'] = 'Banana';?>

<?php $GLOBALS['url'] = 'b.example.com/'?>

<?php $GLOBALS["folder"] = 'FolderB'; ?>

<?php $GLOBALS['img_folder'] = 'BananaImages'; ?> 
  

Теперь проблема в том, что если я загружаю версию 1 A, а затем версию 1 B, а затем я перехожу по ссылке, которая является дружественным URL-адресом из a.example.com/1 или b.example.com/1 … Я не могу видеть один в A после загрузки файла в B. Потому что URL-адрес жестко указывает на B, поскольку это недавняя загрузка в ту же базу данных.

Что я могу сделать с URL-адресом, чтобы убедиться, что при загрузке в a.example.com а затем к b.example.com , файлы с той же версией… Я вижу оба изображения по их соответствующим URL-адресам

a.example.com/2 и b.example.com/2

Надеюсь, я понял смысл. Заранее спасибо.

https://drive.google.com/drive/folders/0B5nDbj-RhZJMa3drNFlfRzVaLXc?usp=sharing

Комментарии:

1. что находится $new в ссылке на изображение?

2. @RyanVincent идентификатор upload_id генерируется автоматически или мы должны ввести его?

3. Вам придется его сгенерировать. Но это решение было бы неуправляемым при большом количестве загрузок. Ваше решение, вероятно, аналогично — но добавьте столбец в таблицу, где вы храните информацию о загрузке, и сохраните название проекта в каждой записи загрузки, чтобы вы могли найти правильное имя файла, используя номер версии и название проекта. Но, не сообщая нам, что $new это такое и откуда оно взялось, трудно сказать, почему оно терпит неудачу.

4. @Luke Привет, я поместил папки на диск, пожалуйста, смотрите Основной вопрос.

5. $new — это базовое имя прикрепленного файла.

Ответ №1:

Я просмотрел предоставленную вами ссылку на Google Диск.

view.php : строка 64

 $project_name_download_form = $_GET['project_name'];
  

Если вы не обращаетесь view.php с таким URL-адресом, как этот:

 a.example.comview.php?version=1amp;project_name=apple
  

У $project_name_download_form вас будет пустое строковое значение, и ваш SQL-запрос станет:

 SELECT demo_id, demo_name, demo_version, demo_details, file 
                      FROM demo
                      WHERE  demo_name = ''
                      AND  demo_version = '1'
  

Итак, 2 действия, измените строку 64 на:

 $project_name_download_form = $GLOBALS['project_name'];
  

А затем проверьте базу данных напрямую, чтобы убедиться, что в столбце demo_name заданы значения (а не просто пустые).

Комментарии:

1. Использование $GLOBALS неприятно, потому что оно настраивается из всех пользовательских данных, таких как GET, POST и COOKIE @siddparkar