2017-11-02 1 views
0

제출 양식을 제출 한 후 내 홈페이지로 리디렉션되는 연락처 양식이 있지만 동일한 이유로 동일한 페이지에 머물러 있습니다. 이메일을 보낸 후 확인을 받고 내 홈페이지로 다시 리디렉션하려고합니다. 나는 PHP와 자바 스크립트를 사용하고있다 ........................................... 문의 양식은 전자 메일을 보내고 있지만 제출 후 응답하지 않습니다.

<div class="col-sm-6 col-sm-offset-3"> 

    <h3>Send me a message</h3> 
    <form role="form" id="contactForm" action="index2.php" method="POST"> 
    <div class="row"> 
      <div class="form-group col-sm-6"> 
       <label for="name" class="h4">Name</label> 
       <input type="text" class="form-control" id="name" placeholder="Enter name" required> 
     </div> 
     <div class="form-group col-sm-6"> 
      <label for="email" class="h4">Email</label> 
      <input type="email" class="form-control" id="email" placeholder="Enter email" required> 
     </div> 
    </div> 
    <div class="form-group"> 
     <label for="message" class="h4 ">Message</label> 
     <textarea id="message" class="form-control" rows="5" 
placeholder="Enter your message" required></textarea> 
    </div> 
    <button type="submit" id="form-submit" class="btn btn-primary btn-lg 
pull-right ">Submit</button> 
<div id="msgSubmit" class="h3 text-center hidden">Message Submitted!</div> 
    </form> 

index2.php

<meta http-equiv="refresh" content="0; url=http://myurl.com/" /> 


</header> 

<?php 
$name = $_POST["name"]; 
$email = $_POST["email"]; 
$message = $_POST["message"]; 

$EmailTo = "[email protected]"; 
$Subject = "New Message Received"; 

// prepare email body text 
$Body .= "Name: "; 
$Body .= $name; 
$Body .= "\n"; 

$Body .= "Email: "; 
$Body .= $email; 
$Body .= "\n"; 

$Body .= "Message: "; 
$Body .= $message; 
$Body .= "\n"; 

// send email 
$success = mail($EmailTo, $Subject, $Body, "From:".$email); 

// redirect to success page 
if ($success){ 
    echo "success"; 
}else{ 
echo "invalid"; 
} 
?> 

JS

$("#contactForm").submit(function(event){ 
// cancels the form submission 
event.preventDefault(); 
submitForm(); 
}); 

function submitForm(){ 
// Initiate Variables With Form Content 
var name = $("#name").val(); 
var email = $("#email").val(); 
var message = $("#message").val(); 

$.ajax({ 
    type: "POST", 
    url: "index2.php", 
    data: "name=" + name + "&email=" + email + "&message=" + message, 
    success : function(text){ 
     if (text == "success"){ 

      formSuccess(); 
     } 
    } 
}); 
} 
function formSuccess(){ 

$("#msgSubmit").removeClass("hidden"); 
} 

var confirmSubmit = true; 

$('form').submit(function(e) { 
    if (confirmSubmit) { 
    e.stopPropagation(); 

if (confirm('Are you sure you want to send this form?')) { 
    confirmSubmit = false; 

    $('form').submit(); 
}else{ 
    alert("The form was not submitted."); 
    } 
    } 
}); 
+0

실제로 홈페이지로 해킹하는 코드가없는 것 같습니다. '''index2'에서 새로 고침이 실행되지 않습니다. –

+0

왜 당신 물건을 복잡하게 했습니까? 대부분의 브라우저와 사용자가 웹 앱을 완벽하게 작동하게하려면 JS를 최소한으로 사용하십시오. 당신이 노력하는 것은 간단하고 간단한 코드로 쉽게 할 수 있습니다. –

답변

0

당신은 실제로 당신의 홈페이지로 돌아 리디렉션 아닙니다. 단지 대신 "성공"의 스크립트의 끝에서 header("Location: http://myurl.com/");을 추가, 오히려 index2.php에 <meta http-equiv="refresh" content="0; url=http://myurl.com/" />을 사용하는 것보다

window.location.replace("index2.php");

0

또는 : 이를 위해 당신은 당신의 제출 함수 뒤에 이런 일을 추가해야합니다 "invalid"메시지. PHP 코드가 "헤더가 이미 전송되었으므로 출력이 온라인으로 시작되었습니다 ..."와 같은 오류를 방지하기 전에 HTML을 모두 제거하십시오.

+0

"위치"란 무엇입니까? 성공 또는 무효 대신에 코드를 추가했는데 아무 것도 변경하지 않았습니까? –

+0

"위치"는 제공된 URL을 열도록 브라우저에 지시하는 HTTP 헤더입니다. 이전 요청에 대한 응답으로 보낼 수 있습니다 - 귀하의 경우, 전자 메일에 대한 데이터가 들어있는 POST 요청. 자세한 내용은 https://en.wikipedia.org/wiki/HTTP_location에서 확인할 수 있습니다. – astax

관련 문제