我已经使用此功能编写了一些非常复杂的 PHP 应用程序,所以我不确定这里发生了什么。
我目前正在编写一个使用在线历史记录来保存内容的应用程序(通过 ajax get)。我编写的将用户历史存储到文件的 API 非常简单:
$myFile = "./snhistory/".$_GET["uid"];
$stringData = urldecode($_GET["name"])."\n";
$file = fopen($myFile,"a");
fwrite($file,$stringData);
fclose($file);
name
这看起来像是将找到的数据加上一个新行添加到文件末尾的那种代码,对吧?好吧,这不是 PHP 所看到的。它添加了一个名称,然后当我使用不同的名称运行代码时,它会覆盖第一个名称,并且只出现第二个名称。我已经尝试了我能想到的任何东西:
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有问题还是我在这里遗漏了什么?我觉得如果代码中有问题,我尝试的第二件事就会解决它。但我不确定,这就是为什么我要在这里问每个人。
我真的很感激可以提供的任何帮助。
编辑:根据答案,字符串的问题在于它们包含标点符号,'
并且由于某种原因,url 编码和转义不起作用。阅读答案的编辑以获取最终答案。