0

サイトの電子メール コードのバグを見つけようとしています。これは予約フォームですが、入力した情報を送信することができません。私はまだ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>

私はそれが単純なものでなければならないことを知っています。

4

4 に答える 4

2

if ステートメントを削除するか、追加します

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

あなたのフォームに

ちょっとした情報 php POST は、フォームから名前を取得し、値を取得しています。あなたのフォームにはsubmitという名前の要素がなかったため、投稿するとfalseが返されました...その後、そうではなかったif isset()を使用したため、コードは実行されませんでした。将来立ち往生した場合は、if ステートメントに else を追加し、「失敗」をエコーし​​ます

于 2013-07-15T05:24:15.557 に答える
1

使用している

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" />
于 2013-07-15T05:21:02.407 に答える
1

ものすごく単純。

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">
于 2013-07-15T05:21:08.957 に答える
0

$name 変数を使用していますが、php ファイルにその設定がありません。

それ以外の場合は、エラー メッセージを提供してください - 画面または apache ログから (もちろん apache を使用している場合)

于 2013-07-15T05:22:39.160 に答える