2012-11-19 4 views
-1

양식 입력이 form.php 페이지에 표시되지 않고 양식 유효성 검사가 무효화됩니다. 오류는 form.php의 모든 내 변수에 대해 정의되지 않은 변수를 말합니다. form.php에 양식 입력을 표시하도록 내 코드에서 편집해야 할 내용을 알려주십시오. 그것은 같은 페이지에서 사용할 때 작동하지만 오히려 다른 페이지에 표시합니다.체크 박스 값이 표시되지 않음


편집

덕분에 지금까지하지만 난 체크 박스의 값을받는 사람 (관리자 또는 컨텐츠 편집기)에서 표시 "배열"을 표시하거나 할을 얻을 수 없다 "A" . 당신이 header("Location:")form.php에 모든 POST 값이 손실 될 때

contact.php는

<?php 
    $errnam = ""; 
    $errmail = ""; 
    $errsub = ""; 
    $errrec = ""; 
    $hasErrors = false; 

    if(isset ($_POST['submitted'])){ 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $subject = $_POST['subject']; 
    $recipient = $_POST['recipient']; 
    $message = $_POST['message']; 



      if(preg_match("/^[\w\-'\s]/", $_POST['name'])){ 
       $name = $_POST['name']; 
      } 
      else{ 
       $errnam ='<strong>Please enter a name.</strong>'; 
       $hasErrors = true; 
      } 

      if (preg_match("/^[\w.-_][email protected][\w.-]+[A-Za-z]{2,6}$/i", $email)){ 
       $email = $_POST['email']; 

      } 
      else{ 
       $errmail = '<strong>Please enter a valid email.</strong>'; 
       $hasErrors = true; 
      } 


      if(preg_match("/^[\w\-'\s]/", $_POST['subject'])){ 
       $subject = $_POST['subject']; 

      } 
      else{ 
       $errsub = "<strong>Please enter a subject.</strong>"; 
       $hasErrors = true; 
      } 

      if (!empty($_POST['recipient'])) { 
      for ($i=0; $i < count($_POST['recipient']);$i++) { 
       $recipient = $_POST['recipient']; 
        } 
      }else{ 
      $errrec = "<strong>Please select a recipient</strong>"; 
      $hasErrors = true; 
      } 
       $message = $_POST['message']; 
    } 

    if ($hasErrors){ 
     echo "<strong>Error! Please fix the errors as stated.</strong>"; 
    }else{ 
     header("Location: form.php?name=".$name."&email=".$email."&subject=".$subject. "&recipient=".$recipient. "&message=".$message); 

    exit(); 

} 
?> 

form.php

<?php 
$name = $_GET['name']; 
$email = $_GET['email']; 
$subject = $_GET['subject']; 
$recipient = $_GET['recipient']; 
$message = $_GET['message']; 

echo "<h2>Thank You</h2>"; 
echo "<p>Thank you for your submission. Here is a copy of the details that you have sent.</p>"; 
echo "<strong>Your Name:</strong> ".$name. "<br />"; 
echo "<strong>Your Email:</strong> ".$email. "<br />"; 
echo "<strong>Subject:</strong> ".$subject. "<br />"; 
echo "<strong>Recipient:</strong>" .$recipient. "<br />"; 
echo "<strong>Message:</strong> <br /> " .$message; 
?> 
+1

어디서 형태입니까? –

+0

print_r ($ _ POST); // 값이 게시인지 여부를 확인하려면 –

답변

2

문제입니다. 헤더와 함께 다시 보내거나 GET으로 수정하고 다시 검색해야합니다. 하나의 페이지에서 둘 (contact.php와 form.php)을 갖는 것이 더 효율적이어야합니다. 이렇게하면 양식 데이터를 한 번만 보내면됩니다.

POST 값을 form.php에 GET으로 보낼 수 있습니다.

contact.php :

header("Location: form.php?name=".$name."&email=".$email."&subject=".$subject."&message=".$message); 

form.php (값을 검색하는) : 당신이 경우

$name = $_GET['name']; 
$email = $_GET['email']; 
$message = $_GET['message']; 
$subject = $_GET['subject']; 
+0

헤더를 다시 보내는 방법은 무엇입니까? – user1811235

+0

Jacob에 의해 아래 명시된 방법을 사용하거나 GET 매개 변수에 정보를 추가 할 수 있습니다.두 번째 방법을 반영하여 내 의견을 수정했습니다. –

+0

감사합니다. 나는이 방법이 내가 가장 좋아하는 방법이라고 생각한다. – user1811235

0

이 contact.php

<form action="form.php"> 
0

에 양식에 조치를 부여 양식 요소를 표시하려면이 접근 방식을 사용해야합니다.

<form method="POST" action="contact.php"> 
Email<input type="text" name="email"> 
....... 
....... 
....... 
// All elements 
</form> 

이 정보는 도움이 될 수 있습니다. 당신이 form.phpcontact.php에서 데이터를 전송하려는 경우

2

당신은 다음과 같이 사용한다 :

contact.php을

$data = urlencode(
     serialize(
      array(
        "name" => $name, 
        "email" => $email, 
        "subject" => $subject, 
        "message" => $message) 
       )); 

header('Location: form.php?data=' . $data); 

form.php

$data = unserialize(urldecode($_GET['data'])); 

$name = $data["name"]; 
$email = $data["email"]; 
$subject = $data["subject"]; 
$message = $data["message"]; 

이것은 데이터 배열을에서 직렬화합니다.다음 URL을 인코딩하고 form.php에 GET 변수로 보냅니다. 그 후, form.php URL은 사용하기 위해 데이터를 디코딩하고 비 직렬화합니다.

관련 문제