@andrei2018

Как передать ссылку на элемент массива из области видимости одного файла в другой на сервере?

Есть две папки - с файлами .doc и, полученными из них, .html.
Есть два скрипта (тексты приведены урезанные для простоты), index.php:

foreach ($conn->query($sql) as $info) {
           print '<a href = addsearch.php  ?  link_html='.$info["path_html"].'  &   link_doc='.$info["path_doc"].' \>'.$title.'</a>';
        }


и addsearch.php:
<?php
$html = file_get_contents($_GET['link_html']);
$doc  = $_GET['link_doc'];

$script = "<script type='text/javascript'>
...
</script>
<input type='button' onclick='javascript: FindOnPage(\"text-to-find\"); return false;' value='Поиск на странице'>
"; // Конец добавляемого кода

$html = str_replace('</body>', $script . 'Original: <a href=http://localhost/DOC/' .$doc.   '>' .$doc. '</a></body>' , $html); // Добавление javascript и формы поиска.
echo $html; // Вывод HTML документа с добавленной формой поиска и javascript.
?>


На главной странице index.php формируется список ссылок на .html файлы.
Когда пользователь кликает по ссылке, то запускается addsearch.php, который добавляет в выбранную страницу javascript и форму поиска и отображает страницу.
Также на эту страницу добавляется ссылка на оригинальный .doc файл.

Всё работает, но только на коротких именах и путях, из-за ограничения метода GET.

Я хочу переделать программу, чтобы от клиента передавать на сервер через GET только ID для выбранной ссылки? (он есть в результатах запроса - $info["id"] )

Как-то так:

foreach ($conn->query($sql) as $info) {
           print '<a href = addsearch.php  ?  link_html='.$info["ID"].' \>'.$title.'</a>';
        }


( Ибо сейчас от клиента на сервер передаются обратно полученные данные, что в общем-то глупо.)

Мой Вопрос: Как адрес структуры info (полученных из базы данных) передавать между файлами php на сервере или может быть даже исключить файл addsearch и передавать между функциями?

(Передачу через переменные сессии использовать опасаюсь, так как они, я так понял, пишутся в файл на сервере, а зачем мне миллион обращений к диску, если можно передать ссылку через память?)
  • Вопрос задан
  • 263 просмотра
Решения вопроса 1
передавайте id а в файле addsearch подтягивайте необходимое из бд. зачем вы столько инфы передаете в ссылке, если оно у вас в бд есть.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@alekssamos
Программист любитель
Чтобы запустить сессию - напиши session_start(); // документация.

Потом бери суперглобальный массив $_SESSION и записывай / считывай все, что хочешь.
$_SESSION['id'] = 567888675;
	/* на первой странице записал */
	
print( $_SESSION['id'] );
	/* на второй странице прочитал */
	
		/* массивы тоже можно записывать */
$_SESSION['params'] = array(
	'id' => 123,
	'name' => 'record'
);
	/* записали */

print( $_SESSION['params']['id'] . "\n" . $_SESSION['params']['name'] );
/* получили */
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы