php Validate

  • Beste,


    Ik heb een Validate script dat elke input checkt. Alleen zit ik met 1 nadeel en dat is dat de $item de name is dus : <input type="text" name="password_again">


    Bij de foutmelding staat dus dit:
    password_again is een verplichte veld.:


    Het script :


    Me uitleg is wel wat slecht maar indien je verstand hebt en het script bekijkt zal je het wel gelijk snappen.


    Wat is het beste oplossing om de $item een ander waarde te geven?
    D8 aan arrays maar dat kost me wel veel moeite. misschien heeft iemand een goede oplossing?


    PS: Is het script veilig

    Ik sta open voor projecten.
    Ik sta ook tehuur als scripter
    PM voor meer informatie

  • Guest, wil je besparen op je domeinnamen? (ad)
  • Het bovenstaande is dus onderdeel van een soort van formuliersysteem ofzo?


    Een formuliersysteem kan een krachtig middel zijn mits deze goed is opgezet, je kunt dan zeer snel (standaard) formulieren (bestaande uit standaard componenten) opzetten.


    Ook zul je moeten definiëren wat een "formulierveld" omvat. Dit kan best verder voeren dan een inputveld of selectbox. Met wat fantasie (en wat JavaScript) kun je met standaard elementen complexere formuliervelden bouwen die je vervolgens aan je formulier (object) kunt ophangen via een vaste methode (addField(naam, type, instellingen)).


    Denk bijvoorbeeld aan een multiselect (hoe vaak ben jij de instellingen van een enkele select met meerdere selecties kwijt geraakt doordat je de Ctrl-toets niet inhield?):


    Of een simpele teller:

    Of een change password veldpaar:


    Of een access control list opgebouwd uit geserialiseerde predicaten in Poolse (prefix) notatie (shameless self-plug):


    (dit gebruik ik echt voor mijn rechtenmanagement :)).


    Ik zou hiervoor wat classes in het leven roepen (denk aan Form, FormField (abstract), de verschillende FormField spinoffs (de concrete formuliervelden)) en de veld-specifieke validaties onderbrengen bij deze velden zelf. Wanneer je de invoer van het formulier wilt valideren loop je door deze velden heen en roep je de validatie-methoden aan die je hebt ingesteld.


    Het kan trouwens best voorkomen dat één veld méérdere validatieregels heeft, bijvoorbeeld een textveld zou je de validatieregels "verplicht" en "email" kunnen geven. Hiermee geef je aan dat dit veld ingevuld moet worden, en tevens een e-mailadres moet zijn. Je hoeft dus niet voor elk type veld een nieuwe FormField child klasse in het leven te roepen - je kunt ook een specifiek veldtype (in dit geval een text-input veld) hergebruiken door hier nieuwe validatieregels voor te schrijven.

  • @FangorN


    Klopt wat je zegt maar op de meeste punten is er al aan gewerkt zoals:


    Stukje van je register script:


    In combinatie met de validate class werkt dit prima tot nu toe..



    'required' => true, (Verplicht veld) indien false niet verplicht.


    etc


    Of moet het nog uitgebreider?


    PS: van checkboxes maak ik geen gebruik van. enkel inputs.

    Ik sta open voor projecten.
    Ik sta ook tehuur als scripter
    PM voor meer informatie

  • Uhm, houdt dit in dat je voor elk nieuw formulier een nieuwe validation check moet schrijven? Dat lijkt mij een beetje zonde van het programmeerwerk.


    Hier een schematische aanpak van hoe ik een formulier opzet:


    Vervolgens heb ik een print() methode om het formulier (de HTML code) te genereren en af te drukken, een initialize() methode om het formulier te initialiseren met eerder ingevulde waarden. Daarmee verloopt het invoeren van nieuwe entries (ADD) en het wijzigen van bestaande entries (EDIT) op precies dezelfde wijze, hiervoor hoeft geen code bijgeschreven te worden.


    Bij het opslaan roep ik $form->validate() aan die alle velden afloopt, die vervolgens weer alle "rules" inspecteert. Als alles ok is retourneert deze methode een array met de gevalideerde data. Dit gebeurt altijd op dezelfde wijze, dus hier is ook nooit nieuwe/aparte code voor nodig.


    De enige code die ik dus hoef te schrijven voor het maken van een formulier is:
    - de definitie van het formulier zelf
    - de afhandeling van de verwerking


    De rest is al (eenmalig) geschreven. Dit is wat ik bedoelde met "het volgen van een handige opzet" zodat:
    - de code die je moet schrijven voor het opzetten van een formulier minimaal is
    - het weinig tot geen inspanning kost om wijzigingen of toevoegingen aan het formulier te doen; als ik een veld wil bijvoegen prik ik een addField() methode bij en pas ik de verwerking aan, dat is in < 5 minuten gepiept en ik hoef dit niet uitgebreid te controleren (al kan een test geen kwaad natuurlijk) omdat dit systeem modulair is opgezet met klassen. Het enige moment dat je echt uitgebreid moet testen is als je nieuwe formulier-element-typen gaat bouwen.


    EDIT: ik zal morgen eens een voorbeeldje posten, en de code die ik daarvoor moet schrijven.

  • Hier een voorbeeld van een toevoegen / wijzigen formulier.


    En hieronder alle code die hier voor nodig is (ook de opbouw die gebruikt wordt voor paginaopbouw en -routing, dat voert eigenlijk al verder dan het formulier zelf):


    Als je formuliersysteem een beetje slim in elkaar zit hoef je dingen niet dubbel te doen.


    EDIT: omg, wat doet dit forum met ingesprongen regels :/. Bleeeehhhh. Beter om dit te copy pasten in een apart bestand, want dit is zo onleesbaar geworden.


    Chrome stript zelfs spaties :/. wtf.


    Nota bene, als je een process pagina ververst dan krijg je een error 500 pagina te zien omdat er dan een exception wordt geproduceerd omdat je CSRF-token niet meer bestaat. Normaal wordt je vanaf de process-pagina altijd ergens naartoe doorgestuurd volgens het POST / redirect / GET principe.

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!