如何让我的$ _Post工作

时间:2014-03-06 23:47:27

标签: php email post get

我试图让我的网站每次有人发消息时都提交电子邮件(现在我正在努力让我的变量工作......)。这是一个学习过程,所以我就是为了这一切,只是想自学。但是,$_post$_get之类的GLOBAL php命令不起作用。我甚至尝试了不同的方法但无济于事。

<?php
$person = $_Post['pName'];
echo "before";
echo $person;
echo "after";
echo $_Get['pName'];
?>

但这从未提交任何内容。我的表单包含method="post"action="TestSend.php"。是的,文件名也是TestSend.php。此外,在我点击我的网站上的“提交”后,php DOES会在浏览器中显示“之前”。

如果您想亲自测试,请访问我的网站www.turnedbrigade.com 最后一个问题,我需要带有我的php文件的html标签和body标签吗?

这是html编码。

<form action="TestSend.php" method="post">
Name: <input name="pName" type="text" placeholder="Name"/>
Email: <input name="pEmail" placeholder="Email"/><br/>
Message: <br/><textarea name="pMessage" rows="8" cols="60" placeholder="Message"></textarea><br/>
<input type="submit"/>              
</form>

编辑:

<?php
$from =  $_POST['pName'];
$email = $_POST['pEmail'];
$subject = "Forums";
$message = $_POST['pMessage'];
mail("email will go here", $subject, $message, $from);
?>

对于这个电子邮件的一部分,我的页面空白,我从来没有收到过任何内容。

HTML

HTML http://img716.imageshack.us/img716/6872/c7a3.png PHP

Php

2 个答案:

答案 0 :(得分:4)

$_POST$_GET是正确的变量名称,它们是superglobals系列的一部分。 Php区分大小写,因此您确实需要使用大写字母,因此请更改

$person = $_POST['pName'];

并且

echo $_GET['pName'];

答案 1 :(得分:2)

尝试使用$_GET$_POST。不知道你在哪里看到他们没有资本化......

回答你的另一个问题,如果你不打算渲染页面(在浏览器中显示),但只做一些数据库通信,发送电子邮件等等......你不需要任何HTML。但是,您将在浏览器中显示的所有页面(表单,“谢谢”页面等)都需要具有适当的HTML结构。你在其中使用PHP并不重要,它们最终仍然以HTML格式呈现。

您可能会注意到,即使没有正确的HTML结构,页面也可能正常工作(因此没有doctype,没有html,head,body ......),但是不要使用它。除了是一个可怕的做法,它实际上是你的浏览器为你处理你的坏HTML,你应该永远,永远依赖它。了解如何编写正确的HTML(有数百万篇教程),并正确使用它。

更新

对于您的最新更新,页面为空白是正常的 - 您没有输出任何内容。尝试更改邮件行:

mail("email will go here", $subject, $message, $from);

这样的事情:

if (mail("email will go here", $subject, $message, $from)) {
    echo 'Yay! Email sent!';
}
else {
    echo 'There is an error somewhere, email not sent!';
}

你会发现代码工作正常。