我有一个简单的联系,我希望"POST“通过一个函数,但我似乎不能让它工作?
当我将动作发送到外部的"send.php“文件,但我希望将所有内容都保存在一个文件中时,这个表单就可以工作了。
<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@email.com";
$subject = "Contact Form";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo "Thank You!";
}
?>
发布于 2012-07-31 20:57:14
你不能从<form>
标签调用php代码。通常,您将其作为“回发”处理回同一页,并检查是否设置了表单变量以确定是否发生了回发:
<form action="" id="contactform" method="POST">
然后在你的代码中:
if (isset($_POST['name']))
send();
发布于 2012-07-31 21:12:20
动作字段将是所呈现的html的一部分。这意味着,它是静态的或者是'client‘的一个属性。根据the normative,它还应该是有效的绝对或相对地址。如果你把它留空,它在大多数(不是所有)情况下都可以工作,但它不会正确验证。
PHP代码在您的网页所在的服务器上运行。这意味着,它是在你得到任何东西之前运行的,然后你的浏览器就会收到html代码。因此,它需要在提交代码后再次运行,因此需要一个页面来运行它。
想象一下你在一家餐馆里。首先,你给服务生点了一些食物。这将是您尝试进入X网页。然后在厨房里准备食物。这将是正在执行的PHP代码。当食物准备好时,服务生就会给你送来。这是你下载信息,接收html代码。你甚至可以在你喜欢的时候改变它(javascript),但是这超出了你的问题的范围。关注OP,改变你的食物安排(在客户端做一些事情)会改变厨房里已经做过的事情吗?不,它不能。唯一的选择是告诉服务生你想要的食物变化(填写表格),并礼貌地告诉他去厨房要这些变化(这就是把变化寄到哪里)。这可能是一个愚蠢的例子,但它表明了这一点。
我没有把代码作为其他人的代码来解决你的问题,我只是想解释为什么你的代码不能工作,这样你就能更好地理解html/PHP。
发布于 2012-07-31 20:55:43
将form
标签更改为
<form action="" ... >
...
</form>
如果设置了$_POST['message']
,则在声明之后调用send()
。
action
属性只告诉浏览器应该将信息发送到哪个网页;它与告诉浏览器在到达后运行哪个函数没有任何关系。
https://stackoverflow.com/questions/11740563
复制相似问题