我认为使用fwrite
创建基于纪元的文件将是获得一些仍然有用的独特文件名的简洁方法。不幸。每次我的脚本运行时,我最终得到2个文件,一个空白,一个带有数据。每次提交表单时,如何让php每次只写一个文件?
$t=time();
$dir = "tmp/";
$LogName = $t . ".txt";
$dicz = $dir.$LogName;
$bunny = fopen( $dicz, 'w' ) or die('Cannot open file: '.$dicz);
if( $bunny == false )
{
echo ( "Error in opening new file" );
exit();
}
fwrite ($bunny, "FN:" .$FN .",TL:" . $TL .",EMAIL:". $EM ."\n");
答案 0 :(得分:0)
我以前遇到过这个问题,今天又实际上有了这个问题。我发现大多数情况下,当网站缺少favicon.ico
时,问题就出现了。我知道这听起来很奇怪,但浏览器会在你不知情的情况下发出两个请求,导致这种行为。这在Chrome中尤为普遍。
将空白favicon.ico
添加到网站的根目录应立即修复。
您可以生成图标here。
答案 1 :(得分:0)
好的,这是你的代码:
$t=time();
$dir = "tmp/";
$LogName = $t . ".txt";
$dicz = $dir.$LogName;
$bunny = fopen( $dicz, 'w' ) or die('Cannot open file: '.$dicz);
if( $bunny == false )
{
echo ( "Error in opening new file" );
exit();
}
fwrite ($bunny, "FN:" .$FN .",TL:" . $TL .",EMAIL:". $EM ."\n");
现在让我们关注这两行:
$bunny = fopen( $dicz, 'w' ) or die('Cannot open file: '.$dicz);
if( $bunny == false )
如果$bunny
附加了false
,fopen
什么时候or die()
等于$bunny = fopen( $dicz, 'w' );
if( $bunny == false )
{
echo ( "Error in opening new file" );
exit();
}
else {
fwrite ($bunny, "FN:" .$FN .",TL:" . $TL .",EMAIL:". $EM ."\n");
}
?
也许你应该这样试试:
!file_exists()
或者只是使用否定file_exists
- (又名$t=time();
$dir = "tmp/";
$LogName = $t . ".txt";
$dicz = $dir.$LogName;
if (!file_exists($dicz)) {
$bunny = fopen( $dicz, 'w' );
if( $bunny == false )
{
echo ( "Error in opening new file" );
exit();
}
else {
fwrite ($bunny, "FN:" .$FN .",TL:" . $TL .",EMAIL:". $EM ."\n");
}
}
) - 来检查文件是否存在:
{{1}}
这样,如果文件肯定不存在,脚本将只写入文件。
答案 2 :(得分:0)
我遇到了由javascript引起的同样问题。页面加载了两次,fopen接收了两个不同的文件名作为参数。请参阅AD7six对原始邮件的评论。