2011-01-28 117 views
-1

是否有任何方法将表单发布数据直接存储到PHP文件中,而不是以文本或二进制格式存储它?我可以将数据存储在PHP文件中吗?

+1

为什么要将基于文本的数据存储在一个php文件中。发布数据将是纯文本不会吗? – bharath 2011-01-28 15:44:50

+0

BTW:一个PHP文件也是纯文本... – Select0r 2011-01-28 15:46:58

回答

1

这在技术上是可行的,但没有充足的理由这样做。你想解决什么问题?

您可以使用fopen('file.php','a')打开一个附加的PHP文件并使用fwrite向其写入内容。要读取它,请阅读整个文件,跳过PHP部分并读取刚写入的数据。

2

当然,你可以将它保存到你想要的任何类型的文件中。虽然把它放在一个php文件中将是一个主要的安全风险,因为有人可以上传一个坏的东西的脚本,然后启动它,就像你网站上的任何其他页面一样。

1

如果您不想存储数据(只能从脚本传递给脚本),您可以尝试将表单存储为会话变量:

 
session_start(); 
$_SESSION['myData'] = $myData; 
然后所有共享会话的其他页面都可以通过致电 $_SESSION['myData']访问数据。

0

不在PHP文件本身。但是你可以使用这个脚本只是存储的东西:

file_put_contents(dirname(__FILE__).'/data.txt', var_export($_REQUEST, 1), FILE_APPEND); 

如果你真的想直接存储在PHP文件本身,只需更改脚本

file_put_contents(__FILE__, '?>'.var_export($_REQUEST, 1), FILE_APPEND); 

;-)

2

为什么你想通过TXT文件将数据存储在PHP文件中?真的,如果你正在向文件系统中的文件写入数据,那么扩展名将是什么并不重要。 (但是,如果您写入PHP文件并在浏览器中进行访问,则会尝试执行文件中的任何数据,这可能会造成很大的安全问题。)

我的建议是编写在文本文件中为每行添加一个值。然后,当你想读取数据时,使用PHP将该文件读回数组。

1

是的,这是可能的。如果你想这样做,看看像var_export这样的功能。

然而,像其他人所说,这对于大多数意图和目的来说是一个坏主意™。将事情写入可执行文件意味着您必须对用户输入格外小心,例如,因为他们可能会利用它来运行自己的代码。

因此,您应尽可能使用数据库或某种不可执行的平面文件来存储数据。此外,如果您为了“安全”而尝试这样做,即将保护性代码放入文件中,可以通过将文件作为文本文件读取并跳过安全措施请记住,PHP代码是纯文本,不必执行即可读取。如果您选择将其作为安全措施进行加密,则您也可以将加密数据存储在数据库中,从而使您的观点没有实际意义。

如果您发现自己无法访问数据库系统,则应考虑使用存储在文件中的SQLite数据库,因此不需要安装任何内容,只需安装PHP SQLite扩展,该扩展将作为PHP的标准部分。

0

有可能是保存数据的更好的办法,但如果你真的想这是可以做到这样:

file_put_contents($storage_file, '<?php return ' . var_export($data) . ';'); 

这样,所有数据都将被格式化好和良好逃脱。

然后你可以用这样的代码检索数据:

$data = include $storage_file; 
相关问题