2016-06-28 3 views
0

나는 PHP에 익숙하지 않으며 이메일을 보내기위한 연락 양식을 얻으려고합니다. 제출 버튼을 클릭 할 때마다 'Can not POST /index.php'페이지로 리디렉션됩니다. localhost에서 실행 해 보았고 heroku에 배포했지만 여전히 같은 오류가 발생합니다. html과 php 파일은 같은 폴더에 있습니다.Can not POST /index.php

콘솔에 '자원로드 실패 : 서버가 404 (찾을 수 없음) 상태로 응답했습니다.'라는 오류가 표시됩니다. 도움을

<?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()에서도 $ 결과를 래핑 할 것이다. – gavgrif

0

은 비활성화입니다

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

그이어야이 오타 (아마 복사/붙여 넣기 오타) 생각에 작동하지 않는/당신의 서버, 로컬 호스트에서 실행되는 경우, 나는 당신이 서버 관리자에게 문의하거나 사용하려면 서버 제어판에서 찾아야한다고 생각합니다

+0

이 작동하지 않습니다. –