2012-09-26 14 views
0

如何为我的fopen上的输出定制文本名称? 我尝试使用如何使用fopen自定义php上的文本名称comman

$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!"); 

只是弹出一个警告页面上。

+0

你有没有考虑过使用'MySQL'来存储我们的信息而不是独立的平面文件 – Baba

+0

我不明白为什么“它”应该返回任何地方或提示任何人任何事情。代码是关于将数据从请求写入文件。而已。 – arkascha

+0

我需要文本格式的文件,这就是为什么我要这样做 – telexper

回答

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); 
} 
?> 
+0

它只是创建一个名为“.txt”的文件,而不是像下面的$ Aname那样创建一个像note.txt这样的文件。 '.txt'; – telexper

0

你应该使用绝对路径的FOPEN的$filename参数,所以替换您如下一行:

$file = $Aname.'.txt'; 

这一个:

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

上述假设您Web服务器运行Linux,如果它是一个窗口,你必须逃避任何反斜杠,如fopen("c:\\my\\document_root\\myfile.txt", "a");

+0

仍然没有,它仍然创建文件名“.txt”而不是包含$ Aname的值的文件,如asdad.text – telexper

1

确保$_POST['Aname']实际上已填充(可能来自$_GET?)。

请注意,通过使用unsanitized数据写入磁盘,您已经打开了一个相当大的安全问题。有可能人们会用PHP代码覆盖磁盘上的任何文件,然后执行该操作。

相关问题