2012-07-13 43 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

相关问题