1

我有这段代码显示特定文件的内容。我想添加一个提交按钮,单击该按钮会将更改保存到文件中。谁能帮助我或举一些我可以用来创建此按钮的示例。我已经尝试了几个我在网上找到的例子,但可以让它工作。是隐藏在某处的解决方案$_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);


    }

    ?>

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

4

2 回答 2

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!"); 
?>
于 2013-05-17T06:42:27.803 回答
0

您不能使用一个提交按钮提交多个表单。您必须<form>在循环之外回显标签,以便只创建一个表单。

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

最后,请注意,除非您确定文件中的文本不包含 < 和 > 之类的字符,否则到目前为止您所拥有的内容可能会带来 HTML 注入风险(在显示页面时)。为了缓解这种情况,您可以htmlentities在将文本回显到输入时使用。

于 2013-05-17T07:18:29.257 回答