0

PHP

<?php
if ($changefile) {
    $savedEdit = stripslashes($_POST['filetest']);
    $filetochange = "../dashboard/list.ini";
    $filetochangeOpen = fopen($filetochange,"w") or die ("Error editing.");
    fputs($filetochangeOpen,$savedEdit);
    fclose($filetochangeOpen) or die ("Error Closing File!");
}
?>

HTML 表单

<form method=post action="mmtst.php">   
    <textarea rows="40" cols="60" name="filetest">
    <?
        // Implode CSS
        $filetochange = "../dashboard/list.ini";
        print (implode("",file($filetochange)));
    ?>
    </textarea><br/><br/>
    <input type="submit" value="Save Changes" name="changefile">
</form>

在这里,我有一个在文本框中显示 INI 文件的页面。应该发生的是,当我单击提交按钮时,原始文件被打开,并且 fputs 使用 txtbox 中显示的任何内容写入原始文件。(原始文件设置为权限 777)。但是,单击提交按钮时没有任何反应,我不知道我做错了什么,任何建议都会很棒。

4

2 回答 2

1

您正在检查一个

if ($changefile) {

您需要检查变量的 $_POST 版本,就像检查“filetest”变量一样,因此您应该例如...

if (isset($_POST["changefile"])) {

否则条件永远不会返回 true,并且代码块不会被执行

于 2012-12-17T19:38:32.733 回答
1

问题很简单,您禁用了register_globals并且您正在尝试使用它,此设置允许 PHP 根据从 GET 和 POST 数据接收到的参数自动定义变量,但它被认为是不安全的并且已被弃用

要访问帖子中传递的值以使用$_POST变量,获取使用$_GET

if( isset( $_POST["changefile"] ) ) {

如果您只想检查是否提交了一个帖子表单,您可以!empty($_POST)留下没有名称的提交按钮:

<?php //...
if( !empty($_POST) ) {
//...
?>
<input type="submit" value="Save Changes">
于 2012-12-17T19:43:52.493 回答