PHP-유효성 검사가 실패한 필드 및 오류 메시지에 유효한 값이있는 양식 다시 표시

Naznaq

4 개의 텍스트 필드 이름, 이메일, 사용자 이름 및 비밀번호를 가져 오는 PHP 양식을 만들고 이에 대한 유효성 검사를 설정했습니다. 내 코드가 현재 올바르게 확인되고 코드의 유효성 여부가 확인되면 메시지가 표시됩니다. 그러나 제출할 때 올바르게 유효성이 검사 된 필드를 채우고 유효성 검사에 실패한 필드는 그 이유를 자세히 설명하는 오류 메시지와 함께 비어 있도록하고 싶습니다.

지금까지 다음 코드 인 기본 form.php가 있습니다.

    <?php
    $self = htmlentities($_SERVER['PHP_SELF']);
    ?>
    <form action="<?php echo $self; ?>" method="post">
        <fieldset>
        <p>You must fill in every field</p>
        <legend>Personal details</legend>
            <?php
            include 'personaldetails.php';
            include 'logindetails.php';
            ?>
            <div>            
                <input type="submit" name="" value="Register" />
            </div>
        </fieldset>
    </form>
    <?php
    $firstname = validate_fname();
    $emailad = validate_email();
    $username = validate_username();
    $pword = validate_pw();
    ?>

내 functions.php 코드는 다음과 같습니다.

<?php
function validate_fname() {
    if (!empty($_POST['fname']))    {
        $form_is_submitted = true;
        $trimmed = trim($_POST['fname']);
        if  (strlen($trimmed)<=150  && preg_match('/\\s/', $trimmed))   {
            $fname = htmlentities($_POST['fname']);
            echo "<p>You entered full name: $fname</p>";
        }   else    {
                echo "<p>Full name must be no more than 150 characters and must contain one space.</p>";
        }   }
        }

function validate_email() {        
    if (!empty($_POST['email']))    {
        $form_is_submitted = true;
        $trimmed = trim($_POST['email']);
        if  (filter_var($trimmed, FILTER_VALIDATE_EMAIL))   {
            $clean['email'] = $_POST['email'];              
            $email = htmlentities($_POST['email']);

            echo "<p>You entered email: $email</p>";
        }   else    {
                echo "<p>Incorrect email entered!</p>";
        }   }   
        }

function validate_username() {
    if (!empty($_POST['uname']))        {
        $form_is_submitted = true;
        $trimmed = trim($_POST['uname']);
        if  (strlen($trimmed)>=5 && strlen($trimmed) <=10)  {
            $uname = htmlentities($_POST['uname']);
            echo "<p>You entered username: $uname</p>";
        }   else    {
                echo "<p>Username must be of length 5-10 characters!</p>";
        }   }   
    }

function validate_pw()  {
    if (!empty($_POST['pw']))   {
        $form_is_submitted = true;
        $trimmed = trim($_POST['pw']);
        if  (strlen($trimmed)>=8 && strlen($trimmed) <=10)  {           
            $pword = htmlentities($_POST['pw']);
            echo "<p>You entered password: $pword</p>";
        }   else    {
                echo "<p>Password must be of length 8-10 characters!</p>";      
        }   }
    }
?>

제출을 눌렀을 때 유효한 입력을 유지하고 오류 메시지를 반환하는 잘못된 입력을 비우려면 어떻게해야합니까?

가급적이면 초기 if (! empty)에 대한 대체 else 조건이 있기를 바랍니다. 처음에는 이것을 가지고 있었지만 오류 메시지와 함께 양식이 시작된다는 것을 알았습니다.

마지막으로이 양식을 통해 가입 한 후 로그인 세부 정보를 확인하는 데 사용할 유효한 정보를 외부 파일에 기록하려면 어떻게해야합니까?

어떤 도움이라도 대단히 감사합니다.

게리

오류에 대해 별도의 변수를 사용하고 오류 메시지를 input필드에 출력하지 마십시오 .

이를 위해 global변수를 사용할 수 있지만 나는 그것들을 좋아하지 않습니다.

login.php

