2012-07-15 13 views
1

두 페이지로 구성된 사용자 등록 양식의 입력을 확인하고 있습니다. $_POST 입력이 유효성 검사를 통과하면 $valid 변수가 true으로 설정됩니다.2 단계 양식의 유효성을 검사하는 방법은 무엇입니까?

최초 등록 양식의 유효성이 성공적으로 확인 된 경우에만 사용자를 두 번째 등록 양식으로 가져 오는 방법 (예 : $validtrue)

+0

를, 등록 절차에 대한 도움의 큰 거래 될 것입니다 – swapnilsarwe

+0

이외 당신이 사용자를 보내야 코드를 보지 않고 아무 말도 꽤 하드 제출 된 데이터가 유효하지만 이미 알고 있다면 즉시 두 번째 단계로 넘어갑니다. – JJJ

답변

1

대신 자바 스크립트를 사용하여 양식을 확인할 수 추가, 다음 형태로 onsubmit="validateForm()"을 추가하고 validateForm() 기능은 true 또는 false를 반환합니다. false를 반환하면 양식이 제출되지 않습니다.

PHP로 유효성을 검사하려면 먼저 양식을 제출해야하며, 유효하지 않으면 원래 양식 페이지로 리디렉션하지만 제출 된 값을 다시 설정해야합니다. 내가해야 할 일은 먼저 페이지 상단의 양식 필드에 대한 모든 변수를 인스턴스화하고 공백 값으로 설정하는 것입니다. 그런 다음 valid = false와 같은 플래그에 대한 섹션 검사를 수행하고, 그렇다면 해당 변수를 게시 된 값으로 업데이트하십시오. 예를 들어

는 :

<form name="myForm" action="" method="post"> 
    <input type="text" name="first_name" value="<?=echo $first_name?>"> 
    <input type="text" name="last_name" value="<?=echo $last_name?>"> 
    <input type="text" name="email" value="<?=echo $email?>"> 
    <input type="text" name="phone" value="<?=$phone?>"> 
</form> 

은 상기 예에만 로직의 예시 목적을위한 것이주의 :
<?php 
$first_name = ''; 
$last_name = ''; 
$email = ''; 
$phone = ''; 
$valid = true; 

// Check if valid: 
if (isset($_POST['first_name'])) { 
    // Validate string and if bad valid = false. 
    $valid = false; 

    // Set value from $_POST; 
    $first_name = $_POST['first_name']; 
} 
if(isset($_POST['email'])) { 
    // Perform validation. 

    $valid = true; // else false 

    $email = $_POST['email']; 
} 

// Check valid flag. 
if (!valid) { 
    // Display some error to the user. 
    $message = 'There was something wrong.'; 
} else { 
    // Tedirect to the destination page. 
    // header(..); 
} 

그 다음 페이지의 상단 변수 필드의 값을 설정. 이 취약점은 XSS 및 기타 유형의 취약점을 노출합니다.

1

$_POST을 받고 header을 사용하여 유효성 검사 리디렉션 사용자를 두 번째 등록 페이지로 전달합니다.

그리고 그 일을하기 전에

$_SESSION 및 2 차 등록 페이지에 액세스합니다에서 true 중 하나

  1. 에 유효한 $의 값을 업데이트 할
  2. 또는 당신은 당신이하여 GET 매개 변수로 넣을 수 있습니다 원하는 경우 이 header('Location: http://example.com/2ndregistrationstep.php?valid=true')
+0

사용자가 GET 매개 변수를 변경할 수 있기 때문에 양식의 상태를 GET 매개 변수로 전달하면 안됩니다. 세션 상태에 의존하는 경우 만료 된 세션의 사례를 처리하고 있는지 확인하십시오. – Gajus

0

귀하의 스크립트에 등록 양식을 직접 인쇄한다고 가정합니다. 이유는 단순 논리를 추가하지 : 당신이 클라이언트 사이트 확인을 위해 자바 스크립트를 사용 해달라고 이유

<?php 

if (isset($_POST)) { 
    // .. validate, and then 
    $_SESSION['valid'] = TRUE; // or FALSE 
} 

if (empty($_SESSION['valid'])) { 
    // .. print first step 
} else { 
    // .. print second step 
} 
관련 문제