3

我只写了一个带有电子邮件字段的 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>
4

7 回答 7

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在文件的开头和开头之间留下任何空白行,否则重定向将不起作用。

于 2013-07-25T20:48:44.013 回答
1

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

<?php

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

$email = $_POST['email']; 

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

?>
于 2013-07-25T20:49:56.047 回答
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>
于 2013-07-25T20:51:12.993 回答
0

您的提交按钮和输入元素以及表单具有相同的名称“电子邮件”。首先要做的是给它们起不同的名字。

表单的名称还包括一个额外的空格“电子邮件”。

于 2013-07-25T20:46:54.943 回答
0

在 php 中有一个名为的数组$_POST,它在您发布表单时存储表单中的所有变量。所以$email会在$_POST['email']

于 2013-07-25T20:49:00.803 回答
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>
于 2013-11-04T21:00:51.987 回答
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") ;
}
于 2013-07-25T20:54:12.690 回答