簡體   English   中英

如果存在錯誤,使用PHP +驗證表單不會刷新

[英]Validate form with PHP + does not refresh if error is present

我試圖在按下提交時用php驗證我的表單,我想要以下內容:

用戶按提交,如果沒有發現錯誤,則處理注冊表格並將數據發送到數據庫。

如果存在錯誤,則頁面不會刷新,並顯示錯誤控制台。

每次用戶單擊提交時,如果發現錯誤,則將刪除舊消息,並將新消息發布到錯誤控制台div中。

我寫了表單(validation(php),Error console div&CSS)的所有代碼。 我只是不知道如何將它們整合在一起

就像是:

if ( ($username && $email) != 0 ) { error console + remain on same page } else {send to db};

IMG
(來源: 1.ii.gl

PHP驗證碼

        $username = 0;

        $uservar = $_POST['username'];

        if (empty($uservar))
    {
        $username = 1;
    } 
else if (!preg_match("/^\w{5,20}$/",$uservar))
    {   
        $username = 2;
    }


    if ( ($username) != 0 ) {

    echo "<h4 class='error2'><img src='http://s28.postimg.org/ql0x06555/warning6.png' alt='Error'>  Error Console</h4> </br>";


switch ($username) {

    case 1:
        echo "<img src='http://s27.postimg.org/vjxntq073/sign5.png' alt='Error'>";
        echo "     The Field 'Username' cannot be left blank";
        break;
    case 2:
        echo "<img src='http://s27.postimg.org/vjxntq073/sign5.png' alt='Error'>";
        echo "     Invalid 'Username' Format - Please use Letters & Numbers only (5-20 Characters)";
        break;      
}}

</div>

形成:

<form id="registration-form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">


<input type="text" name="username" id="username" placeholder="Username">

<button type="submit" name="submit" id="submit" class="button-submit">Submit</button>


</form>
  1. 從您的html拆分您的主要php

  2. html中的php僅處理簡單的邏輯和顯示結果

作為快速解答,請檢查以下代碼:

<?php

function valiation(){
    $aryMsg = array();
    $aryExport = array();
    if( !isset( $_POST['_submit'] ) ){
        //no submit
        return array( $aryMsg, $aryExport );
    }

    $aryPostFieldWhiteList = array( 'username' );
    //1. post content filter
    //make sure pass all the field you need from $_POST to $aryExport
    foreach( $aryPostFieldWhiteList as $strField ){
        $aryExport[$strField] = htmlentities( $_POST[$strField], ENT_QUOTES );
    }

    //2. post content filter
    //...
    //if username is wrong fill $aryMsg['username'] ... etc

    //3. check validation result
    if( sizeof($aryMsg) ){
        //means not pass the validation, return error message and filtered data
        return array( $aryMsg, $aryExport );
    }

    //4. past validation

    //4.1 all db, to insert result
    //db insert ...etc


    //4.2 page redirect to thank you page
    header( 'Location: /thankyou.php' );

    die();
}

list( $aryMsg, $aryPost ) = valiation();
?>
<html>
    <head>
    ...
    </head>
    <body>
    <?php if( is_array( $aryMsg ) && sizeof( $aryMsg ) ):?>
        <h4 class='error2'><img src='http://s28.postimg.org/ql0x06555/warning6.png' alt='Error'>  Error Console</h4>
        <ul class="error_msg">
        <?php foreach( $aryMsg as $strMsg ):?>
            <li><?php echo $strMsg;?></li>
        <?php endforeach;?>
        </ul>
    <?php endif;?>

    <form id="registration-form" action="" method="post">

        <input type="text" name="username" id="username" placeholder="Username" value="<?php echo $aryPost['username'];?>">

        <button type="submit" name="_submit" id="submit" class="button-submit">Submit</button>

    </form>

    </body>
</html>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM