Php保存表单输入到文本文件不起作用

时间:2017-12-27 23:19:14

标签: php html

编辑:我知道我已经正确安装了PHP,并且本地主机服务器正在通过MAMP正常运行。

我尝试创建一个待办事项列表,使用PHP将输入保存到txt文件,然后显示它。但是,我无法让它发挥作用。当我尝试添加" todo项目时,"它只是消失了。

第一个代码片段是添加todo项目的位置(index.html文件):



<div id="container">
  <h1>To-do List<i class="fa fa-plus" aria-hidden="true"></i></h1>
  <form action="index.php" method="post">
    <input name="addtodo" type="text" placeholder="Add New To-Do">
  </form>
  <ul>
    <li><span><i class="fa fa-trash"></i></span> Go to Potions Class</li>
  </ul>
</div>
&#13;
&#13;
&#13;

这是index.php文件,理想情况下,todo项应添加到文本文件中并显示。它没有做到。

&#13;
&#13;
<?php
        //define variables
        $addtodo = $_POST["addtodo"];
        $DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];
        $filename = $DOCUMENT_ROOT.'todo.txt';
                        
        //write
        $fp = fopen($filename, 'a');
        $outputLine = $addtodo;
        fwrite($fp, $outputLine);
        fclose($fp);
?>

  <div id="container">
    <h1>To-do List<i class="fa fa-plus" aria-hidden="true"></i></h1>
    <ul>
      <li><span><i class="fa fa-trash"></i></span> Go to Potions Class</li>
    </ul>

    <?php
                    $display = "";
                    //read 
                    $fp = fopen($filename, 'r');
                    
                    while (true) {
                        $line = fgets($fp);
                        
                        if (feof($fp)) {
                            break;
                        }                    
                    $display .= '<li><span><i class="fa fa-trash"></i></span>'.$line.'</li>';
                    }
                    fclose($fp);
                    echo $display;
                ?>
  </div>
  </body>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

我认为表单提交是由JavaScript事件触发的,对吗?

您是否尝试过打印$ filename var来检查它是否正确?我不确定是否&#39; $ _ SERVER [&#34; DOCUMENT_ROOT&#34;]&#39;总是给你一个&#39; /&#39;在路径的尽头。如果它没有,你应该有:/your/pathtodo.txt

另外,您可以检查todo.txt写入权限

答案 1 :(得分:0)

您的路径有问题,应该是:

 let ErrorDomain = "NotesErrorDomain"

 func err(_ code: ErrorCode,
         _ userInfo:[String: Any]? = nil) -> NSError {
    // Generate an NSError object, using ErrorDomain, and using whatever
    // value we were passed
    return NSError(domain: ErrorDomain,
               code: code.rawValue,
               userInfo: userInfo)
}

$filename = $DOCUMENT_ROOT. DIRECTORY_SEPARATOR .'todo.txt'; 是一个预定义的常量,它获取操作系统斜杠分隔符(无论是正斜杠还是反斜杠)Read more