2014-01-13 3 views
-2

이것은 내가 한마디 한 것입니다 :PHP 유효성 검사가 성공적으로 완료되면 양식 데이터를 자동 제출합니까?

<?php 
// define variables and initialize with empty values 

//error variables 
$agentNameErr = ""; 

//non-error variables 
$agentemail = ""; 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 

if (empty($_POST["agentname"])) { 
     $agentNameErr = "Missing"; 
    } 
else { 
     $agentname = $_POST["agentname"]; 
    } 
} 

// form 

<form method="POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" > 

<input name="agentname" type="text" id="agentname" autocomplete="on" placeholder="Agent Name" value= "<?php echo htmlspecialchars($agentname);?>" /> 

//only shows up if $agentNameErr is assigned the value of "Missing" 

<span class="error"><?php echo $agentNameErr;?></span> 

</form> 

$agentname은 (공백) 잘못된 경우 그것은 확인합니다. 비어 있지 않으면 진행 방법을 모르겠습니다. 나는 추가 된 사용자 입력없이 모든 정보를 리뷰 페이지에 자동으로 제출하여 사용자가 이름의 철자가 정확한지 확인할 수 있기를 원합니다. 그리고 나서 그들은 최종 제출을 할 수 있습니다.

나는 MySQL을 모른다.

영어 정상에서 :

//user presses the submit button 

if ($agentname has error) 
    stay on page and display errors 
else 
    submit automatically to next page (order review page for visual checking) 

내가 "다음 페이지로 자동으로 전송"을합니까?

+0

이 양식을 본인에게 게시하고 있습니까? 다음 단계가되기를 원하면'action' 속성을 다음 페이지로 설정하고 거기에서 유효성 검사를 수행하고 올바르지 않으면이 페이지로 다시 리디렉션해야합니다. – mituw16

+0

사용자가 다음 페이지로 이동하거나 데이터를 데이터베이스에 입력하도록 하시겠습니까? 다음 페이지로 자동 제출하면 무엇을 의미합니까? – ChaseC

+1

@Ed, javascript가 비활성화 된 경우 (드물지만 자신을 보호해야 함)? js와 결합 된 서버 측 유효성 검사가 좋습니다. js 확인에만 의존하는 것은 나쁜 습관입니다. 클라이언트에서는 – mituw16

답변

0

PHP 세션을 사용하십시오.

if ($agentname has error) 
    stay on page and display errors 
else 
{ 
    $_SESSION['key1'] = 'something' 
    $_SESSION['key2'] = 'something else' 
    ... 
    header('location: ' . $next_page); 
} 

당신이 PHP 세션을 사용하는 방법을 모르는 경우

는 예 here

+0

. 따라서 헤더를 변경하여 다음 페이지로 이동합니다. 헤더 접근 방식을 사용할 때 단점이 있습니까? 많은 양의 데이터가 전송됩니다 (예 : 20 개 이상의 양식 항목). – fuzzybabybunny

+0

내가 생각할 수있는 단점이 없습니다. header 함수를 호출하기 전에 html을 표시하지 않도록하십시오. 그렇지 않으면 헤더가 이미 전송되었다는 경고를받을 수 있습니다. 데이터 크기에 관한 한, 게시 할 수있는 데이터의 양은 php.ini 파일에 의해 설정되며 기본값은 8MB (일반적으로 충분) 이상이며 데이터가 서버에 게시되는 한 세션 변수에 저장되는 데 문제가 없어야합니다. – elitechief21

0

이 시도 참조 :

<?php 

    $agentNameErr = ""; 
    $agentemail = ""; 

    if ($_SERVER["REQUEST_METHOD"] == "POST") { 

     if (empty($_POST["agentname"])) { 
      $agentNameErr = "Missing"; 
     } else { 
      $agentname = $_POST["agentname"]; 
      header("Location: nextpage.php?agent=".$agentname); 
     } 
    } else { 

    ?> 

    <form method="POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" > 

    <input name="agentname" type="text" id="agentname" autocomplete="on" placeholder="Agent Name" value= "<?php echo htmlspecialchars($agentname);?>" /> 

    //only shows up if $agentNameErr is assigned the value of "Missing" 
    <?php if(!empty($agentNameErr)) { ?> 
    <span class="error"><?php echo $agentNameErr;?></span> 
    <?php } ?> 
    </form> 
<?php } ?> 
+0

예입니다.agentname을 다른 페이지로 보내려면 session을 사용하거나 fsockopen을 사용하여 POST 메소드를 통해 데이터를 전송하십시오 (이 데이터가 정말로 안전하고 바이트 교환과 같은 암호화 알고리즘을 사용할 수도 있음). – Stafox

0

은 간단하게. 양식의 전체 내용을 캡처하고 세션 변수에 저장하십시오.

$agentNameErr = ''; 
$agentemail = ''; 
if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    if (empty($_POST['agentname'])) { 
     $agentNameErr = 'Missing'; 
    } else { 
     $_SESSION['agent-form'] = $_POST; 
     // Move to next page 
     header('Location: nextpage.php'); 
     exit; 
    } 
} 

일단 다음 페이지로 전달되면 세션 변수에서 양식 데이터에 액세스 할 수 있습니다.

// Entire contents of form 
print_r($_SESSION['agent-form']); 
// "agentname" data 
print_r($_SESSION['agent-form']['agentname']);