2013-07-25 87 views
3

我写了一个HTML表单,只是用一个电子邮件字段。我想将用户输入的电子邮件 输入到我的Web服务器上的文本文件中。使用PHP写入HTML表单的文本文件使用PHP

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

<?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> 
+0

您根据'register_globals'被激活。它不是PHP中不推荐和删除的错误功能。您的代码也试图追加到该文件,无论是否实际执行POST ... –

+0

您有两个名称相同的

'。对于初学者来说,将你的'<表单名称>重命名为别的东西。 –

回答

0

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

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

+0

谢谢大家。现在我可以写入一个文本文件。从电子邮件重命名为其他名称帮助。现在文本文档中的所有电子邮件都在同一行上。我知道你需要在php代码中有一个/ n。不确定究竟在哪里。此外,标题标记不会重定向,即使我已经在PHP代码中。我不是JEDI YET!多谢你们。 – user2620377

+0

你的意思是'\ n';)。请注意,表单的'name'属性现在还没有真正使用。尽管给表单一个'id',可以被JavaScript使用。 –

1

除了什么安迪庚说有关更改提交按钮的名称:

<?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和文件的开头之间的空白行,否则重定向将无法正常工作。

0

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

1

被发现提交结果将被存储在$_POST变量:

<?php 

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

$email = $_POST['email']; 

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

?> 
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> 
+0

''?有些东西肯定会出问题。 –

+0

@Fred yup他在代码中有这么多错误,编辑了答案。谢谢! –

+0

你很欢迎Khawer :) –

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") ; 
} 
+0

写在服务器上,而不是在客户端上,你是正确的。感谢似乎现在正在工作,我得到了重定向工作,现在只需要在代码中的某处放置\ n。 – user2620377

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>