0

早上好,朋友。我一直在努力和谷歌搜索,我似乎无法找到答案。如果它已经在这里得到了回答而我错过了,请随时指导我错过了什么。

我有以下一些 PHP 代码。当我在我的 Mac(以及一些朋友的非 Windows 机器)上运行它时,它运行良好,但是当我在 Windows 上运行它(它将在这里工作)时,它会将每一行写入文本文件两次。在这里工作的 PHP 是在 IIS 6 上运行的 5.3.6。

任何帮助是极大的赞赏。

<?php

$fltSupervision = trim(htmlentities($_POST["txtSupervision"]));
$fltDrugTestUA = trim(htmlentities($_POST["txtDrugTestUA"]));
$fltAlcoholSensor = trim(htmlentities($_POST["txtAlcoholSensor"]));
$fltTotal = trim(htmlentities($_POST["txtTotal"]));
$fltSurcharge = trim(htmlentities($_POST["txtSurcharge"]));

$strTransaction = $fltSupervision . "\t" . $fltDrugTestUA . "\t" . $fltAlcoholSensor . "\t" . $fltSurcharge . "\t" . $fltTotal . PHP_EOL;
echo $strTransaction;

$file = 'fees.txt';
file_put_contents($file, $strTransaction, FILE_APPEND);

?>

杰里米

4

5 回答 5

5

它可能与丢失的 favicon.ico 有关。

尝试将 .htaccess 更改为此:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php [NC,L]

并尝试通过创建一个将其重命名为 favicon.ico 的空 .txt 文件来创建一个 favicon.ico 文件。

许多浏览器会查找 favicon.ico 文件,如果该文件不存在并且您的 .htaccess 文件设置为指向您的脚本,则该脚本将执行两次,文本将两次添加到 fee.txt 中。

于 2013-10-24T13:48:33.757 回答
0

我在我的服务器上测试了你的代码,它检查出来了。可能还有其他原因导致这种情况(如果是这种情况),也许是您的表单本身。如果您重新加载页面两次,那么是的,它将保存两次,因为FILE_APPEND

您是否可能不小心按了两次提交按钮?只是检查可能性。如果您不希望它附加,请取出, FILE_APPEND

于 2013-10-24T14:09:23.793 回答
0

这只有在您刷新页面时才有可能。您当前的代码会将您的内容附加到 fee.txt 文件中。

于 2013-10-24T13:54:11.440 回答
0

看起来 PHP_EOL 可能是抛出你的文本编辑器的东西。如果 PHP_EOL 被定义为 "\r\n" 这可能会在文本文件的行之间产生一个空格。

尝试将您自己的行尾字符设置为“\n”,看看是否可以解决它。

$strTransaction = $fltSupervision . "\t" . $fltDrugTestUA . "\t" . $fltAlcoholSensor . "\t" . $fltSurcharge . "\t" . $fltTotal . "\n";
于 2013-10-24T13:57:34.750 回答
0

答案最终变得非常奇怪。经过大量测试,我发现只有当我在工作中使用 Windows 机器从工作中的 Windows 服务器加载脚本时才会发生这种情况。如果客户端计算机不在我们的公司网络上,它会按预期运行。由于奇怪的网络行为可能远远超出了原始帖子的范围,让我们以此为答案。当我遵循 Casper 的建议并在我的 Windows 服务器上从命令行运行脚本时,我开始理解这一点。

谢谢大家给我的想法,帮助我学习更多。祝你有美好的一天。

于 2013-10-28T02:52:10.283 回答