使用HREF将变量发送到PHP fopen

时间:2013-09-05 21:45:52

标签: php href fopen

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

我可以在第B页上使用PHP来显示特定命名的文件。 E.g。

$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页的链接中获取变量。有任何帮助吗?

1 个答案:

答案 0 :(得分:0)

首先是

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

等于非冒号

然后变量在$_GET['txtfile']

所以

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

安全警告,任何人都可以访问您服务器上的任何文件,如果您通过将他们想要的文件名添加到网址

例如,有人可能会决定请求此网址:

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");
 ...

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