Avatar billede palito Nybegynder
20. april 2006 - 17:16 Der er 1 kommentar

Lave Valideringsfunktioner

Hvilke valideringsfunktioner har jeg brug for på et site - og hvordan skal de se ud?

Jeg skal blandt andet bruge følgende funktioner:

tjekke om det er en email
tjekke om det er en ip-adresse
tjekke om det er et tal
tjekke om det er et gyldigt brugernavn (A-Za-z0-9)
.. (og hvad jeg ellers kunne få brug for)

Desuden vil jeg gerne høre hvornår man kunne komme ud for at få brug for unescape(det modsatte af addslashes)

Og er det bedre at lave sin egen tjek-om-det-er-tal-funktion, bruge is_numeric() eller ctype_digit() - eller de andre indbyggede funktioner.. og det smame gælder med at tjekke om det er et gyldigt brugernavn, der kan man jo ogås bare bruge ctype_alnum()
------ hvad ville i forslå?
Avatar billede drbean Nybegynder
20. april 2006 - 19:34 #1
Jeg har lavet denne klasse som jeg bruger til PHP5.

Håber du kan bruge den.

<?php

define('FV_TYPE_EMAIL', 1);
define('FV_TYPE_PASSWORD', 2);
define('FV_TYPE_PASSWORD_STRONG', 3);
define('FV_TYPE_PHONENUMBER', 4);
define('FV_TYPE_ZIPCODE', 5);
define('FV_TYPE_FIELD', 6);
define('FV_TYPE_USERNAME', 7);

class CFormValidator
{

    function ValidateInput($sInput, $iType, $sDescription = '')
    {
        // Tjekker om parameter 2 er valid
        if(!is_numeric($iType))
        {
            return 'Parameter skal være et tal';
        }
        switch($iType)
        {
            case FV_TYPE_EMAIL:
            {
                $this->ValidateEmail($sInput);
                break;
            }
            case FV_TYPE_PASSWORD:
            {
                $this->ValidatePassword($sInput);
                break;
            }
            case FV_TYPE_PASSWORD_STRONG:
            {
                $this->ValidateStrongPassword($sInput);
                break;
            }
            case FV_TYPE_PHONENUMBER:
            {
                $this->ValidatePhoneNumber($sInput);
                break;
            }
            case FV_TYPE_ZIPCODE:
            {
                $this->ValidateZipcode($sInput);
                break;
            }
            case FV_TYPE_FIELD:
            {
                $this->ValidateField($sInput,$sDescription);
                break;
            }
            case FV_TYPE_USERNAME:
            {
                $this->ValidateUsername($sInput);
                break;
            }
        }
    }
   
    /*
   
    Validerer en emailadresse baseret ud fra RFC 2822 (http://www.ietf.org/rfc/rfc2822.txt)
    */
    function ValidateEmail($sEmail)
    {
        // Validerer syntaxen på email adressen med et regulært udtryk
        if(!eregi('^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$', $sEmail))
        {
            return 'Email ikke gyldig';
        }
        list($sUsername,$sDomainTLD) = split('@',$sEmail);
        // Slår domainet op på DNS serveren
        if(!getmxrr($sDomainTLD,$aMXRecords))
        {
            return 'Domainet findes ikke';
        }
        return TRUE;
    }
   
    /*
    <functiondescription>
    Validerer kodeordet, ser om det er 6 karakterer langt, eller længere
    </functiondescription>
    */
    function ValidatePassword($sPassword)
    {
        // Passwordet er for kort
        if(strlen($sPassword) < 6)
        {
            return 'Kodeord er for kort. Det skal være mindst 6 karakter';
        }
        return TRUE;
    }
   
   
    /*
    <functiondescription>
    Validerer kodeordet, tjekker om det også indeholder numre
    </functiondescription>
    */
    function ValidateStrongPassword($sPassword)
    {
        $this->ValidatePassword($sPassword);
        // Passwordet indeholder kune numre
        if(is_numeric($sPassword))
        {
            return 'Kodeord kan ikke kun indeholde tal';
        }
        if(!eregi('^[a-z0-9]{6,}$', $sPassword))
        {
            return 'Kodeord skal indeholde både tal og bogstaver';
        }
        return TRUE;
    }
   
   
    /*
    <functiondescription>
    Validerer et telefonnummer
    </functiondescription>
    */
    function ValidatePhoneNumber($iPhone)
    {
        if(!is_numeric($iPhone))
        {
            return 'Telefon nr. skal være et tal';
        }
        return TRUE;
    }
   
    /*
    <functiondescription>
    Validerer om et post nr er et tal
    </functiondescription>
    */
    function ValidateZipcode($iZipCode)
    {
        if(!is_numeric($iZipCode))
        {
            return 'Post nr. skal være et tal';
        }
        return TRUE;
    }
   
    /*
    <functiondescription>
    Kontrollerer om et felt er tomt
    </functiondescription>
    */
    function ValidateField($sInput,$sDescription)
    {
        if(empty($sInput))
        {
            return 'Feltet "'.$sDescription.'" må ikke være tomt';
        }
        return TRUE;
    }
   
    function ValidateUsername($sInput)
    {
        if(empty($sInput))
        {
            return 'Brugernavnet skal udfyldes.';
        }
        if(strlen($sInput>=13))
        {
            return 'Brugernavnet må max være 12 karaktere lang.';
        }
        return TRUE;
   
    }
}

?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester