未从textarea传递PHP$\u POST

未从textarea传递PHP$\u POST,php,post,textarea,Php,Post,Textarea,我使用下面的脚本来请求密码,然后询问用户是否要编辑页面。单击页面在“”中将其打开,然后“保存”按钮应再次将文本区域的内容发送到脚本以供编写。(我知道这不是最安全的身份验证方法,如果没有SQL也能做到这一点,我很想听听。) 问题是文本区域的内容没有传递给updateFile()函数 <? session_start(); $pass = 'generic_password'; $login ='<form action="?page=admin" method="post">

我使用下面的脚本来请求密码,然后询问用户是否要编辑页面。单击页面在“
”中将其打开,然后“保存”按钮应再次将文本区域的内容发送到脚本以供编写。(我知道这不是最安全的身份验证方法,如果没有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";

?>

函数中不传递任何内容。我怀疑你怎么能打开这个文件

有名为
文件
元素在
$\u POST

if(isset($_POST['submit'])){
    updateFile($_POST['file']);
}

也许你在这里错了:

if(isset($_POST['submit'])){
  updateFile($_POST['file']);
}
在这里,您将删除一个输入文件。如果表单中不存在任何此类字段,则只有具有此类名称的锚定标记存在,并且$\u POST无法带走锚定标记中的数据。因此,最好分别为文件名保留一个字段,如

希望这有帮助。


<input name="submit" value="Save" type="submit" />

上述内容从未转换为
$\u POST['submit']

var\u dump($\u POST)是什么意思?索引“区域”已设置,但是否为空?您将右括号与嵌套块放在同一级别的习惯是该死的awful@Shrapnel,您建议我如何安排大括号?与开始块的级别相同。首先,将身份验证与其余部分分开。让它独立的脚本,使它工作。然后制作文件保存脚本。让它发挥作用。分别地然后仅在(!empty($\u SESSION['authed'])的情况下添加
检查