PHP错误: "Filename cannot be empty"

标签 php validation

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

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

<?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);
}

?>

关于PHP错误: "Filename cannot be empty",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28583309/

相关文章:

php - 验证用户在 php 中输入的数据

javascript - HTML5 中的表单验证不起作用

javascript - 在特定文件夹上禁用 Eclipse Javascript Validator

c# - App.config 验证

winforms - 如何在 C#.net winforms 中验证文本框

javascript - 如何隐藏轮播中单个图像的下一个和上一个按钮?

php - 如何确保 CONSTANTS 始终被设置

php - Laravel 5.8 中处理 post 和 get 方法

php - 在 CodeIgniter 中将数组与 Calendar 类一起使用

php - 根据支付网关和国家/地区对 WooCommerce 海关费用征税