配置我的PHP

时间:2015-10-06 20:50:54

标签: php forms twitter-bootstrap

嘿我试图弄清楚我的表单问题以及我的挂断在代码中的位置。有人有什么建议吗?

<form method="post" action="tourney.php">
                <div class="row">
                    <div class="col-sm-4">
                        <input class="form-control" type="text" placeholder="Name" name="tname">
                    </div>
                    <div class="col-sm-4">
                        <input class="form-control" type="text" placeholder="Email" name="temail">
                    </div>
                    <div class="col-sm-4">
                        <input class="form-control" type="text" placeholder="School or Club" name="tclub">
                    </div>
                    <br>
                    <br>
                    <div class="col-sm-4">
                        <input class="form-control" type="text" placeholder="Address" name="taddress">
                    </div>
                    <div class="col-sm-3">
                        <input class="form-control" type="text" placeholder="City" name="tcity">
                    </div>
                    <div class="col-sm-2">
                        <input class="form-control" type="text" placeholder="State" name="tstate">
                    </div>
                    <div class="col-sm-2">
                        <input class="form-control" type="text" placeholder="Zip" name="tstate">
                    </div>
                </div>
                <br>
                <div class="row">
                    <div class="col-sm-12">
                        <textarea placeholder="Type your message here..." class="form-control" rows="5"></textarea>
                    </div>
                </div>
                <br>
                <div class="row">
                    <div class="col-sm-6">
                        <select name="type" class="form-control">
                            <OPTION VALUE="None Selected" SELECTED>Please select one</OPTION>
                            <OPTION VALUE="Middle School">Middle School Tournamanet</OPTION>
                            <OPTION VALUE="Elementary">Elementary Tournament</OPTION>
                        </select>
                    </div>



                    <div class="col-sm-6 pull-right">
                        <input class="btn btn-danger" type="submit" value="Register">
                    </div>
                </div>


            </form>

和PHP发送电子邮件:

<?php 
if(isset($_POST['submit'])){
$from = "minguswrestling.com";
$to = "puremeld@gmail.com";
$name = $_POST['tname'];
$email = $_POST['temail'];
$school = $_POST['tclub'];
$address = $_POST['taddress'];
$city = $_POST['tcity'];
$state = $_POST['tstate'];
$zip = $_POST['tzip'];
$type = $_POST['type'];
$message = $_POST['tmessage'];
$subject = "Tourney Signup!";

$body = "From: $from \n Name: $name \n Email: $email \n School: $school\n Address: $address\n City: $city State: $state Zip: $zip\n Event: $type\n Message: $message";

if ($_POST['submit']) {
if (mail ($to, $subject, $body, $from)) {
    '<h2>Thank You!</h2>';
header("Location: index.html");
} else { 
    echo '<p>Oops! An error occurred. Try sending your message again.      </p>'; 
}
}
}
?>

任何帮助将不胜感激。我正在为我的构建使用bootstrap,谢谢。

2 个答案:

答案 0 :(得分:2)

您的代码存在一些问题。

首先,正如我在评论中提到的那样;以下条件语句中的所有内容都将永远不会启动:

if(isset($_POST['submit'])){...}

因为没有名为&#34;提交&#34;的表单元素,作为您的提交按钮,错误报告会向您抛出undefined index submit notice...

因此您需要将其修改为:

<input name="submit" class="btn btn-danger" type="submit" value="Register">

但是,您需要删除第二个if ($_POST['submit']) {;它不需要。

您还没有名称属性:

 <textarea placeholder="Type your message here..." class="form-control" rows="5"></textarea>

需要修改为name="tmessage",因为$message = $_POST['tmessage'];最有可能用于此消息:

 <textarea name="tmessage" placeholder="Type your message here..." class="form-control" rows="5"></textarea>

此外,您在此处使用了相同的名称&#34;州&#34;和&#34; zip&#34;:

<input class="form-control" type="text" placeholder="Zip" name="tstate">

应为:

<input class="form-control" type="text" placeholder="Zip" name="tzip">

然后,您在标题之前输出'<h2>Thank You!</h2>';和标题:

旁注:您可能打算做echo '<h2>Thank You!</h2>';,但这仍然构成标题之前的输出,因为PHP实际上是在抛出一个解析错误,但您的服务器可能没有设置为捕获和显示通知/错误等。

if (mail ($to, $subject, $body, $from)) {
    '<h2>Thank You!</h2>';
header("Location: index.html");
}

你需要选择&#34;一个&#34;那些而不是两者。将'<h2>Thank You!</h2>';修改为echo '<h2>Thank You!</h2>';并删除标题,或删除&#34;谢谢&#34;并使用标题。

请参阅Stack上有关输出前标题的内容:

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:只应在暂存时进行显示错误,而不是生产。

这是重写并查看嵌入式评论:

<?php 
if(isset($_POST['submit'])){
    $from = "minguswrestling.com";
    $to = "puremeld@gmail.com";
    $name = $_POST['tname'];
    $email = $_POST['temail'];
    $school = $_POST['tclub'];
    $address = $_POST['taddress'];
    $city = $_POST['tcity'];
    $state = $_POST['tstate'];
    $zip = $_POST['tzip'];
    $type = $_POST['type'];
    $message = $_POST['tmessage'];
    $subject = "Tourney Signup!";

    $body = "From: $from \n Name: $name \n Email: $email \n School: $school\n Address: $address\n City: $city State: $state Zip: $zip\n Event: $type\n Message: $message";

if (mail ($to, $subject, $body, $from)) {
    echo '<h2>Thank You!</h2>'; // either use echo
// header("Location: index.html"); // or header, not both. Comment one or the other out.
} else {
    echo '<p>Oops! An error occurred. Try sending your message again.      </p>'; 
}

}
else { echo "Submit is not set."; }
?>

<强>脚注:

最好还对POST数组使用!empty(),因为任何人都可以使用您的表单并传递空值。

参考:

另外,$from = "minguswrestling.com";要小心。 mail()期望成为电子邮件地址而不是域名,最终可能是垃圾邮件。

最好使用手册中所述的From:

查阅手册:

最终说明。

目前还不清楚您是否在自己的PC或托管服务中使用此功能。

如果它来自您自己的PC,则需要安装并正确配置Web服务器,包括PHP和邮件。

如果来自托管服务,请确保您可以使用该邮件。

在测试时也检查垃圾邮件。

如果您要使用标头,请为其添加exit;,否则您的代码可能希望继续执行:

header("Location: index.html");
exit;

请记住不要使用&#34; echo&#34;如果您要使用标题。

答案 1 :(得分:0)

以下内容:

'<h2>Thank You!</h2>';
header("Location: index.html");

错误,你不能在标题之前输出任何内容。删除:

'<h2>Thank You!</h2>';