2012-07-13 77 views
0

我是新來的PHP和一般編程,所以原諒我對這一個無知。我正在嘗試重新命名我使用日期時間戳創建的文本文件,並且似乎無法正確顯示它。在某人提交數據後,我正在將信息寫入文本文件,並且工作正常,但我需要使每個文本文件都是唯一的,所以我需要一個獨特的命名約定。我甚至嘗試使用條目的名字,但我無法讓它工作。這是我到目前爲止:如何在php中使用日期時間戳來重命名文本文件?

<?php 
$FirstName = $_POST["fname"].PHP_EOL; 
$LastName = $_POST["lname"].PHP_EOL; 
$Address = $_POST["address"].PHP_EOL; 
$City = $_POST["city"].PHP_EOL; 
$State = $_POST["st"].PHP_EOL; 
$Zip = $_POST["zip"].PHP_EOL; 
$Tel = $_POST["tel"].PHP_EOL; 

$AddressFile = "Address_Entries.txt"; 
$ourFileHandle = fopen($AddressFile, "a") or die("can't open file"); 

$date = new DateTime(); 
echo $date->format('Y-m-d H:i:sP') . "\n"; 

fwrite($ourFileHandle, $FirstName); 
fwrite($ourFileHandle, $LastName); 
fwrite($ourFileHandle, $Address); 
fwrite($ourFileHandle, $City); 
fwrite($ourFileHandle, $State); 
fwrite($ourFileHandle, $Zip); 
fwrite($ourFileHandle, $Tel); 
fclose($ourFileHandle); 
echo "<p>File has been writtten to successfully!</p>"; 

rename("C:/xampp/security/htdocs/testes/Address_Entries.txt", $FirstName); 
?> 

任何幫助表示讚賞。謝謝!

  • 一個
+0

您的文件日期時間戳的確切位置在哪裏? – 2012-07-13 21:08:39

+0

...以及如果將'/ boot.ini'放入FirstName字段會發生什麼情況? – DaveRandom 2012-07-13 21:09:44

+0

我通過$ date變量獲取它,但是我沒有能夠將它與rename()結合使用。回聲聲明在DateTime()的頁面上打印,但我很無能,我怎麼能得到這張郵票是我的文件名... – Beardo 2012-07-13 21:16:11

回答

0

如果你需要一個唯一的ID命名與文件,嘗試uniqid()

+0

這個工程就像在麪包上很棒。謝謝! – Beardo 2012-07-13 21:33:39

0

在Windows中,必須使用正確的路徑:

rename("C:\\xampp\\security\\htdocs\\testes\\Address_Entries.txt", "C:\\xampp\\security\\htdocs\\testes\\$FirstName.txt"); 
+0

正斜線在Windows上正常工作,除了命令提示符以外的任何地方。他們甚至可以在瀏覽器的地址欄中工作。 – DaveRandom 2012-07-13 21:13:24

0

這將重命名文件使用時間戳。但是,一個獨特的命名約定,這是一個很好的機會,是唯一的,但不是唯一的。如果有人要在同一時間發帖...以相同的名字...你會有重複的文件。

現在是一個很大的機會?第

<?php 
$file = '/tmp/this-is-temp-file.txt'; 
$firstName = 'BeepBeep'; 
$timestamp = time(); 
rename($file, '/path/to/new/file/'.$firstName.'-'.$timestamp.'.txt'); 
?> 

可能嘗試結合了uniqid()函數。我認爲它不再是唯一的,因爲它使用時間()(我認爲)...但可能會更好用填充唯一計數器(如數據庫中的ID)

此假定: a )您可以訪問完整路徑 b)PHP可以訪問文件!您可能能夠寫入文件,但可能沒有足夠的權限來移動,刪除,重命名,編輯..

+0

這不適用於Windows。 – 2012-07-13 21:12:58

+1

@PiotrOlaszewski它會...只是嘗試它。很明顯,路徑必須是有效的,但不需要驅動器盤符(如果缺少,則使用當前工作卷),正斜槓工作得很好。 – DaveRandom 2012-07-13 21:14:25

+0

感謝您的幫助,但我無法獲得時間戳。有趣的是,我能夠使uniqid()工作,但無法讓它改變名稱。我不斷收到此錯誤: – Beardo 2012-07-13 21:35:17

相關問題