我是php的新手,但我不知道问题出在哪里。我试图在文本框中输入字符串。
<?php
$file = fopen("/file/location","r");
while(!feof($file)){
echo fgets($file);
echo "<br>";
}
fclose($file);
<html>
<form name="form" action="" method="get">
<input type="text" name="subject" id="subject" value="Car Loan">
</form>
</html>
echo $_GET['subject'];
<html> file_put_contents("/file/location", $_GET['subject'], FILE_APPEND); </html>
?>
第一部分运行正常,但是当我进入<html>
时,它开始吐出各种错误。
答案 0 :(得分:4)
正如我在评论中所说,您正在将纯HTML注入PHP。
您必须关闭PHP标记,然后重新打开。
此<html>
和相关<html> file_put_contents
中的</html>
标签也需要删除。
如果/file/location
可能会给您带来麻烦,那么应该在斜杠后面加上斜线,但可能不需要,在这里只是个旁注。
<?php
$file = fopen("/file/location","r");
while(!feof($file)){
echo fgets($file);
echo "<br>";
}
fclose($file);
?>
<html>
<form name="form" action="" method="get">
<input type="text" name="subject" id="subject" value="Car Loan">
</form>
</html>
<?php
echo $_GET['subject'];
file_put_contents("/file/location", $_GET['subject'], FILE_APPEND);
?>
但是,您需要在此处使用条件语句,因为您将获得回显GET数组的未定义索引通知,并且在file_put_contents
中会看到整个代码都在同一文件中; action=""
建议。 Error reporting将在这里为您提供帮助。
即:if(!empty($var)){...}
和/或if(isset($var)){...}
。
还要确保可以写入该文件夹,并且已经为其设置了适当的权限。
您的文件夹声明也可能要求它是完整的服务器路径。
在fopen()
http://php.net/manual/en/function.fopen.php上查阅手册。
即:fopen("/var/usr/public_html/file/location","r");
。
file_put_contents()
也可能发生同样的情况。如果现在遇到问题,请尝试使用服务器路径。
脚注:
您可以将结束</html>
放在
file_put_contents("/file/location", $_GET['subject'], FILE_APPEND);
?>
因为在HTML标记之外回显某些内容会在控制台/ HTML源代码中引发某些内容。
答案 1 :(得分:2)
您正在将html与php混合使用,但未正确封装。 这是经过编辑的版本:
enzyme