如何在从php表单保存的文件中包含自定义文本?

时间:2012-06-12 01:37:40

标签: php html

我正在使用下面的代码,它只是通过表单提交的艺术家名称,并将其保存为服务器上的html文件。

<?php


if (isset($_GET['artist'])) {
$fileName = $_GET['artist'].".html";
$fileHandler = fopen($fileName, 'w') or die("can't create file");
fclose($fileHandler);
}
?>

我正在尝试解决的问题是如何在保存之前在文件中添加任何代码。这样,每次用户添加艺术家时,我都可以在文件中包含我的模板代码。任何帮助都会很棒:)

3 个答案:

答案 0 :(得分:1)

使用fwrite

两件事:

  1. file_put_contents整体会更快。
  2. 您的设计是非常糟糕的主意。他们可以在文件系统的任何位置注入文件,例如artist=../../../../etc/passwd%00将尝试写入/etc/passwd(%00是一个NUL字节,这会导致fopen终止C中的字符串 - 除非已修复)。

答案 1 :(得分:0)

fwrite()允许您将文本写入文件。

if (isset($_GET['artist'])) {
  $fileName = $_GET['artist'].".html";
  $fileHandler = fopen($fileName, 'w') or die("can't create file");
  fwrite($fileHandler, 'your content goes here');
  fclose($fileHandler);
}

答案 2 :(得分:0)

警告 - 要非常小心你写入文件系统的内容。在您的示例中,没有什么能阻止某人写入您从未预料到的文件系统的某些部分(例如,artist ='.. / index'!)。

我真诚地建议您三思而后行,并将内容保存到数据库中(使用适当的最佳实践,即http://php.net/manual/en/security.database.sql-injection.php)或至少确保限制文件名字符串中使用的字符(例如。例如,只允许字符AZ或az和'_'。否则,这是危险和可利用的,至少你冒着网站被污损或被滥用的风险。

正如其他人所说的那样 - 你应该能够用fwrite将php代码写入文件系统。