我正在使用下面的代码,它只是通过表单提交的艺术家名称,并将其保存为服务器上的html文件。
<?php
if (isset($_GET['artist'])) {
$fileName = $_GET['artist'].".html";
$fileHandler = fopen($fileName, 'w') or die("can't create file");
fclose($fileHandler);
}
?>
我正在尝试解决的问题是如何在保存之前在文件中添加任何代码。这样,每次用户添加艺术家时,我都可以在文件中包含我的模板代码。任何帮助都会很棒:)
答案 0 :(得分:1)
使用fwrite
。
两件事:
file_put_contents
整体会更快。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代码写入文件系统。