0

以下のコードを使用しています。このコードは、フォームから送信されたアーティストの名前を単純に取得し、サーバーに html ファイルとして保存します。

<?php


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

私が解決しようとしているのは、ファイルを保存する前にファイル内にコードを追加する方法です。そうすれば、ユーザーがアーティストを追加するたびに、テンプレート コードをファイルに含めることができます。どんな助けでも素晴らしいでしょう:)

4

3 に答える 3

1

を使用しfwriteます。

2つのこと:

  1. file_put_contents全体的に速くなります。
  2. あなたのデザインは非常に悪い考えです。ファイルシステムのどこにでもファイルを挿入できます。たとえばartist=../../../../etc/passwd%00、書き込みを試みます/etc/passwd(%00 は NUL バイトです。これにより、fopen は C の文字列を終了させます - それが修正されていない限り)。
于 2012-06-12T01:42:07.190 に答える
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);
}
于 2012-06-12T01:41:39.933 に答える
0

警告 - ファイルシステムへの書き込みには十分注意してください。あなたの例では、誰かがファイルシステムの部分に書き込むのを止めるものは何もありません.

これについてよく考えて、コンテンツをデータベースに保存する (適切なベスト プラクティスを使用して、つまりhttp://php.net/manual/en/security.database.sql-injection.phpを使用する) か、少なくとも作成することを心からお勧めします。ファイル名の文字列に使用する文字を制限してください (たとえば、AZ または az と '_' のみを許可します)。それ以外の場合は危険で悪用可能であり、少なくともサイトが改ざんまたは悪用されるリスクがあります.

他の人が言ったように-fwriteを使用してphpコードをファイルシステムに書き込むことができるはずです。

于 2012-06-12T01:46:12.300 に答える