2017-02-21 67 views
0

我會盡力解釋這個最好的我可以:使用變量從另一個php頁面通過href

我有一個上傳頁面。用戶粘貼或拖放代碼文件,並將其上傳到他們的用戶目錄。在他們上傳之前,他們需要通過下拉菜單選擇語言。該選擇值預先添加到文件中,並添加一個隨機字符串。所以,如果他們粘貼一些Java,並點擊上傳,那麼文件將是

java-iVW827pVjEEo.txt 

這部分工作很好。

我有另一個頁面show_file.php,它以相同的格式和語法突出顯示的方式顯示該文件的內容。 但是如果只在手動輸入文件名時才起作用。問題出現在用戶的個人資料頁面上。該文件顯示在類似這樣的用戶的配置文件(我改變了對冠軍後只需要得到這部分工作。):

screenshot of links

也就是說通過這個foreach循環完成:

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 = $_GET['id'], 

分配我的$ user_file可變的,但現在我得到

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來傳遞文件名('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/>'; 
} 
+0

對不起,但那並不奏效。我得到fopen(users/testUser/code_uploads/$ file-> id):未能打開流:沒有這樣的文件或目錄 – IRGeekSauce

+0

對不起,這裏早了!嘗試更新的代碼:) –

+0

嘿,我明白了。我現在很晚了。可悲的是,我得到了這樣的通知:試圖爲每個文件獲取非對象<文件路徑的屬性>。這些鏈接可以讓我在沒有崩潰的情況下訪問頁面,但div沒有顯示任何內容。我正在閱讀有關$ _GET參數/請求的信息,以嘗試並找出它。我第一次與他們打交道。 – IRGeekSauce

相關問題