我有以下脚本要求输入密码,然后询问用户是否要编辑页面。点击页面在“<textarea>
”中打开它,然后保存按钮应该再次将文本区域的内容发送到脚本进行写入。 (我知道这不是最安全的身份验证方式,如果有任何方法可以在没有SQL的情况下执行此操作,我希望听到它。)
问题是文本区域的内容没有传递给updateFile()函数。
<?
session_start();
$pass = 'generic_password';
$login ='<form action="?page=admin" method="post">
Password: <input type="password" name="pass" />
<input type="submit" />
</form>';
function updateFile($file){
$area=$_POST['area'];
$fd=fopen($file,"w");
fwrite($fd,$area);
fclose($fd);
echo $file.' has been saved';
}
if (!isset($_POST['pass']) && $_SESSION['authed'] == false){
echo $login;
$_SESSION['authed'] = false;
}
elseif ($_POST['pass'] == $pass || $_SESSION['authed'] == true){
$_SESSION['authed'] = true;
if(isset($_POST['submit'])){
updateFile($_POST['file']);
}
echo "Select a page to edit<br/>";
echo "<ul>";
foreach (glob("{*.html,*.css}",GLOB_BRACE) as $x){
echo "<li> <a href=\"?page=admin&edit=$x\">$x </a></li>";
}
echo "</ul>";
if (isset($_GET['edit'])){
echo '<script type="text/javascript" src="nicEdit.js"></script>
<script type="text/javascript">
bkLib.onDomLoaded(function() { nicEditors.allTextAreas() });
</script> ';
echo '<form method="post" action="?page=admin">You are editing: <a name="file">'.$_GET['edit'].'</a> <textarea name="area" style="width:920px;">';
include $_GET['edit'];
echo '</textarea>
<input name="submit" value="Save" type="submit" />
</form>';
}
}
else
echo "something went wrong";
?>
答案 0 :(得分:1)
<input name="submit" value="Save" type="submit" />
以上从未转换为$_POST['submit']
答案 1 :(得分:0)
updateFile
函数中没有传递任何内容。我怀疑你是如何打开文件的
名为<a>
的{{1}}元素在file
$_POST
答案 2 :(得分:0)
可能你错了:
if(isset($_POST['submit'])){
updateFile($_POST['file']);
}
这里你拿走了一个输入文件。在你的表单中没有任何这样的字段存在,只有一个锚标签有这样的名称和$ _POST不能带走锚标签内的数据。因此,最好保留一个文件名字段,如
希望这有帮助。