将文本区域的内容保存到文件时,fwrite不会写入
问题描述:
我正在制作一个在线文本编辑器 - 对我自己的东西来说只是一个简单的文本编辑器。我试图编写代码将textarea的内容保存到一个文件中 - 首先将文件打开到textarea(它工作正常),然后我想保存编辑后的文本。写作不起作用。这里是重要的代码(我道歉的混乱,这是非常早期的天,我和PHP):将文本区域的内容保存到文件时,fwrite不会写入
<form method="post" action="<?php echo $_SERVER['$PHP_SELF'];?>">
<textarea rows="30" cols="80" name="textdata"><?=$contents?></textarea>
<br />
<?php
$newcontents = $_POST["textdata"];
$openedfile = fopen($filename, "r");
fwrite($openedfile, "hello");
?>
<input type="submit" name="save" value="Save Changes" />
</form>
我敢肯定这件事情令人尴尬的简单。
答
那是因为你在readonly
模式下使用r
标志打开文件:
$openedfile = fopen($filename, "r");
-------------------------------^
你应该使用r+
,w
或a
(追加)标志。
答
fopen($filename, "r");
是UED仅供阅读...
使用
fopen($filename, "r+");
答
你打开一个只读模式的文件句柄。
答
$openedfile = fopen($filename, "r");
您是只读方式打开文件,使用 r+
代替r
答
我建议你寻找到file_put_contents,因为它简化了所有的fwrite
,handle
和fclose
东西。通常使用这个功能非常容易。从文档中获取:
$file = $filename;
$text .= "Hello\n";
file_put_contents($file, $text);
我试着用下面的代码:'$ newcontents = $ _POST [“textdata”]; file_put_contents($ filename,$ newcontents);',可悲的是,它仍然不起作用。我知道$ newcontents包含文件的更新版本,并且$ filename在代码中早些时候用于'file_get_contents()'。它可能是一个权限问题?也许是 – lowercasename
。用http://php.net/manual/en/function.fileperms.php查看你的权限 –
目录和文件都是755,这听起来很正确。我发现它并不是说file_put_contents什么都不做 - 它将文件清理干净。它必须是在$ newcontents中的任何东西都会在textarea和函数之间丢失。 – lowercasename