Nasıl bir formu doğrulamak olabilir, ama bu eylem aynı forma dönmek var bir hata idi?

5 Cevap php

İşte benim registerFormOne.php kod:

<?php session_start();
require("validationLibrary.php");
$validForm = true;
?>

<html>
    <head>
        <title>Registration Form - 1 of 2</title>
    </head>

    <body>
        <h1>Registration - Part 1 of 2</h1>
        <p>Please fill in all the required information before submitting the information.</p>        
        <form action="registerFormTwo.php" method="post">
            <dt>First Name:</dt>
                <dd><input type="text" name="firstName" /></dd><br />
                <dd>
                    <?php
                        if(isset($_POST['firstName'])){
                            if(!validateRequired($_POST['firstName'])){
                                $validForm = false;
                            }
                        }
                    ?>
                </dd><br />

            <dt>Last Name:</dt>
                <dd><input type="text" name="lastName" /></dd><br />
                <dd>
                    <?php
                        if(isset($_POST['lastName'])){
                            if(!validateRequired($_POST['lastName'])){
                                $validForm = false;
                            }
                        }
                    ?>
                </dd><br />

            <dt>EMail:</dt>
                <dd><input type="text" name="email" /></dd><br />
                <dd>
                    <?php
                        if(isset($_POST['email'])){
                            if(!validateEmail($_POST['email'])){
                                $validForm = false;        
                            }
                        }                        
                    ?>
                </dd><br />

            <dt>Age:</dt>
                <dd><input type="text" name="age" /></dd><br />
                <dd>
                    <?php
                        if(isset($_POST['age'])){
                            if(!validateNumber($_POST['age'])){
                                $validForm = false;        
                            }
                        }                        
                    ?>
                </dd><br />

            <dt>Date of Birth:</dt>
                <dd><input type="text" name="dateOfBirth" /></dd><br />
                <dd>
                    <?php
                        if(isset($_POST['dateOfBirth'])){
                            if(!validateRequired($_POST['dateOfBirth'])){
                                $validForm = false;        
                            }
                        }                        
                    ?>
                </dd><br />

            <dt>Gender:</dt>
                <dd>Masculino <input type="radio" value="M" name="gender" checked/> &nbsp;&nbsp;
                Femenino <input type="radio" value="F" name="gender" />
                </dd>            

            <dt><input type="submit" /></dt>            
        </form>
    </body>
</html>

Ve burada bir sınıf olarak kullanmak benim validationLibrary.php bulunuyor:

<?php
function validateRequired($field){
    if($field == ""){
        echo "Information for this field is required.";
        return false;
    }
    else{
        return true;
    }
}

function validateNumber($field){
    if(!is_numeric($field)){
        echo "Only numeric values are allowed in this field.";
        return false;
    }
    else{
        return true;
    }
}

function validateEmail($field){
    $regexp = "/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z-][0-9a-zA-Z-]+\.)+[a-zA-Z](2,6)$/";

    if(!preg_match($regexp,$field)){
        echo "Please type in a valid email address.";
        return false;
    }
    else{
        return true;
    }
}

?>

Ben FormOne tekrar yeniden olması gerekir, ve değişken $ validForm false ise formTwo geçmeyin.

Ben bunu nasıl fikir var. Yardımlarınız için çok teşekkür ederim. :)

5 Cevap

2. formu değil, kendisine göndermek için formun eylem niteliğini değiştirin. Doğrulama kodu geçtiği bir yer başlığı ile # 2 oluşturmak yönlendirmek yalnızca if ().

For you, as a beginner developer, it would be so much easier to use ValidForm Builder. Check http://validformbuilder.org

Bu size çok daha fazla söz ve konum tüm bu özelliklere sahip bir açık kaynak Formu oluşturma aracı bulunuyor.

, Sadece kullanışlı bir ipucu (bir açık kaynak paketi kullanmak için ücretsiz beri) bu ticari olarak verilmemiştir.

Bilmem ne bunu yapmak için "en iyi" yoludur, ama ne yapmam ben sayfada herhangi bir içerik koymak önce form giriş kontrol, sonra aynı sayfaya bir formun eylem dönüş yapmak olduğunu - Yanlış bir şey varsa, ben hiçbir şey yapmak, ve hiçbir şey yanlış ise, ben kullanmak header('Location: formTwo.php') devam :) başlığını değiştirdikten sonra değişkenleri atarsanız size değişkenler iletebilirsiniz - I $_POST değerleri ile değerlerini önceden doldur edebilirsiniz.

Böyle bir şey:

<?php

$errors = array();

if (isset($_POST['submit']))
{
    // validate and possibly populate the $errors array

    if (empty($errors))
    {
        // do something with the data
        header('Location: target.php');
        exit;
    }
}

?>
<html>
<?php if (!empty($errors)) : ?>        <?php echo implode(', ', $errors) ?>
<?php endif; ?>
    <form>
        <!-- fill form elements with values if they are set -->
        ...
    </form>
</html>

Form doğrulama için javascript kullanılmasına karşı çıkıyorlar? Eğer değilse o sunucu ve arkasına bir gezi kurtaracak ve formun sayfasını ayıracak problemi önlenir.