0

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

任何帮助表示赞赏。谢谢!

  • 一个
4

3 回答 3

0

如果您需要一个唯一的 ID 来命名文件,请尝试uniqid()

于 2012-07-13T21:07:54.610 回答
0

在 Windows 中,您必须使用正确的路径:

rename("C:\\xampp\\security\\htdocs\\testes\\Address_Entries.txt", "C:\\xampp\\security\\htdocs\\testes\\$FirstName.txt");
于 2012-07-13T21:11:16.860 回答
0

这将使用时间戳重命名文件。但是一个独特的命名约定,这很有可能是唯一的,但不是唯一的。如果有人要在同一时间发帖……名字相同……你会有重复的文件。

现在机会大吗?不。

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

可能尝试合并一个 uniqid() 函数。我认为它不再是唯一的,因为它使用 time() (我认为)......但最好用唯一的计数器填充它(比如数据库中的 ID)

这假设:a)您可以访问完整路径 b)PHP 可以访问该文件!您可能能够写入文件,但可能没有足够的权限来移动、删除、重命名、编辑..

于 2012-07-13T21:12:28.137 回答