使用提交按钮保存到文本文件

时间:2013-05-17 06:31:20

标签: php button submit fwrite

我有这段代码显示特定文件的内容。我想添加一个提交按钮,单击该按钮可将更改保存到文件中。任何人都可以帮助我或提供一些我可以用来创建这个按钮的例子。我尝试了几个我在网上找到的例子,但可以让它工作。隐藏在$_POST某处的解决方案。她是代码。

<?php
$relPath = 'test_file_1.php';
$fileHandle = fopen($relPath, 'r') or die("Failed to open file $relPath go and make me a sandwich! "); ;

while(!feof($fileHandle)){
    $line = fgets($fileHandle);
    $lineArr = explode('=', $line);

    if (count($lineArr) !=2){

       continue;
    }
    $part1 = trim($lineArr[0]);
    $part2 = trim($lineArr[1]);
    $simbols = array("$", "[", "]", "'", ";");

  //echo "<pre>$part1 $part2</pre>";
    echo '<form>
            <pre><input type="text" name="content_prt1" size="50" value="' .str_replace($simbols, "",$part1).'"> <input type="text" name="content_prt2" size="50" value="' .str_replace($simbols, "",$part2).'"></pre>         
          <form />';
    }
  echo '<input type="submit" value="Submit">';
  fclose($fileHandle) or die ("Error closing file!");
?>

修改的 updatefile.php的代码

<?php


    if(isset($_REQUEST['submit1'])){
        $handle = fopen("test_file_1.php", "a") or die ("Error opening file!");;
        $file_contents = $_REQUEST["content_prt1" . "content_prt1"];
        fwrite($handle, $file_contents);
        fclose($handle);


    }

    ?>

代码在错误打开文件时停止

2 个答案:

答案 0 :(得分:1)

如果您查看纯粹提交的观点,请将提交按钮放在<form>标记内 此外,结束form代码必须为form。我引用的updatefile.php是您将输入框类型文本发布到的文件,它将更新数据库字段的文件。请记住在再次写入文件之前关闭该文件。希望这会有所帮助。

    <?php 
    $relPath = 'test_file_1.php'; 
    $fileHandle = fopen($relPath, 'r') or die("Failed to open file $relPath go and make me a sandwich! ");

    echo '<form action="updatefile.php" method="POST">';

    while(!feof($fileHandle))
    {
        $line = fgets($fileHandle);
        $lineArr = explode('=', $line);

        if (count($lineArr) !=2){

           continue;
        }

        $part1 = trim($lineArr[0]);
        $part2 = trim($lineArr[1]);
        $vowels = array("$", "[", "]", "'", ";");


            echo '<pre><input type="text" name="content_prt1" size="50" value="' .str_replace($vowels, "",$part1).'"> 
                    <input type="text" name="content_prt2" size="50" value="' .str_replace($vowels, "",$part2).'"> 

            </pre>';         

     }   

     echo '<input type="submit" value="Submit">';
     echo '<form>';

     fclose($fileHandle) or die ("Error closing file!"); 
?>

答案 1 :(得分:0)

您无法使用单个提交按钮提交多个表单。您必须回显循环外的<form>标记,以便只创建一个表单。

另一个问题是您有多个命名相同的输入,因此$_POST将仅包含每个名称的最后一个输入的值。您可能需要将[]附加到输入的名称,例如name="content_prt1[]"。这样,PHP将在$_POST['content_prt1']中创建这些输入值的数组。

最后,请注意,除非您确定文件中出现的文字不包含&lt;和&gt;。为了缓解这种情况,您可以在将文本回显到输入中时使用htmlentities