将表单信息保存到服务器上的文件

时间:2014-10-21 20:53:27

标签: php forms

我需要将表单输入保存到服务器上的文本文件中。我在服务器" email.txt"上创建了一个文本文件,并赋予它777的权限。但是当提交表单时,它的文本文件仍为空白。

我的HTML如下:

<form action="process.php" method="post">

<input id="email-input" type="text" name="your-email" placeholder="you@yourmail.com" class="cform-text" size="65" title="your email">

<input id="optin-button" type="submit" value="Download The Report" class="cform-submit">

</form>

Php如下:

<?PHP

$email = $_POST["email-input"];

$to = "you@youremail.com";
$subject = "New Email Address for Mailing List";
$headers = "From: $email\n";

$message = "A visitor to your site has sent the following email address to be added to your mailing list.\n

Email Address: $email";

$user = "$email";
$usersubject = "Thank You";
$userheaders = "From: you@youremailaddress.com\n";

$usermessage = "Thank you for subscribing to our mailing list.";

mail($to,$subject,$message,$headers);

mail($user,$usersubject,$usermessage,$userheaders);

$fh = fopen("email.txt", "a");
fwrite($fh, $email);
fclose($fh); 

header("Location: mysite.com");

?>

请协助。谢谢

2 个答案:

答案 0 :(得分:0)

您的(电子邮件)输入带有id id="email-input"但它的“命名”name="your-email"与您的POST变量不匹配。

变化:

$email = $_POST["email-input"];

为:

$email = $_POST["your-email"];

您不能依赖id,而是依赖元素的name,这就是您的文件为空的原因。

使用错误报告会发出错误信号。

<强> N.B:

我建议您将fwrite($fh, $email);更改为fwrite($fh, $email . "\n");,否则,您将在一条连续线上获得所有累积的电子邮件地址。


error reporting添加到文件的顶部,这有助于查找错误。

error_reporting(E_ALL);
ini_set('display_errors', 1);

旁注:错误报告应仅在暂存时完成,而不是生产。

答案 1 :(得分:0)

使用php中提供的 file_put_contents(文件,数据,模式,上下文)

来源:http://www.w3schools.com/php/func_filesystem_file_put_contents.asp

如果要将文本附加到文件中已有的文本,请在模式下使用FILE_APPEND,因此它看起来像这样:

file_put_contents("email.txt",$email,FILE_APPEND);