Ik probeer een ledenbestand op te zetten met 4 velden. Naam, Voornaam, mailadres en paswoord.
Ik heb voor de Naam een pattern ingestoken (minstens 2 tekens en verder de gebruikelijke letters en spaties.
Maar dat werkt blijkbaar niet. Het is nog altijd mogelijk om een naam weg te schrijven die enkel uit 2 spaties bestaat. Dus eigenlijk leeg.
Ik heb al geprobeerd dit af te vangen via mijn code om het weg te schrijven naar mijn database. Maar ook dit lukt niet.
Er wordt nog altijd een leeg veld weggeschreven. Waar zit ik fout in mijn redenering.
if (!empty($naam)
|| !empty($vnaam)
|| !empty($email)
|| !empty($paswoord)) {
$sql = "INSERT INTO Leden(Naam,Voornaam,mailadres,Paswoord)
VALUES ('$naam','$vnaam','$email','$paswoord')
Kortom wat kan ik doen om geen veld met alleen spaties weg te schrijven. Een naam zoals Van de Bossche moet wel kunnen. Daar zitten spaties in. Ik kan natuurlijk ook het minimum aantal in te voeren tekens verhogen naar 6 ofzo maar een naam als De Bo of Debo lukt dan niet meer.
Ik weet niet wat er aan de hand is maar met dit pattern="[A-Za-z']+[A-Za-z'. ]" worden nog altijd 2 spaties aanvaard. Zowel in Chrome, als in Firefox.
En dan voor de verwerking doet dit het ook niet:
Ik weet 100% zeker dat de trim functie in php een spatie voor en na de input weghaalt.
Dus ik neem aan dat 2 spaties geen probleem is.
Als je eerst de trim functie gebruikte en dan pas de escape.
Liever dus per stuk controleren in losse if-statements, en alle foute invoer verzamelen in een array.
Bij het verzenden van je formulier bekijk je of die array waardes van foute invoer bevat (count($errors) >0). In dat geval laat je zien aan de gebruiker welke velden er missen of fout ingevoerd zijn. Als alles ingevuld is mag de database zijn werk doen.
@Ariën. We gaan dat laatste eens proberen.
@Ralf d. Die If die je voorstelt werkt al zeker niet want als er eentje ingevuld is dan schrijft het weg. Ik had het daarom al omgedraaid. Als Naam Of Voornaam of email of paswoord leeg is dan terug naar invulformulier in het ander geval wegschrijven. Maar om de ene of andere reden lukt dit niet. Ik denk dat het eigenlijk een XOR zou moeten zijn.
@Ariën. We gaan dat laatste eens proberen.
@Ralf d. Die If die je voorstelt werkt al zeker niet want als er eentje ingevuld is dan schrijft het weg. Ik had het daarom al omgedraaid. Als Naam Of Voornaam of email of paswoord leeg is dan terug naar invulformulier in het ander geval wegschrijven. Maar om de ene of andere reden lukt dit niet. Ik denk dat het eigenlijk een XOR zou moeten zijn.
Dat die niet werkt dat zou zeker kunnen!
Zou dat zelf namelijk nooit doen.
Geef daarna ook aan dat je deze beter appart in een if statement kunt zetten.
En bij iedere if een fout afhandeling.
Pas bij de laatste naar de database schrijven.
het wordt hierboven al duidelijk uit gelegd.
Ik kom er nog op terug. Maar de eerstvolgende dagen moet ik nog correcties doen in de databases. Die zijn gebaseerd op reeds bestaande indexen. Momenteel zijn vrijwilligers zo'n 20 000 scans aan het koppelen (van huis uit on line) met die indexen zodat gebruikers die scans kunnen opvragen on line. En daar komen nogal wat fouten tevoorschijn in de bestaande indexen. Die worden mij gemeld en die corrigeer ik dan want ik laat niet iedereen in de tabellen rommelen. Maar ik mag het ook niet te lang laten liggen want dan wordt het uit het oog verloren. Dus dit is nu voor een paar dagen on hold.