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

これにより、タイムスタンプを使用してファイルの名前が変更されます。しかし、ユニークな命名規則です。これはユニークである可能性が高いですが、ユニークではありません。誰かが同じ時間に同じ名前で投稿すると、ファイルが重複します。

今が大チャンス?いいえ。

<?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) FULL PATH にアクセスできること b) PHP がファイルにアクセスできること! ファイルに書き込むことはできるかもしれませんが、移動、削除、名前変更、編集するための十分な権限がない可能性があります..

于 2012-07-13T21:12:28.137 に答える
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 に答える