我有这段代码显示特定文件的内容。我想添加一个提交按钮,单击该按钮可将更改保存到文件中。任何人都可以帮助我或提供一些我可以用来创建这个按钮的例子。我尝试了几个我在网上找到的例子,但可以让它工作。隐藏在$_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);
}
?>
代码在错误打开文件时停止
答案 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
。