通过 href 在另一个 php 页面中使用变量
Use variable from one php page in another via href
我会尽力解释这一点:
我有一个上传页面。用户粘贴或 drags/drops 代码文件,并将其上传到他们的用户目录。在上传之前,他们需要通过下拉菜单选择语言。该选择值被添加到文件中,并添加了一个随机字符串。所以,如果他们粘贴一些 Java,然后点击上传,那么文件将是
java-iVW827pVjEEo.txt
这部分效果很好。
我有另一个页面,show_file.php,它以同样格式精美且语法突出显示的方式显示该文件的内容。 BUT 如果只有我手动输入文件名才有效。问题出现在用户的个人资料页面上。文件显示在用户的配置文件中,如下所示(我稍后将更改为标题。只需要让这部分工作):
这是通过这个 foreach 循环完成的:
foreach($files as $file) {
echo '<a href="'.$link.'">'.basename($file).'</a><br/>';
}
这是它在 show_file.php 页面上的显示方式:
语法高亮由文件名的第一部分决定。无论字符串中的语言是什么,它都会将其添加到 Prism.js class 名称之前:
$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 变量附加到 class,如下所示:
<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>
老实说,我不知道如何将用户个人资料页面上的文件路径 link 更改为 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
如何将我的锚标签 link 添加到各个文件?
谢谢。
看看这是否有效:)
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/>';
}
似乎在 echo 语句中添加的 php 标签出现了问题。让我知道!
更新:
好的,所以原来的错误没有了,但其他地方有问题。仅从片段中很难弄清楚这里发生了什么。但是,如果您使用 $_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/>';
}
我会尽力解释这一点:
我有一个上传页面。用户粘贴或 drags/drops 代码文件,并将其上传到他们的用户目录。在上传之前,他们需要通过下拉菜单选择语言。该选择值被添加到文件中,并添加了一个随机字符串。所以,如果他们粘贴一些 Java,然后点击上传,那么文件将是
java-iVW827pVjEEo.txt
这部分效果很好。
我有另一个页面,show_file.php,它以同样格式精美且语法突出显示的方式显示该文件的内容。 BUT 如果只有我手动输入文件名才有效。问题出现在用户的个人资料页面上。文件显示在用户的配置文件中,如下所示(我稍后将更改为标题。只需要让这部分工作):
这是通过这个 foreach 循环完成的:
foreach($files as $file) {
echo '<a href="'.$link.'">'.basename($file).'</a><br/>';
}
这是它在 show_file.php 页面上的显示方式:
语法高亮由文件名的第一部分决定。无论字符串中的语言是什么,它都会将其添加到 Prism.js class 名称之前:
$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 变量附加到 class,如下所示:
<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>
老实说,我不知道如何将用户个人资料页面上的文件路径 link 更改为 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
如何将我的锚标签 link 添加到各个文件?
谢谢。
看看这是否有效:)
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/>';
}
似乎在 echo 语句中添加的 php 标签出现了问题。让我知道!
更新:
好的,所以原来的错误没有了,但其他地方有问题。仅从片段中很难弄清楚这里发生了什么。但是,如果您使用 $_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/>';
}