这是我的代码:
<?php
extract ($_POST);
$fh = fopen ("./s.txt", "a");
echo file_get_contents( "./s.txt" );
if(($line = fgets($fh)) !== false) {}
echo($line);
file_put_contents("./signup.txt", "");
if($line!=false && $line!='') {
echo '<script language="javascript">';echo 'alert($line)';echo '</script>';
fwrite ($fh, "$line \n");
$n = $line;
}
else {
fwrite ($fh, "$_POST[n] \n");
$n = $_POST[n];
}
fclose ($fh);
$script = $_SERVER['PHP_SELF'];
print <<<TOP
<html>
<body>
<form method = "post" action = "$script">
<table border = "1">
<tr>
<td> Name</td>
<td> <input type = "text" value = "$n" name = "n" size = "30" /></td>
</tr>
TOP;
print <<<BOTTOM
<tr><td><input type = "submit" name = "order" value = "Submit Order" /></td></tr>
</table></form></body></html>
BOTTOM;
?>
基本上,这有一个人可以进入的入口点,一旦有人进入它,数据就会被写入文件。每次加载页面后,都应该从文件中读取数据并将其设置为输入值。
但是当我加载程序时,输入“Word”作为字段,然后按提交,然后打开一个新选项卡(以确保它不仅仅是保存的数据)并重新输入URL,“Word”将回显为{ {1}},但file_get_contents
没有回应任何内容,输入字段中没有任何内容。
为什么会这样,我该如何解决?
答案 0 :(得分:1)
虽然这似乎没有在php.net中明确/清楚地记录(我将提供下面相关文档的链接),但我刚刚在我的最后进行了测试,我发现了如果您在fgets()
'a'
作为模式的文件资源上运行,fopen()
将始终返回false
我想象这是&#39; a&#39;的一个副作用。模式仅为写入打开文件。运行完全相同的测试,使用&#39; a +&#39; (打开用于编写和读取的文件)作为模式,同时输出fgets()
和file_get_contents()
&#39; word&#39;。 fopen文档详细介绍了不同的模式。
http://php.net/manual/en/function.fopen.php
http://php.net/manual/en/function.fgets.php
如果您想查看我测试过的代码以及您自己的结果,我会在我的测试中截取几张截图: