2016-06-28 23 views
0

私はPHPには新しく、私は私の電子メールに送信する連絡先フォームを取得しようとしています。送信ボタンをクリックするたびに、「Can not POST /index.php」というページにリダイレクトされます。私はlocalhostから実行しようとし、それをherokuにデプロイしましたが、同じエラーが発生します。 htmlファイルとphpファイルは同じフォルダにあります。Can not POST /index.php

コンソールに次のエラーが表示されます。 'リソースの読み込みに失敗しました:サーバーは404(Not Found)のステータスで応答しました'。助けのための

<?php 
if (isset($_POST["submit"])) { 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $message = $_POST['message']; 
    $telephone = $_POST['telephone']; 
    $from = 'Demo Contact Form'; 
    $to = '[email protected]'; 
    $subject = 'Message from Contact Demo '; 

    $body = "From: $name\n E-Mail: $email\n Message:\n $message"; 

    // Check if name has been entered 
    if (!$_POST['name']) { 
     $errName = 'Please enter your name'; 
    } 

    //Check if simple anti-bot test is correct 
    if (!$_POST['telephone']) { 
     $errName = 'Please enter your telephone number'; 
    } 

    // Check if email has been entered and is valid 
    if (!$_POST['email'] || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { 
     $errEmail = 'Please enter a valid email address'; 
    } 

    //Check if message has been entered 
    if (!$_POST['message']) { 
     $errMessage = 'Please enter your message'; 
    } 

// If there are no errors, send the email 
if (!$errName && !$errEmail && !$errMessage && !$errHuman) { 
    if (mail ($to, $subject, $body, $from)) { 
     $result='<div class="alert alert-success">Thank You! I will be in  touch</div>'; 
} else { 
    $result='<div class="alert alert-danger">Sorry there was an error sending your message. Please try again later</div>'; 
} 
} 
    } 
?> 

ありがとう:

フォームのHTMLコードは、PHPファイルがある

<form name="sentMessage" role="form" id="contactForm" novalidate name="contactform" method="post" action="index.php"> 
       <div class="control-group form-group"> 
        <div class="controls"> 
         <label for="first_name">Full Name:</label> 
         <input type="text" class="form-control" name="name" id="name" required data-validation-required-message="Please enter your name."> 
         <p class="help-block"></p> 
        </div> 
       </div> 
       <div class="control-group form-group"> 
        <div class="controls"> 
         <label for="telephone">Phone Number:</label> 
         <input type="tel" class="form-control" id="phone" name="telephone" required data-validation-required-message="Please enter your phone number."> 
        </div> 
       </div> 
       <div class="control-group form-group"> 
        <div class="controls"> 
         <label for="email">Email Address:</label> 
         <input type="email" class="form-control" name="email" id="email" required data-validation-required-message="Please enter your email address."> 
        </div> 
       </div> 
       <div class="control-group form-group"> 
        <div class="controls"> 
         <label for="comments">Message:</label> 
         <textarea rows="10" cols="100" class="form-control" name="message" id="message" required data-validation-required-message="Please enter your message" maxlength="999" style="resize:none"></textarea> 
        </div> 
       </div> 
       <div id="success"></div> 
       <!-- For success/fail messages --> 
       <button type="submit" class="btn btn-primary" id="send-email">Send Message</button> 
       <div class="form-group"> 
        <div class="col-sm-10 col-sm-offset-2"> 
         <?php echo $result; ?> 
        </div> 
       </div> 
      </form> 

です。

+0

を試してみましょう。 HTMLでは 'method =" get "という形式を設定し、' index.php'の先頭に 'echo 'を置きます。これはindex.php'です。 exit; 'フォームを送信すると、あなたが印刷したメッセージが画面に表示されますか? – BeetleJuice

+0

私はこれを行うときに私のindex.phpファイルをダウンロードします –

+0

申し訳ありませんが、私の質問に答えなかったので、 "index.phpをダウンロードします"という意味が分かりません。私のテストに従った?つまり、HTMLに 'method =" get "'を設定してフォームを送信すると、* "this is index.php" *というメッセージが画面に表示されます。 – BeetleJuice

答えて

0

送信ボタンの名前は、PHPでチェックしているので、設定する必要があります。次のように

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

Therforeは、それを追加します。

<button type="submit" name="submit" class="btn btn-primary" id="send-email">Send Message</button> 

はまた、あなたは、PHPは、あなたがにデータを送信するためのフォームを指示しているのindex.phpになっていることを確認する必要があります。

また、私はあなたのPOST HTTPハンドラは、あなたに取り組んで無効/されていないように、それは思われるが

if (!$_POST['telephone']) { 
     $errTelephone = 'Please enter your telephone number'; 
+0

これまでのおかげでありがとう。私は送信ボタンの名前を$ errTelephoneに変更しました。 –

+0

「あなたがフォームにデータを送るように指示しているphpがindex.phpにあることを確認してください」とはどういう意味ですか? –

+0

指定されたphpを含まないページにフォームを誘導している場合は、フォームデータを処理できません。このページがindex.phpの場合は、フォームデータの処理を指定する必要はありません。フォームはそれ自体に送信され、送信が設定されている場合はそれを処理します。ちなみに私はおそらくisset()でも$ resultをラップしています。 – gavgrif

0

である必要があり、これは誤植(おそらくコピー/ペーストタイプミス)

if (!$_POST['telephone']) { 
     $errName = 'Please enter your telephone number'; 

だと思いますあなたのlocalhost上で実行されている場合は、私はあなたがサーバー管理者に連絡するか、またはそれを有効にするにはサーバーのコントロールパネルで見つけると思います

+0

ローカルホスト上でも動作しません。 –