如何在php中重命名带有日期戳的文本文件?

如何在php中重命名带有日期戳的文本文件?,php,Php,我对php和编程都是新手,所以请原谅我对这一点的无知。我正试图重命名一个我用日期戳创建的文本文件,但似乎无法正确执行。在有人提交数据后,我将信息写入文本文件,这是可行的,但我需要使每个文本文件都是唯一的,所以我需要一个唯一的命名约定。我甚至试着使用条目的名字,但我也无法让它起作用。以下是我目前掌握的情况: <?php $FirstName = $_POST["fname"].PHP_EOL; $LastName = $_POST["lname"].PHP_EOL; $Address = $

我对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);
?>

感谢您的帮助。谢谢

  • A

如果您需要一个唯一的ID来命名文件,请尝试在windows中使用正确的路径:

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

这将使用时间戳重命名文件。但一个独特的命名惯例,这有很大的机会是独一无二的,但不是独一无二的。如果有人同时发帖。。。用相同的名字。。。你会有重复的文件

现在这是一个很大的机会吗?没有

<?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可以访问该文件!您可能可以写入文件,但可能没有足够的权限移动、删除、重命名、编辑..

您的文件日期时间戳到底在哪里?…如果我将
/boot.ini
放入FirstName字段,会发生什么情况?我通过$date变量获得它,但我无法将其与rename()结合使用。echo语句打印在DateTime()的页面上,但我不知道如何将该戳记作为我的文件名……正向斜杠在Windows上工作良好,除了命令提示符之外,几乎任何地方都可以。它们甚至可以在explorer的地址栏中工作。@PiotrOlaszewski它将。。。试试看。显然,路径必须有效,但驱动器号不是必需的(如果丢失,请使用当前工作卷),正斜杠工作正常。感谢所有人的帮助,但我无法获得时间戳。有趣的是,我能够让uniqid()工作,但无法让它更改名称。我一直收到以下错误:警告:重命名(C:/xampp/security/htdocs/testes/Address_Entries.txt,asd)[function.rename]:文件名、目录名或卷标语法不正确。(代码:123)在C:\xampp\security\htdocs\testes\Saved_Record.php的第87行重命名(C:/xampp/security/htdocs/testes/Address_Entries.txt,asd)是您的问题。首先,我认为警告应该用引号显示完整路径。确保它是:rename(“C:/xampp/security/htdocs/testes/Address_Entries.txt”,”)另一个向我提出标志的方面是,asd)部分。如果我没有弄错的话,它应该显示变量的值。确保该变量实际上是一个变量。@CrazyVipa,asd实际上是我在测试字段中键入的文本,所以它确实抓住了该部分,只是没有重命名文本文件。这是它正在使用的变量:$FirstName=$\u POST[“fname”].PHP\u EOL;