<?php 
$firstname = '';
$password  = '';
$username  = '';
$emailadd  = '';
$response  = '';
include_once('loginprocess.php');
include_once('includes/header.php);
//Header stuff
?>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"], ENT_QUOTES, "utf-8");?>" method="post">
    <fieldset>
        <p>Please enter your username and password</p>
    <legend>Login</legend>
        <div>
        <label for="fullname">Full Name</label>
            <input type="text" name="fname" id="fullname" value="<?php echo $firstname ?>" />
        </div>
        <div>
         <label for="emailad">Email address</label>
         <input type="text" name="email" id="emailad" value="<?php echo $emailadd; ?>"/>
        </div>
        <div>
        <label for="username">Username (between 5-10 characters)</label>
        <input type="text" name="uname" id="username" value='<?php echo $username; ?>' />
        </div>
        <div>            
        <label for="password">Password (between 8-10 characters)</label>
        <input type="text" name="pw" id="password" value="<?php echo $password; ?>" />
        </div>
        <div>            
            <input type="submit" name="" value="Submit" />
        </div>
    </fieldset>
</form>
<?php
//Output the $reponse variable, if your validation functions run, then it
// will contain a string, if not, then it will be empty.
if($response != ''){
    print $response;         
}     
?>
//Footer stuff

loginprocess.php

//No need for header stuff, because it's loaded with login.php
if($_SERVER['REQUEST_METHOD'] == 'POST'){//Will only run if a post request was made.
    //Here we concatenate the return values of your validation functions.
    $response .= validate_fname();
    $response .= validate_email();
    $response .= validate_username();
    $response .= validate_pw();
}    
//...or footer stuff.

functions.php

function validate_fname() {
    //Note the use of global...
    global $firstname;
    if (!empty($_POST['fname']))    {
        $form_is_submitted = true;
        $trimmed = trim($_POST['fname']);
        if(strlen($trimmed)<=150  && preg_match('/\\s/', $trimmed)){
            $fname = htmlentities($_POST['fname']);
            //..and the setting of the global.
            $firstname = $fname;
            //Change all your 'echo' to 'return' in other functions.
            return"<p>You entered full name: $fname</p>";
        } else {
            return "<p>Full name must be no more than 150 characters and must contain one space.</p>";
        }
    }
}

나는 형태와 같은 작은 것에 포함을 사용하는 것을 제안하지 않을 것입니다. 모든 '디스플레이'코드를 하나의 파일에 보관하고 범위가 변경된 경우에만 파일을 분할하고 함수에 포함을 사용하십시오. 즉, functions.php 파일은 현재 유효성 검사를 처리하지만 나중에 실제 로그인 또는 등록 프로세스를 처리하는 새 포함을 만들 수 있습니다.

http://www.php.net/manual/en/language.operators.string.php 합치에 대해 알아.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

PHP 양식 유효성 검사 및 오류 메시지

분류에서Dev

양식 유효성 검사는 모든 필드에 대해 동일한 오류 메시지를 표시합니다.

분류에서Dev

두 필드의 유효성 검사에 대한 유효성 검사 메시지를 표시하고 양식을 유효하지 않게 만드는 방법

분류에서Dev

Rails 양식 유효성 검사에 오류 메시지가 표시되지 않고 빈 필드가 사용됨

분류에서Dev

PHP 만 사용하여 동일한 페이지에 양식 유효성 검사 오류 메시지를 표시합니까?

분류에서Dev

유효성 검사 PHP 양식의 드롭 다운 메뉴에 "* 필수 필드"오류 메시지를 표시하려면 어떻게해야합니까?

분류에서Dev

jquery 동적 필드 이름에 대한 표시 오류 유효성 검사

분류에서Dev

mvc 양식 필드에 대한 유효성 검사 메시지 위치 지정

분류에서Dev

Symfony 2.6 양식 유효성 검사 및 오류 메시지

분류에서Dev

동일한 페이지에 django 양식 유효성 검사 오류를 표시 할 수 없습니다.

분류에서Dev

텍스트 양식 필드 유효성 검사기 오류 메시지가 표시되지 않음

분류에서Dev

AngularJS 양식 유효성 검사 : 제출을 클릭 한 후 확인란에 대한 오류 메시지 표시

분류에서Dev

Zend Framework 2는 필요한 사용자 지정 유효성 검사 오류 메시지 만 표시합니다.

분류에서Dev

유효성 검사 이벤트 및 ErrorProvider를 사용한 유효성 검사-오류 요약 표시

분류에서Dev

유효성 검사 양식 및 필드 유효성 검사를위한 두 가지 이벤트

분류에서Dev

둘 이상의 필드에 대한 공유 유효성 검사 오류 메시지

분류에서Dev

Capybara가있는 Rails 유효성 검사 및 오류 메시지

분류에서Dev

내 코드에서 내가 뭘 잘못했는지 모르겠지만 PHP 양식 유효성 검사에 대한 오류 메시지가 작동을 멈췄습니다.

분류에서Dev

양식이 제출되거나 필드가 더러울 때 유효성 검사 메시지 표시-제출할 때 사용자 지정 및 기본값 모두 표시되는 유효성 검사 메시지

분류에서Dev

중첩 된 양식에 대한 유효성 검사 오류 표시

분류에서Dev

동적 오류 메시지가있는 angularJs 양식 유효성 검사

분류에서Dev

양식 제출시 이메일 값 유효성 검사 오류

분류에서Dev

드롭 다운에 PHP 유효성 검사 오류가 표시되지 않음

분류에서Dev

jQuery 유효성 검사 필드 : 유효한 정보를 입력 할 때 사라지는 오류 메시지 가져 오기

분류에서Dev

양식 유효성 검사-여러 오류 메시지가 표시됨

분류에서Dev

jQuery 유효성 검사에 대한 다른 오류 메시지

분류에서Dev

데이터 유효성 검사 및 데이터가 유효하지 않은 경우 오류 메시지 표시

분류에서Dev

XPage : 기본 유효성 검증 오류 메시지 사용자 정의 / 지역화 (이 필드는 유효한 정수가 아님)

분류에서Dev

Symfony 양식 유효성 검사 오류가 두 번 표시됨

Related 관련 기사

  1. 1

    PHP 양식 유효성 검사 및 오류 메시지

  2. 2

    양식 유효성 검사는 모든 필드에 대해 동일한 오류 메시지를 표시합니다.

  3. 3

    두 필드의 유효성 검사에 대한 유효성 검사 메시지를 표시하고 양식을 유효하지 않게 만드는 방법

  4. 4

    Rails 양식 유효성 검사에 오류 메시지가 표시되지 않고 빈 필드가 사용됨

  5. 5

    PHP 만 사용하여 동일한 페이지에 양식 유효성 검사 오류 메시지를 표시합니까?

  6. 6

    유효성 검사 PHP 양식의 드롭 다운 메뉴에 "* 필수 필드"오류 메시지를 표시하려면 어떻게해야합니까?

  7. 7

    jquery 동적 필드 이름에 대한 표시 오류 유효성 검사

  8. 8

    mvc 양식 필드에 대한 유효성 검사 메시지 위치 지정

  9. 9

    Symfony 2.6 양식 유효성 검사 및 오류 메시지

  10. 10

    동일한 페이지에 django 양식 유효성 검사 오류를 표시 할 수 없습니다.

  11. 11

    텍스트 양식 필드 유효성 검사기 오류 메시지가 표시되지 않음

  12. 12

    AngularJS 양식 유효성 검사 : 제출을 클릭 한 후 확인란에 대한 오류 메시지 표시

  13. 13

    Zend Framework 2는 필요한 사용자 지정 유효성 검사 오류 메시지 만 표시합니다.

  14. 14

    유효성 검사 이벤트 및 ErrorProvider를 사용한 유효성 검사-오류 요약 표시

  15. 15

    유효성 검사 양식 및 필드 유효성 검사를위한 두 가지 이벤트

  16. 16

    둘 이상의 필드에 대한 공유 유효성 검사 오류 메시지

  17. 17

    Capybara가있는 Rails 유효성 검사 및 오류 메시지

  18. 18

    내 코드에서 내가 뭘 잘못했는지 모르겠지만 PHP 양식 유효성 검사에 대한 오류 메시지가 작동을 멈췄습니다.

  19. 19

    양식이 제출되거나 필드가 더러울 때 유효성 검사 메시지 표시-제출할 때 사용자 지정 및 기본값 모두 표시되는 유효성 검사 메시지

  20. 20

    중첩 된 양식에 대한 유효성 검사 오류 표시

  21. 21

    동적 오류 메시지가있는 angularJs 양식 유효성 검사

  22. 22

    양식 제출시 이메일 값 유효성 검사 오류

  23. 23

    드롭 다운에 PHP 유효성 검사 오류가 표시되지 않음

  24. 24

    jQuery 유효성 검사 필드 : 유효한 정보를 입력 할 때 사라지는 오류 메시지 가져 오기

  25. 25

    양식 유효성 검사-여러 오류 메시지가 표시됨

  26. 26

    jQuery 유효성 검사에 대한 다른 오류 메시지

  27. 27

    데이터 유효성 검사 및 데이터가 유효하지 않은 경우 오류 메시지 표시

  28. 28

    XPage : 기본 유효성 검증 오류 메시지 사용자 정의 / 지역화 (이 필드는 유효한 정수가 아님)

  29. 29

    Symfony 양식 유효성 검사 오류가 두 번 표시됨

뜨겁다태그

보관