2012-07-31 63 views
0

我有一个简单的联系方式,我希望通过函数“POST”,但我似乎无法让它工作?简单的PHP表格

当我将动作发送到外部“send.php”文件时,表单工作,但我希望将所有内容都保存在一个文件中。如果$_POST['message']设置

<form action="send()" id="contactform" method="POST"> 
<p>Name<input type="text" name="name"> 
    Email 
    <input type="text" name="email"> 
    Phone 
    <input type="text" name="phone"> 
</p> 
<p>Message 
    <textarea name="message" rows="6" cols="25"></textarea> 
    <br /> 
<input type="submit" value="Send"> 
</p> 
</form> 

<?php 
function send() 
{ 
$name = $_POST['name']; 
$email = $_POST['email']; 
$phone = $_POST['phone']; 
$message = $_POST['message']; 
$formcontent=" From: $name \n Phone: $phone \n Email: $email \n Message: $message"; 
$recipient = "[email protected]"; 
$subject = "Contact Form"; 
$mailheader = "From: $email \r\n"; 
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!"); 
echo "Thank You!"; 
} 
?> 

回答

5

您不能从<form>标记调用php代码。通常你处理这是一个“回传”回到同一页面,并检查是否表单变量被设置,以确定是否回发发生:

<form action="" id="contactform" method="POST"> 
在你的代码

然后:

if (isset($_POST['name'])) 
    send(); 
0

变化form标签

<form action="" ... > 
    ... 
</form> 

然后调用send()其声明之后。

action属性只是告诉浏览器它应该发送信息到哪个网页;它不会告诉它一旦到达那里就运行哪个函数。

1

这是PHP不是如何工作:)

要快速解决您的代码,你可以这样做:

  1. 把你send()功能
  2. 切的内容并将其粘贴到一个新的。 PHP文件(在您的休闲命名)
  3. 取代action="send()"action="file_you_just_created.php"
  4. 测试出来

基本上,HTML表单并不知道PHP代码是否存在,也不能直接引用它。

0

HTML表单的action标签不能用于执行PHP代码。 该操作必须是一个PHP页面,其中将包含将被执行以读取POST变量的代码。

0
<form action="?" id="contactform" method="POST"> 
<p>Name<input type="text" name="name"> 
    Email 
    <input type="text" name="email"> 
    Phone 
    <input type="text" name="phone"> 
</p> 
<p>Message 
    <textarea name="message" rows="6" cols="25"></textarea> 
    <br /> 
<input type="submit" value="Send"> 
</p> 
</form> 

<?php 
if ($_POST) { 
    send(); 
} 

function send() 
{ 
$name = $_POST['name']; 
$email = $_POST['email']; 
$phone = $_POST['phone']; 
$message = $_POST['message']; 
$formcontent=" From: $name \n Phone: $phone \n Email: $email \n Message: $message"; 
$recipient = "[email protected]"; 
$subject = "Contact Form"; 
$mailheader = "From: $email \r\n"; 
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!"); 
echo "Thank You!"; 
} 
?> 
0
<form action="" id="contactform" method="POST"> 
<p>Name<input type="text" name="name"> 
    Email 
    <input type="text" name="email"> 
    Phone 
    <input type="text" name="phone"> 
</p> 
<p>Message 
    <textarea name="message" rows="6" cols="25"></textarea> 
    <br /> 
<input type="submit" value="Send" name="submit"> 
</p> 
</form> 

<?php 
if (isset ($_POST["submit"])) 
{ 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $phone = $_POST['phone']; 
    $message = $_POST['message']; 
    $formcontent=" From: $name \n Phone: $phone \n Email: $email \n Message: $message"; 
    $recipient = "[email protected]"; 
    $subject = "Contact Form"; 
    $mailheader = "From: $email \r\n"; 
    mail($recipient, $subject, $formcontent, $mailheader) or die("Error!"); 
    echo "Thank You!"; 
} 
?> 
0

做到这本:

<form action="" id="contactform" method="POST"> 

或者更好的(有效):

<form action="<?php echo $_SERVER['SCRIPT_FILENAME'] ?>" id="contactform" method="POST"> 

捉对脚本检查数据后的数据:

<?php 
if (isset($_POST['submit'])) { 
    // you should also check if field was filled (strict coding) 
    if (isset($_POST['email'])) $email = $_POST['email']; 
    ... 
} 
1

行动领域将呈现的HTML的一部分。这意味着,它是静态的或“客户”的属性。根据the normative,它也应该是一个有效的绝对或相对地址。如果你把它留空,它会在大多数情况下(而不是全部)情况下工作,但它不会被正确验证。

PHP代码在您的网页托管的服务器上工作。这意味着,它在您获取任何内容之前运行,然后您的浏览器收到该html代码。因此,需要在提交代码后再次运行,因此您需要一个页面来运行它。

想象一下,你在一家餐厅。首先你给侍者点些食物。这将是你试图进入X网页。然后在厨房准备食物。这将是正在执行的PHP代码。当食物准备好时,服务员将它交给你。这是你下载信息,接收html代码。你甚至可以改变它,只要你喜欢它(javascript),但这超出了你的问题的范围。专注于OP,会改变你的食物安排(做一些客户端)修改它已经在厨房做了什么?不,它不能。唯一的选择是告诉服务员你想要的食物变化(填写表格),并有礼貌地告诉他去厨房,并要求他们(这是,在哪里发送变化)。可能是一个愚蠢的例子,但它表明了这一点。

没有把代码作为其他代码应该毫无疑问地解决你的问题,我只是想解释为什么你的代码不工作,所以你更好地理解HTML/PHP。