帮助在PHP中同时写入两个文件


Help writing to two files simultaneously in PHP?

在下面的脚本中,我尝试在两个文件中同时写入,但没有执行。我该怎么做呢?

$filename1 = "guestbook.doc" ;
$filename2 = "cour.doc" ;
$name = htmlspecialchars($_POST['name']);
$email = htmlspecialchars($_POST['email']);
$message = stripslashes(nl2br(htmlentities($_POST['message'])));
$d = date ( "d/m/Y H:i:s" )
$handle1 = fopen($filename1, "w+");
$handle2 = fopen($filename2, "a+");
if ($handle1 && $handle2) {
    fwrite($handle1, "<b>$name</b> "." - $d<br>$message<br><hr>'n");
    fwrite($handle2, "<b>$name</b> ".$email." - $d<br>$message<br>'n");
}
if ($handle1) {
    fclose($handle1);
}
if ($handle2) {
    fclose($handle2);
}
then
{
header('Location: contact.php?' . http_build_query($_POST));
}
?>

我注意到有点奇怪的是:

then
{
header('Location: contact.php?' . http_build_query($_POST));
}

then不是一个有效的控制结构。是if/elseif/else

在PHP中写入文件是过程性的,它将等待handle1被写入,然后再移动到handle2。它不会同时写它们。一定是发生了错误,或者没有进入if语句if($handle1 && $handle2)。由于权限问题,可能无法打开这些文件进行写入?有任何错误吗?

试着用这样的东西替换if语句,看看它是否坏了?

if (is_writable($filename1) or die ("Can not write to ".$filename1)) {
  fwrite($handle1, "<b>$name</b> "." - $d<br>$message<br><hr>'n");
}
if (is_writable($filename2) or die ("Can not write to ".$filename2)) {
  fwrite($handle2, "<b>$name</b> "." - $d<br>$message<br><hr>'n");
}

把一个写在另一个下面就可以了。

<?php
$filename = "guestbook.doc" ;
$name = htmlspecialchars($_POST['name']);
$email = htmlspecialchars($_POST['email']);
$message = stripslashes(nl2br(htmlentities($_POST['message'])));
$d = date ( "d/m/Y H:i:s" )
$handle1 = fopen($filename, "w+");
$size = filesize($filename);
fwrite($handle, "<b>$name</b> "." - $d<br>$message<br><hr>'n");
$text = fread($handle, $size);
fclose($handle);
$filename = "cour.doc" ;
$name = htmlspecialchars($_POST['name']);
$email = htmlspecialchars($_POST['email']);
$message = stripslashes(nl2br(htmlentities($_POST['message'])));
$d = date ( "d/m/Y H:i:s" )
$handle = fopen($filename1, "w+");
$size = filesize($filename1);
fwrite($handle, "<b>$name</b> ".$email." - $d<br>$message<br>'n");
$text = fread($handle, $size);
fclose($handle);
?>