0

fopenの出力のテキスト名をカスタマイズするにはどうすればよいですか?使ってみました

$file = $Aname .'.txt';

ただし、正しく出力されません。また、テキストファイルを作成した後、ページに戻り、ファイルの作成についてユーザーにプロンプ​​トを表示します。

<?php
$saving = $_REQUEST['saving'];
if ($saving == 1){ 
$Aname = $_POST['Aname'];

$name = $_POST['name']; 
$last = $_POST['last']; 
$mob = $_POST['mob']; 
$ext = $_POST['ext']; 
$email = $_POST['email']; 
$add = $_POST['add']; 
$com = $_POST['com']; 
$day = $_POST['day']; 
$text = $_POST['text'];
$date = date("M j, Y "); 

$data = "Date Sent: {$date}\n\nName: {$name} {$last}\nPhone : {$mob} ext: {$ext}\nCompany: {$com}\nAddress : {$add}\nE-mail : {$email}\nDay : {$day}\n\nNote :

\n{$text}\n---------------------------------------\n";

$file = $Aname.'.txt';

$fp = fopen($file, "a") or die("Couldn't open $file for writing!");
fwrite($fp, $data) or die("Couldn't write values to file!"); 

fclose($fp); 
}
?>

また、ユーザーを別のページに移動してこのエラーを発生させる代わりに

die("Couldn't write values to file!"); 

ページにアラートをポップアップするだけです。

4

3 に答える 3

1

それが実際に入力されていることを確認してください$_POST['Aname'](多分それは?から来てい$_GETます)。

ちなみに、ここでは、サニタイズされていないデータを使用してディスクに書き込むことにより、かなり大きなセキュリティ問題を開いていることに注意してください。潜在的に、人々はあなたのディスク上のファイルをPHPコードで上書きし、それを実行する可能性があります。

于 2012-09-26T16:11:33.370 に答える
0

file_put_contents()を使用してみてください。これは、fopen、fwrite、fcloseの頭痛全体に取って代わります。 http://php.net/manual/en/function.file-put-contents.php

<?php
$saving = $_REQUEST['saving'];
if ($saving == 1){ 
$Aname = $_POST['Aname'];

$name = $_POST['name']; 
$last = $_POST['last']; 
$mob = $_POST['mob']; 
$ext = $_POST['ext']; 
$email = $_POST['email']; 
$add = $_POST['add']; 
$com = $_POST['com']; 
$day = $_POST['day']; 
$text = $_POST['text'];
$date = date("M j, Y "); 

$data = "Date Sent: {$date}\n\nName: {$name} {$last}\nPhone : {$mob} ext: {$ext}\nCompany: {$com}\nAddress : {$add}\nE-mail : {$email}\nDay : {$day}\n\nNote :

\n{$text}\n---------------------------------------\n";

$file = $Aname.'.txt';

file_put_contents ( $file, $data ); 
}
?>
于 2012-09-26T15:37:01.240 に答える
0

fopenのパラメーターには絶対パスを使用する必要がある$filenameため、次の行を置き換えます。

$file = $Aname.'.txt';

これのために:

$file = dirname($_SERVER["SCRIPT_FILENAME"]) . '/' . $Aname.'.txt';

上記は、WebサーバーがLinuxを実行していることを前提としています。Windowsサーバーの場合は、次のようなバックスラッシュをエスケープする必要があります。fopen("c:\\my\\document_root\\myfile.txt", "a");

于 2012-09-26T15:43:27.960 に答える