2012-09-26 43 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代碼覆蓋磁盤上的任何文件,然後執行該操作。

相關問題