簡體   English   中英

用於表單驗證的正則表達式

[英]Regex for form validation

您好,我有一個簡單的表單來驗證,我已經問過客戶端驗證了,但是現在的問題是服務器端驗證無法正常工作,這個想法是驗證輸入字段並檢查其長度是否在[5-20]個字符之間,如果不是,則顯示錯誤消息,並阻止表單提交,這將在客戶端發生,然后,如果一切正常,則應將數據發送到服務器,服務器將檢查輸入數據是否僅包含字母(如果是),然后它將回顯“感謝提交表單”,如果未顯示錯誤消息“名稱應僅包含從a到z的字母”,問題出在提交表單后,並且我從客戶端驗證中獲得確定,但從未收到服務器消息之一,請幫助,這里是代碼

 <?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    $name = $_POST['user'];

    if(!preg_match("/^[a-zA-Z ]*$/",$name))
         echo "name must contain only characters";   
       else
         echo "thanks for submitting the form";


}
?>
<!doctype html>
<html>
<head>
    <title>form validation</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>

    <script>
       $( document ).ready(function() 
        {

                $("form").on('submit', myfunction); //<-- listen for form submit, not button click

                function myfunction(evt)
                { //<-- the event object is automatically passed along;
                  //    this is key for suppressing submission
                    name = $("#user").val();
                    nameError = $(".error").first();
                    myNameError = "";

                    if(name.length < 5 || name.length > 20)
                        myNameError += "length should be between 5 and 20 ";
                    else
                        myNameError += "ok"

                    if (myNameError) 
                    {
                        evt.preventDefault(); //<-- suppress submission if error found
                        nameError.html(myNameError);
                    }



                 }


        });
    </script>

    <style>
        .error
        {
            color : red;
            text-transform: capitalize;
            margin-left: 20px;
        }
    </style>
</head>
<body>

    <form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'])?>">
        NAME : <input type="text" name="user" id="user"><span class="error"></span><br />
        <input type="submit" value="Submit" id="submit">
    </form>

</body>
</html>

這絕對是一個問題:

if (name.length < 5 || name.length > 20)
    myNameError += "length should be between 5 and 20 ";
else
    myNameError += "ok"

if (myNameError) 
{
     ...

您正在將myNameError變量設置為字符串,錯誤消息或字符串ok 因此, if (myNameError)始終為true那么您將永遠不會向服務器發出任何POST請求。

要解決此問題,請不要在沒有錯誤的情況下向myNameError添加任何字符串。

暫無
暫無

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

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