如何使用PHP将输入字段保存为txt或html文件

时间:2015-12-07 14:24:21

标签: php html

所以几天来我一直在寻找关于如何使这项工作的论坛帖子。我发现很多帖子都很有帮助。并且有工作的答案,但每次我尝试它,它不想为我工作。现在我看到的大部分帖子都是2-5岁。所以我虽然做了一个新的我想做一个新的,因为我真的不知道任何PHP,但我正在努力学习,所以适应PHP很难,因为我真的知道如何阅读它。所以这里是我的代码和一些图片,也是我看过的帖子的链接。这是一个名为World At Arms的游戏的维基项目,去看看它很有趣。

HTML代码:

<form action="totxt.php?saving=1" id="contact_form" method="post">
    First Name:
    <input type="text" name="first" id="first" value="First Name" onblur="if(this.value == '') { this.value = 'First Name'; }" onfocus="if(this.value == 'First Name') { this.value = ''; }" />
    <br /> Last Name:
    <input type="text" name="last" id="last" value="Last Name" onblur="if(this.value == '') { this.value = 'Last Name'; }" onfocus="if(this.value == 'Last Name') { this.value = ''; }" />
    <br /> In Game Name:
    <input type="text" name="ing" id="ign" value="In Game Name" onblur="if(this.value == '') { this.value = 'In Game Name'; }" onfocus="if(this.value == 'In Game Name') { this.value = ''; }" />
    <br /> Current Level:
    <input type="text" name="level" id="level" value="Current Level" onblur="if(this.value == '') { this.value = 'Current Level'; }" onfocus="if(this.value == 'Current Level') { this.value = ''; }" />
    <br /> Glory:
    <input type="text" name="glory" id="glory" value="Glory" onblur="if(this.value == '') { this.value = 'glory'; }" onfocus="if(this.value == 'glory') { this.value = ''; }" />
    <br /> Message:
    <br />
    <textarea name="message" id="message" rows="10" cols="50"></textarea>
    <br />
    <input value="Submit" type="submit" />
</form>

所以这是我从已发现的帖子中捣毁的Html代码。它很混乱,我很确定有一些可以带走的夹头,但我不是编码主谋。

我收集的PHP代码:

<?php
$first = $_POST["first"];
$last = $_POST["last"];
$ign = $_POST["ign"];
$level = $_POST["level"];
$glory = $_POST["glory"];
$message = $_POST["message"];
$text = "NAME: $first    $last <br>
In Game Name: $ign<br>
Current Level: $company<br>
Glory: $glory<br>    
MESSAGE: $message<br><hr><br><br><br>";
$file = "data.txt";
$fp = fopen($file, "a") or die("Couldn't open $file for writing!");
fwrite($fp, $text) or die("Couldn't write values to file!"); 
fclose($file);
?>
<meta http-equiv="refresh" content="0; url=Success.html" />`

所以这是我点击提交时得到的错误:

  

无法打开data.txt进行编写!

我过去常常使用的链接。
1:Get user input from form, write to text file using php
2:https://forums.digitalpoint.com/threads/save-php-form-data-to-a-txt-file.757223/
3:PHP write file from input to txt
4:还有一个,但我似乎无法找到链接。

6 个答案:

答案 0 :(得分:2)

一些错误:

$ign = $_POST["ign"];name="ing"不同,应为name="ign"

还要确保您有权写入该文件。

编辑:似乎弗雷德-ii-已经在评论中发布了这个,没有先查看评论。归功于弗雷德-ii - 。

答案 1 :(得分:2)

您的文件无法写入。当您的Web服务器用户对该文件(或创建新文件时的目录)没有写入权限时,会发生这种情况(在类似unix的系统上)。

如果您的代码位于共享托管平台上,则由于安全性,您可能无权让PHP写入文件。

否则,请在命令行上尝试此操作

如果文件存在:

chmod 666 data.txt

如果文件不存在:

chmod 777 <directory>

但请注意:目录上的chmod 777允许每个登录服务器的人都写入新文件。你可能想重新考虑一下。它会产生安全问题。

更好的行动计划是更改作为文件所有者的用户,或者与Web服务器用户一起更改目录(您必须查看该用户,在debian系统上它是默认的{{1} },在其他系统上,它可能是www-datahttpd,具体取决于配置。甚至可能是服务器上的用户名。请咨询系统管理员。

apache

当目录或文件归Web服务器用户所有时,PHP可以写入该文件。

编辑1 :另一个问题(归功于fred-ii)是你的POST阵列不正确。

在您的HTML代码中,有一个字段chown <user> <file> chown <user> <directory>

输入字段的<input name="ing" id="ign" ...>值用于PHP数组索引。所以你需要改变:

name<input name="ing" ...

<input name="ign" ...$_POST['ign']

编辑2 :此外,(图片说明):您应该使用$_POST['ing']的正确参数:

fclose

答案 2 :(得分:0)

你在哪个系统?在Unix(Linux,OSX)上,您可以在正在处理的文件夹上尝试chmod -R 777。这应该有所帮助。

小通知: 你的行

fclose($file);

会抛出错误,你需要fclose资源,而不是文件!

fclose($fp);

编辑:由bishop精心设计(是的,这是对的!)设置chmod -R 777仅用于测试。请参阅Ronny Coolen的回答,以设置正确的权限。

答案 3 :(得分:0)

有一个未定义的变量$company。 您当前的目录也可能是只读的。如果您在localhost中尝试更改Web服务器目录属性 如果您的代码在线托管,请尝试更改当前目录的chmod 777。  同时关闭文件指针,如fclose($fp)

答案 4 :(得分:0)

仔细检查并查看&#34; data.txt&#34; file与脚本位于同一文件夹中。如果它在同一个文件夹中,那么从stackoverflow用户&#34; CCA&#34;中查看这个问题的php-Error: Server error: couldn't open file。看看这是否解决了你的问题。

解决方案可能是:`

$file = "[full directory to]"/data.txt;

OR

$file = realpath('data.txt');

答案 5 :(得分:-3)

确保文件的路径正确

$fp = fopen("$file","a+");