试图在一个简单的电子邮件表单中找出错误-仍在学习php


trying to work out the bugs in a simple email form - Still learning php

我正在努力找出一个网站的电子邮件代码中的错误。这是一张预订表格,但我填写后无法发送信息。我还是PHP的新手,所以任何帮助都将不胜感激。提前谢谢你。

以下是PHP代码:

<?php
$err = '';
if(isset($_POST['submit'])){        
    $first = addslashes(trim($_POST['first'])); 
    $last = addslashes(trim($_POST['last']));   
    $email = addslashes(trim($_POST['email']));
    $date = addslashes(trim($_POST['date']));
    $women = addslashes(trim($_POST['women']));
    $men = addslashes(trim($_POST['men']));
            $message = "Name: $name" . PHP_EOL;
            $message .= "Phone: $phone" . PHP_EOL;
            $message .= "Email: $email" . PHP_EOL;
            $message .= "Date: $date" . PHP_EOL;
            $message .= "Women: $women" . PHP_EOL;
            $message .= "Men: $men" . PHP_EOL;
            $header = "From: reservations@bryanlv.com";
            mail("sales@pinnaclewebsitedesigns.com", "New Club Reservation", $message, $header);
            header('location:thank-you.html');      
        } else {    
        if($name=='') $err.='<p style="color:red">Your Name is empty</p>';  
        if($phone=='') $err.='<p style="color:red">Your Phone is empty</p>';    
        if($email=='') $err.='<p style="color:red">Your E-mail is empty</p>';   
        if($date=='') $err.='<p style="color:red">Your Reservation Date is empty</p>';  
        if($women=='') $err.='<p style="color:red">Number of Women is empty</p>';
        if($men=='') $err.='<p style="color:red">Number of Men is empty</p>';
    }

?>

这是表格:

<form name="reservation" method="post" action="book.php">
                    <label>Name</label>
                    <input type="text" name="name" id="name" placeholder="name" />
                    <label>Phone</label>
                    <input type="text" name="phone" id="phone" placeholder="phone" />
                    <label>E-mail</label>
                    <input type="text" name="email" id="email"  placeholder="email" />
                    <label>Date of Reservation </label>
                    <input type="date" name="date" id="date"  placeholder="date" />
                    <label>Number of Women </label>
                    <input type="text" name="women" id="women"  placeholder="women" />
                    <label>Number of Men </label>
                    <input type="text" name="men" id="men"  placeholder="men" />
                    </label>
                    <br />
                    <button type="submit" class="btn btn-primary">Book now</button>
                 </form>

我知道一定是我错过了一些简单的东西。

删除if语句或添加

 <input type=hidden name="submit" value ='1'>

到您的表单

php POST只是从表单中获取名称并检索值。你的表单没有名称为submit的元素,因此当你发布它时,它会返回false。。。然后,您使用了一个if-iset(),但它不是,因此没有执行任何代码。如果你在未来陷入困境,请在If语句中添加一个else,并回显"失败"

您正在使用

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

但是没有具有submit名称的表单元素,因此它不能满足if条件,您可以尝试替换这个

<button type="submit" class="btn btn-primary">Book now</button>

带有

<input type="submit" name="submit" class="btn btn-primary" value="Book now" />

非常简单。

使用if ($_SERVER['REQUEST_METHOD'] === 'POST') {测试用户是否正在张贴表单。

我快速浏览了一下表格,结果是:

Array ( [name] => [phone] => [email] => [date] => [women] => [men] => )

与按钮无关,无论如何,这都是一种糟糕的检查方式。

简单更改:

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

至:

if ($_SERVER['REQUEST_METHOD'] === 'POST') {

我仍然强烈反对使用提交按钮的名称。

请制作这样的系统:

<input type="hidden" name="type_of_post" value="register / login / what type of action">

您正在使用$name变量,但我在您的php文件中没有看到该设置。

除此之外,请提供错误消息-来自屏幕或您的apache日志(如果您当然使用apache)

相关文章: