使用PHP从HTML表单写入文本文件

时间:2013-07-25 20:44:39

标签: php html forms text

我用电子邮件字段写了一个html表单。我想转发该用户的电子邮件 输入我的网络服务器上的文本文件。

当我点击提交按钮时,我会看到一个白色屏幕。没有任何内容写入我的文本文件。 我还想在用户点击提交按钮时将用户重定向到另一个页面。 这可能吗?我是新手。

<?php

$file = fopen("emaillist.txt","a+");
fwrite($file,$email);
fclose($file); 
print_r(error_get_last());

?>

<form action= "emaillist.php" method="post" name="email ">
<input type="text" name="email">
<br>
<br>
<input type="submit" name="email" value="submit"><br>

7 个答案:

答案 0 :(得分:1)

除了Andy G所说的更改提交按钮名称之外:

<?php
//Get the email from POST
$email = $_REQUEST['email'];
$file = fopen("emaillist.txt","a+");
fwrite($file,$email);
print_r(error_get_last());

//redirect
header("Location: http://www.example.com/");

不要在<?php和文件开头之间留下任何空白行,否则重定向将无效。

答案 1 :(得分:1)

提交结果将存储在$_POST变量中:

<?php

$file = fopen("emaillist.txt","a+");

$email = $_POST['email']; 

fwrite($file,$email);
fclose($file); 
print_r(error_get_last());

?>

答案 2 :(得分:1)

试试这个,使用不同的名称提交按钮也检查是否按下了提交按钮而不是写入文件。您也没有获得已发布的email

<?php
if(isset($_POST['submit']))
{
    $email = $_POST['email'];
    $file = fopen("emaillist.txt","a+");
    fwrite($file,$email);
    fclose($file); 
    print_r(error_get_last());
}
?>
<form action= "" method="post" name="form">
<input type="text" name="email">
<br>
<br>
<input type="submit" name="submit" value="submit"><br>
</form>

答案 3 :(得分:0)

您的提交按钮和输入元素以及表单,具有相同的名称“email”。首先要做的是给他们不同的名字。

表单的名称还包含一个额外的空格“email”。

答案 4 :(得分:0)

在php中有一个名为$_POST的数组,它在发布时存储表单中的所有变量。因此$email

中会找到$_POST['email']

答案 5 :(得分:0)

您需要在此处更新一些内容:

表单元素需要具有不同的名称,因此您可以在PHP服务器端代码中区分它们。像这样:

<form action="emaillist.php" method="post">
    <input type="text" name="email" />
    <br />
    <br />
    <input type="submit" name="emailSubmit" value="submit" />
    <br />
</form>

您需要将服务器端代码包装在条件中以确保它是表单帖子。目前,当您第一次加载此页面时,它将写入该文件。但是,在您使用表单数据再次回到页面之前,没有任何内容。所以你需要检查它是否是一个表格帖子。执行此操作的常用方法是检查发布数据中是否存在提交按钮:

if (isset($_POST["emailSubmit"])) {
    $file = fopen("emaillist.txt","a+");
    fwrite($file,$email);
    fclose($file); 
    print_r(error_get_last());
}

只是为了确认,因为你说你是PHP新手......你希望文件写在服务器上而不是客户端 ,对吗?

要重定向到另一个页面,只需在服务器端PHP代码中设置位置标头即可。这需要在将任何内容发送到客户端之前完成。由于您只希望在事件发生时发生这种情况,因此它应该与之前的条件相同:

if (isset($_POST["emailSubmit"])) {
    $file = fopen("emaillist.txt","a+");
    fwrite($file,$email);
    fclose($file); 
    print_r(error_get_last());

    header("Location: http://www.yoursite.com/newPage.php") ;
}

答案 6 :(得分:0)

<?php
if (isset($_POST['emailSubmit'])) {
    $file = fopen('emaillist.txt','a+');
    $email = $_POST['nail'];
    $fmail = $email.PHP_EOL;
    fwrite($file,$fmail);
    fclose($file); 
    print_r(error_get_last());

    header("Location: http://www.yourdomain.com/thanks.html") ;
}

?>
<form action='emaillist.php' method='post'>
    <input type='text' name ='nail' size= '30'/>
    <br />
    <br />
    <input type='submit' name='emailSubmit' value='OK'/>
    <br />
</form>