2017-02-21 5 views
0

Постараюсь объяснить это, что я могу:Использовать переменную с одной страницы php в другой через href

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

java-iVW827pVjEEo.txt 

Эта часть отлично работает.

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

screenshot of links

Это делается с помощью этого Еогеасп цикла:

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

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

displaying formatted code

подсветка синтаксиса определяется первая часть имени файла. Какой бы язык в строке, он будет предварять, что имя класса 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. Он получает содержимое файла, а затем добавляет переменную $ языка в классе, как показано здесь:

<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».

Я попытался редактирование цикла и тег привязки, как так

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 

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

Спасибо.

ответ

2

Смотрите, если это работает :)

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 добавляется в эхо заявление дает вопрос. Дай мне знать!

UPDATE:

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

$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/>'; 
} 
+0

Мне очень жаль, но это не сработало. Я получаю fopen (users/testUser/code_uploads/$ file-> id): не удалось открыть поток: нет такого файла или каталога – IRGeekSauce

+0

Извините, что это очень рано! Попробуйте обновленный код :) –

+0

Эй, я понимаю. Я очень поздно, когда я. К сожалению, с этим я получаю Уведомление: пытаюсь получить свойство не-объекта <путь к файлу здесь> для каждого файла. Ссылки переводят меня на страницу без сбоев, но div ничего не отображает. Я читаю о параметрах/запросах $ _GET, чтобы попытаться понять это. Впервые я когда-либо разбирался с ними. – IRGeekSauce

Смежные вопросы