get — использовать переменную из одной страницы php в другую через href

Я постараюсь объяснить это как можно лучше:

У меня есть страница загрузки. Пользователь вставляет или перетаскивает файл кода и загружает его в свой каталог пользователя. Прежде чем загружать, они должны выбрать какой это язык через выпадающее меню. Это значение выбора добавляется к файлу и добавляется случайная строка. Итак, если они вставят немного Java и нажмут кнопку «загрузить», файл будет

java-iVW827pVjEEo.txt

Эта часть прекрасно работает.

У меня есть другая страница, show_file.php, которая отображает содержимое этого файла в том же красиво отформатированном и выделенном синтаксисе виде. НО если работает, только если я вручную ввожу имя файла. Проблема возникает на странице профиля пользователя. Файлы отображаются в профиле пользователя следующим образом (я перехожу к заголовкам позже. Просто нужно, чтобы эта часть работала):

скриншот ссылок

Это делается через цикл foreach:

foreach($files as $file) {
echo '<a href="'.$link.'">'.basename($file).'</a><br/>';
}

Вот как это отображается на странице show_file.php:

отображение отформатированного кода

Подсветка синтаксиса определяется по первой части имени файла. Какой бы язык ни был в строке, он будет добавлен к имени класса Prism.js:

$user_file = "java-NGEw5X8s0W2Q.txt"; //<-- Have to enter it manually right now
$file = fopen("users/$username/code_uploads/$user_file", "r");
switch(true) {
case strpos((string)$file, 'markup'):
$language = 'markup';
break;
case strpos((string)$file, 'java'):
$language = 'java';
break;
//18 other cases follow

И, наконец, вот код для отображения div. Он получает содержимое файла, затем добавляет переменную $ language к классу, как показано здесь:

<div class="container">
<div class="show-code">
<script src="lib/prism.js"></script> <!-- Load prism.js library -->
<pre><code class="language-<?php echo $language?>"><?php while(! feof($file)) {echo fgets($file);}?></code></pre>
</div>
</div>

Честно говоря, я не знаю, как связать путь к файлу на странице профиля пользователя с путем к файлу, который используется в show_file.php. Я попытался присвоить переменную $ file переменной $ _SESSION [‘file’], а затем использовать ее на странице show_file, но получаю ошибку «Undefined Index».

Я попытался отредактировать цикл for и привязку тега так

foreach($files as $file) {
//echo '<a href="'.$link.'">'.basename($file).'</a><br/>';
echo '<a href="show_file.php?id=<?php echo $file->id;?>">'.basename($file).'</a><br/>';
}

и присвоение моей переменной $ user_file с помощью

$user_file = $_GET['id'],

но теперь я получаю

Warning: fopen(users/testUser/code_uploads/<?php echo $file->id;?>): failed to open stream: No such file or directory

Что я могу сделать, чтобы связать свои теги привязки с соответствующими файлами?

Благодарю.

0

Решение

Посмотрите, работает ли это 🙂

foreach ($files as $file) {
//echo '<a href="'.$link.'">'.basename($file).'</a><br/>';
echo '<a href="show_file.php?id=' . $file->id . '">' . basename($file) . '</a><br/>';
}

Похоже, что добавление тегов php в оператор echo приводит к проблеме. Дай мне знать!

ОБНОВИТЬ:

Итак, первоначальная ошибка исчезла, но есть проблема в другом месте. Трудно понять, что здесь происходит, просто по фрагментам. Но если вы используете $ _GET для прохождения имени файла (‘id’), это должно поднять его на странице, на которую оно отправлено:

$user_file = $_GET['id']; // There was a comma here previously for some reason instead of semi-colon. Assuming this is an array. If not you can just echo the contents.

print_r($user_file); // This will show you if you have actually received the data. If you have:

foreach ($user_file as $file) {
echo '<a href="show_file.php?id=' . $file . '">' . basename($file) . '</a><br/>';
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector