Php error: "Filename cannot be empty"

Php error: "Filename cannot be empty"

我正在创建一个网站,让用户输入信息,然后使用 PHP read/write 将其保存到计算机上的文档中。除了出现两个错误外,一切正常。

错误是 "Undefined offset: 6 in C:\wamp\www\Phoenix\ReadWrite.php on line 109" 和“fopen():第 110 行的 C:\wamp\www\Phoenix\ReadWrite.php 中的文件名不能为空”。 这是代码:

<?php
$nameErr = $ssnErr = $dateErr = $timeErr = $fileErr ="";
$name = $ssn = $date = $time = $comment = $file = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
   if (empty($_POST["1"])) {
     $nameErr = "Name is required";
     $_POST['6'] = "";
   } else {
     $name = test_input($_POST["1"]);
   }

   if (empty($_POST["2"])) {
     $ssnErr = "SSN is required";
     $_POST['6'] = "";
   } else {
     $ssn = test_input($_POST["2"]);
   }

   if (empty($_POST["3"])) {
     $dateErr = "Date is required";
     $_POST['6'] = "";
   } else {
     $date = test_input($_POST["3"]);
   }

   if (empty($_POST["4"])) {
     $timeErr = "Time is required";
     $_POST['6'] = "";
   } else {
     $time = test_input($_POST["4"]);
   }

   if (empty($_POST["5"])) {
     $comment = "";
   } else {
     $comment = test_input($_POST["5"]);
   }

   if (empty($_POST["6"])) {
     $fileErr = "Filename is required";
   } else {
     $file = test_input($_POST["6"]);
   }
}

function test_input($data) {
   $data = trim($data);
   $data = stripslashes($data);
   $data = htmlspecialchars($data);
   return $data;
}
?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
<table width="500" border="0" cellspacing="5" cellpadding="0">
  <tr>
    <td scope="col">Name:</td>
    <td colspan="2" scope="col"><input type="text" name="1"></td>
    <td><span class="error"><?php echo $nameErr;?></span></td>
  </tr>
  <tr>
    <td>SSN:</td>
    <td colspan="2"><input type="text" name="2"></td>
    <td><span class="error"><?php echo $ssnErr;?></span></td>
  </tr>
  <tr>
    <td>Date:</td>
    <td colspan="2"><input type="text" name="3"></td>
    <td><span class="error"><?php echo $dateErr;?></span></td>
  </tr>
  <tr>
    <td>Time of Arrival:</td>
    <td colspan="2"><input type="text" name="4"></td>
    <td><span class="error"><?php echo $timeErr;?></span></td>
  </tr>
  <tr>
    <td>Comment:</td>
    <td colspan="2"><textarea rows="7" cols="30" name="5"></textarea></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Filename:</td>
    <td colspan="2"><input type="text" name="6"></td>
    <td><span class="error"><?php echo $fileErr;?></span></td>
  </tr>
  <tr>
    <td></td>
    <td><input type="submit" name="submit" value="Submit"> </td>
    <td><input type="reset" name="reset" value="Reset" ></td>
    <td>&nbsp;</td>
  </tr>  
</table>
</form>

<?php
$file = $_POST['6'];
$myfile = fopen($file, "a") or die("Unable to open file!");
$one = "\r\n" . $_POST['1'] . "\r\n";
fwrite($myfile, $one);
$two = $_POST['2'] . "\r\n";
fwrite($myfile, $two);
$three =$_POST['3'] . "\r\n";
fwrite($myfile, $three);
$four =$_POST['4'] . "\r\n";
fwrite($myfile, $four);
$five = $_POST['5'] . "\r\n";
fwrite($myfile, $five);
fclose($myfile);
?>

我的问题是:如何解决表单中空白字段的问题?

在发送表单之前,您尝试使用 $_POST

<?php

if (!empty($_POST['6'])) {
    $file = $_POST['6'];
    $myfile = fopen($file, "a") or die("Unable to open file!");
    $one = "\r\n" . $_POST['1'] . "\r\n";
    fwrite($myfile, $one);
    $two = $_POST['2'] . "\r\n";
    fwrite($myfile, $two);
    $three =$_POST['3'] . "\r\n";
    fwrite($myfile, $three);
    $four =$_POST['4'] . "\r\n";
    fwrite($myfile, $four);
    $five = $_POST['5'] . "\r\n";
    fwrite($myfile, $five);
    fclose($myfile);
}

?>

更好的方法是创建全部内容,然后将其放入文件。

<?php

if (!empty($_POST['6'])) {
    $file = $_POST['6'];
    $myfile = fopen($file, "a");

    $content = "\r\n" . $_POST['1'] . "\r\n" . 
                        $_POST['2'] . "\r\n" . 
                        $_POST['3'] . "\r\n" . 
                        $_POST['4'] . "\r\n" . 
                        $_POST['5'] . "\r\n";

    fwrite($myfile, $content);
    fclose($myfile);
}

?>