fwrite 不要覆盖我的.txt

fwrite do not overwrite my .txt

我有一个按钮,我希望当我按下它时,它会在文本文件上写入它的状态,然后按钮会改变它的值,就像拨动开关一样。

<button type="button"><?php echo $button ?></button>

我的问题是,一旦按下它,文本文件中的第一个值不会被下一个值覆盖。都写了。

我应该在文本文件中有这个:ONOFF 但我得到这个 ONOFFOFFON.

<?php
$file = fopen('state.txt', 'r+');
$state = fread($file, '3');

if ($state == 'ON') {
    $button = 'OFF';
    fwrite($file, 'OFF');
} elseif ($state == 'OFF') {
    $button = 'ON';
    fwrite($file, 'ON');
} else {
    $button = 'error';
}

fclose($file);
?>

此外,我希望我的 php 和我的 html 代码在同一页面上。

谢谢。

您打开了 r/w 的文件,然后从中读取。

"pointer"在最后一个字符;下一次写入发生在指针所在的位置,您会附加数据。

2个选项: 读取后关闭文件,重新打开写入

或使用fseek($file,0)将指针移回开头。