0

我对编码知之甚少。我有一个可能是一个非常基本的问题。我想使用页面 A 上的各种链接来告诉页面 B 使用 PHP 显示哪个文本文件。

我可以在 B 页上使用 PHP 来显示一个特别命名的文件。例如

$f = fopen("first_file.txt", "r");
// Read line by line until end of file
while(!feof($f)) {
echo fgets($f) . "<br />";
}
fclose($f);

但我不想创建和存储数百个页面,一个用于我要显示的每个文本文件。我更愿意将页面 B 创建为一种模板,并使用来自页面 A 的链接以某种方式传达的变量来填充其文本(来自文本文件)。

有人告诉我在 A 页上使用这样的东西(这可能是完全错误的):

<a href="pageB.php?txtfile:first_file.txt">First Text</a> 
<a href="pageB.php?txtfile:second_file.txt">Second Text</a>, etc.

但我不知道如何更改页面 B 上的 PHP 代码以从页面 A 上的链接中获取变量。那里有任何帮助吗?

4

1 回答 1

0

首先它的

<a href="pageB.php?txtfile=first_file.txt">First Text</a> 

不等于冒号

那么变量在$_GET['txtfile']

所以是

$f = fopen($_GET['txtfile'], "r");

安全警告,如果您通过将他们想要的文件名添加到 url 来执行此操作,任何人都可以访问您服务器上的任何文件

例如,有人可能决定请求此 URL:

pageB.php?txtfile=../../../../../../../../etc/passwd

另一种方法:

 <a href="pageB.php?txtfile=1">First Text</a>

在 pageB.php 上:

$files=array('1'=>'file1.txt','2'=>'file2.txt');
$f = fopen($files[$_GET['txtfile']], "r");
 ...

如果文件列表很大,您可能需要使用数据库来管理它。

于 2013-09-05T21:48:38.917 回答