我需要将表单输入保存到服务器上的文本文件中。我在服务器" 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");
?>
请协助。谢谢
答案 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);