Php 需要反馈表单注释以保存到sepoerate行
我有一个反馈表,保存到一个txt文件,它保存完美,但它保存在一行。因此,多个注释将保存在一行上,以便只保存到记事本上的一行,而不是将不同的注释分隔到不同的行上 这是我的HTMLPhp 需要反馈表单注释以保存到sepoerate行,php,forms,text,Php,Forms,Text,我有一个反馈表,保存到一个txt文件,它保存完美,但它保存在一行。因此,多个注释将保存在一行上,以便只保存到记事本上的一行,而不是将不同的注释分隔到不同的行上 这是我的HTML <form action="feedback.php" method="post"> <table> <tr> <td>Email Address:</td> <td> <input type
<form action="feedback.php" method="post">
<table>
<tr>
<td>Email Address:</td>
<td>
<input type="text" name="email_address" value="" maxlength="100" />
</td>
</tr>
<tr>
<td>
Comments:
</td>
<td>
<textarea rows="10" cols="50" name="comments">
</textarea>
</td>
</tr>
<tr>
<td> </td>
<td>
<input type="submit" value="Submit" />
</td>
</tr>
</table>
</form>
电邮地址:
评论:
以下是我的php:
<?php
$email_address = $_POST['email_address'];
$comments = $_POST['comments'];
$myfile = fopen("feedback.txt", "a") or die("Unable to open file!");
$txt = 'Email: '.$email.'\nComments: '.$comments.'\n\n';
fwrite($myfile, $txt);
fclose($myfile);
?>
因此,我需要不同的注释来保存到不同的行,而不仅仅是一行。您的\n
(新行)不起作用,因为您使用撇号”
而不是双引号“
例如你有:
$txt='Email: '.$email.'\nComments: '.$comments.'\n\n';
你需要:
$txt="Email: ".$email."\nComments: ".$comments."\n\n";
编辑
更改使用的变量名时,未写入您的电子邮件地址。
e、 g.您有以下代码:
$email_address=$_POST['email_address'];
$txt='Email: '.$email.'\nComments: '.$comments.'\n\n';
您的$txt
变量正在使用$email
但是您正在将$\u POST
数据设置为变量$email\u address
尝试以下完整代码:
$email_address = $_POST['email_address'];
$comments = $_POST['comments'];
$myfile = fopen("feedback.txt", "a") or die("Unable to open file!");
$txt="Email: ".$email_address."\nComments: ".$comments."\n\n";
fwrite($myfile, $txt);
fclose($myfile);
这是一个简单的错误,但是你应该试着养成复制和粘贴变量名的习惯,而不是重新键入它们。这有助于避免拼写错误等,这在大型代码块和多个文件中会成为一个更大的问题
并使用您的错误日志-它们在编码时非常宝贵!在这种情况下,PHP(因此日志)会抱怨
$email
变量没有定义,这反过来会导致您检查变量,您可能已经解决了它。我会使用PHP\u EOL
,因为它是跨平台兼容的!这意味着它可以处理Unix/DOS/Mac问题
(我还认为您需要更改$email
变量)
因此,请记住你的台词:
$txt='Email: '.$email.'\nComments: '.$comments.'\n\n';
使用:
使用\r\n将新行文本文件设置为:
$txt='Email:'.$Email.'\r\n注释:'.$Comments.'\r\n';您实际上可以使用单引号并连接换行符,但您需要编写如下代码:
<?php
echo 'This is a test of using a newline char.' . chr(10) .
'Did it work? It should have.';
?>
为了减少出错的可能性,应该进行某些检查。用户是否确实提交了表单?此外,我们不应该假设来自$\u POST的所有数据都是安全的,因此我使用htmlentities()作为电子邮件地址和评论,以防恶意用户试图插入他们不应该插入的内容
另一点是,有些人认为变量插值很慢,但讽刺的是,变量插值越多,插值处理的效率就越高。顺便说一句,我通过添加和删除一些换行符来更改一些换行符,以便最终结果的格式更容易呃读
<?php
if (isset($_POST) && $_POST != NULL) {
$email_address = htmlentities($_POST['email_address']);
$comments = htmlentities($_POST['comments']);
$myfile = fopen("feedback.txt", "a") or exit("Unable to open file!");
$txt="Email: $email_address\nComments:\n\n$comments\n\n";
fwrite($myfile, $txt);
fclose($myfile);
}
?>
我用exit()替换了病态的die()因为它们都是等效的语言结构;它们都生成相同的退出操作码。您需要让PHP插入换行符。在以
$txt='Email:'。$Email:'开头的行中将单引号更改为双引号。
这是单引号内的\n
;使用双引号“\n“
谢谢,由于某些原因,电子邮件没有保存,它只是显示为:email:Comments:Hello,而不是保存电子邮件。这以前也发生过。你知道这是为什么吗?我能做些什么来修复它?在2014年,使用\r
或\r\n
很可能在任何地方都被正确解释,无论操作系统如何。就我个人而言,我认为最好只对\n
;)进行标准化
<?php
echo 'This is a test of using a newline char.' . chr(10) .
'Did it work? It should have.';
?>
<?php
if (isset($_POST) && $_POST != NULL) {
$email_address = htmlentities($_POST['email_address']);
$comments = htmlentities($_POST['comments']);
$myfile = fopen("feedback.txt", "a") or exit("Unable to open file!");
$txt="Email: $email_address\nComments:\n\n$comments\n\n";
fwrite($myfile, $txt);
fclose($myfile);
}
?>