文件不是用 PHP 创建的?

我用 PHP 编写了这段代码,因为我想练习文件处理。


<html>

  <head>

    <title>PHP Test</title>

  </head>

  <body>

    <form action = "index.php" method = "get">

    Do you want to make a new file (NF), edit a file (EF), or delete a file (DF)?

    <input type = "text" name = "FileHandling">

    <input type = "submit">

    <br/>

    </form>

    <?php

      $FileCommand = $_GET['FileHandling'];

      if($FileCommand == 'NF') {

        echo "<form action = 'index.php' method = 'get'><br/>";

        echo "What is the new file's name?<br/>";

        echo "<input type = 'text' name = 'CreateFile' method = 'get'><br/>";

        echo "<input type = 'submit'><br/>";

        $FileName = $_GET['CreateFile'];

        echo $FileName;

        if(null !== $FileName) {

          echo $FileName;

          echo "yes";

          $CreateTheFile = fopen($FileName, 'w');

        } else {

          echo "No file name chosen. ";

        }

      }

    ?>

  </body>

</html>

但是,在您选择“NF”并输入文件名后出现问题。该文件不会被创建:


echo $FileName;

if(null !== $FileName) {

  echo $FileName;

  echo "yes";

  $CreateTheFile = fopen($FileName, 'w');

}


慕容3067478
浏览 106回答 3
3回答

www说

您处理输入和表单的方式存在错误。目前,您正在检查$FileCommand == 'NF',这在第一次提交表单时为真。但是随后页面重新加载,您将获得带有新输入的第二个表单。所以当你填写第二个表格并重新提交时,现在<input name='FileHandling' />没有提交,因为它不是这个表格的一部分(它是第一个表格的一部分)。因此,如果您将 PHP 更改为以下内容,则将尝试创建文件 if $FileName !== null(无论 的值如何$FileCommand)而不是您之前的逻辑也需要$FileCommand == 'NF'. 这将创建文件的逻辑移到了第一个if.<?php&nbsp; &nbsp; $FileCommand = $_GET['FileHandling'];&nbsp; &nbsp; if ($FileCommand == 'NF') {&nbsp; &nbsp; &nbsp; &nbsp; echo "<form action='index.php' method='get'><br/>";&nbsp; &nbsp; &nbsp; &nbsp; echo "What is the new file's name?<br/>";&nbsp; &nbsp; &nbsp; &nbsp; echo "<input type='text' name = 'CreateFile'><br/>";&nbsp; &nbsp; &nbsp; &nbsp; echo "<input type='submit'><br/>";&nbsp; &nbsp; &nbsp; &nbsp; echo "</form>";&nbsp; &nbsp; }&nbsp; &nbsp; $FileName = $_GET['CreateFile'];&nbsp; &nbsp; if (null !== $FileName) {&nbsp; &nbsp; &nbsp; echo $FileName;&nbsp; &nbsp; &nbsp; echo "yes";&nbsp; &nbsp; &nbsp; $CreateTheFile = fopen($FileName, 'w');&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; echo "No file name chosen. ";&nbsp; &nbsp; }?>处理这个问题的另一种方法是只创建一个单独的字段而不是一个完全单独的表单。<html>&nbsp; <body>&nbsp; &nbsp; <form action="index.php" method="get">&nbsp; &nbsp; &nbsp; &nbsp; Do you want to make a new file (NF), edit a file (EF), or delete a file (DF)?&nbsp; &nbsp; &nbsp; &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; <input type="text" name="FileHandling" />&nbsp; &nbsp; &nbsp; &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; <?php&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $FileCommand = @$_GET['FileHandling'];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if($FileCommand == 'NF') {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo "What is the new file's name?<br/>";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo "<input type='text' name = 'CreateFile' /><br/>";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; ?>&nbsp; &nbsp; &nbsp; &nbsp; <input type="submit">&nbsp; &nbsp; </form>&nbsp; &nbsp; <?php&nbsp; &nbsp; &nbsp; &nbsp; $FileName = $_GET['CreateFile'];&nbsp; &nbsp; &nbsp; &nbsp; if(null !== $FileName) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo $FileName;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo "yes";&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $CreateTheFile = fopen($FileName, 'w');&nbsp; &nbsp; &nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo "No file name chosen. ";&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; ?>&nbsp; </body></html>

qq_花开花谢_0

当您创建新表单时,由于页面重新加载而阻止请求。这是解决您的问题的工作代码。<form method="get" action="index.php">&nbsp; <input type="text" name="filehandling">&nbsp; <input type="submit" name="createfile"></form><?php&nbsp; &nbsp; if ( isset($_GET['createfile']) ) {&nbsp; &nbsp; &nbsp; &nbsp; $fh = $_GET['filehandling'];&nbsp; &nbsp; &nbsp; &nbsp; if ($fh == 'NF') {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo '&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <form method="get">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <input type="text" name="filename">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <input type="submit" name="createnewfile">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </form>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ';&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; if ( isset($_GET['createnewfile']) ) {&nbsp; &nbsp; &nbsp; &nbsp; $filename = $_GET['filename'];&nbsp; &nbsp; &nbsp; &nbsp; $f = fopen($filename, "w");&nbsp; &nbsp; &nbsp; &nbsp; fclose($f);&nbsp; &nbsp; }?>

慕桂英4014372

尝试使用is_null()PHP 函数来获得想要的结果将您的代码更改为if(!is_null($FileName)) {&nbsp; echo $FileName;&nbsp; echo "yes";&nbsp; $CreateTheFile = fopen($FileName, 'w');}
打开App,查看更多内容
随时随地看视频慕课网APP