この機能を使用してかなり複雑な PHP アプリをいくつか作成したことがあるので、ここで何が起こっているのかわかりません。
現在、オンライン履歴を使用してコンテンツを保存するアプリを作成しています (ajax get 経由)。ユーザーの履歴をファイルに保存するために私が作成した API は、非常に単純です。
$myFile = "./snhistory/".$_GET["uid"];
$stringData = urldecode($_GET["name"])."\n";
$file = fopen($myFile,"a");
fwrite($file,$stringData);
fclose($file);
name
これは、 で見つかったデータと新しい行をファイルの末尾に追加するようなコードのように見えますよね? まあ、それはPHPの見方ではありません。1 つの名前を追加し、別の名前でコードを実行すると、最初の名前が上書きされ、2 番目の名前だけが表示されます。考えられることは何でも試しました:
file_put_contents($myFile,file_get_contents($myFile).$stringData);
と
file_put_contents($myFile,$stringData,FILE_APPEND);
と
fopen($myFile,"w");
fseek($file,0,SEEK_END);
そして、すべてが同じ動作を生成します。PHPに何か問題がありますか、それともここに何か欠けていますか? コードに問題があった場合は、2 番目に試したことで修正されていたような気がします。しかし、よくわからないので、ここでみんなに尋ねています。
提供できる助けがあれば、本当に感謝しています。
編集:答えによると、文字列の問題は、文字列に句読点が含まれて'
おり、何らかの理由で、URL のエンコードとエスケープが機能しないことでした。最終的な回答については、回答の編集をお読みください。