PHP validation (låt giltliga fält vara)

Permalänk
Medlem

PHP validation (låt giltliga fält vara)

Sitter och knåpar på en registrasion form (har ingen aning om bra översättning) i PHP. Om något inte går som jag vill kommer en error-array och säger till. En av if-satserna ser ut såhär:

if (strlen($_POST['password']) < 8) { $errors[] = 'Your password must be at least 8 characters'; }

Problemet är att om ett fält orsakar error rensas allt och användaren måste fylla i allt igen. Finns det ingen lösning som gör att rensningen stoppas så man slipper fylla i allt igen utan bara ändra på det man måste ändra? Finns det redan en tråd om detta, länka gärna så tar jag bort denna.

Permalänk
Medlem

Finns det någon anledning till att du behöver göra den initiala valideringen på serversidan? Finns ju rätt många valideringsmöjligheter med jQuery eller vanlig JS.

Om du vill att fälten ska vara fortsatt ifyllda även fast din validering inte går igenom så måste du skicka tillbaka all info från ditt valideringsscript, och sen sätta dessa värden som values i dina fält i formuläret.

Visa signatur

[Intel i7 4770K] [ GTX 1070] [Asus ROG VI Gene] [Corsair AX860] [Corsair 16GB Vengeance LP] [120GBIntel 520] [Bitfenix Phenom M]

Citera för svar

Permalänk
Medlem

Som nivv säger, men med ett kodexempel:

$username = trim ($_POST["username"]); if (strlen($username) < 5) { //error } <input type="text" value="<?php echo $username; ?>" />

Visa signatur

PC: i7 3770k, Asus P8Z77-M PRO, 16GB @ 1600Mhz CL9, Gigabyte GTX670 OC, 120GB Intel 330
HTPC: i5 3450, ASRock Z77M mATX, 8GB @1600Mhz CL9, Gigabyte GTX670 OC, 160GB Intel 320
Server (Ubuntu 12.04): Pentium G2030 3Ghz, 4GB @ 1600Mhz, 160GB VelociRaptor, 4*1TB 7200RPM @ RaidZ

Permalänk
Medlem
Skrivet av nivv:

Finns det någon anledning till att du behöver göra den initiala valideringen på serversidan? Finns ju rätt många valideringsmöjligheter med jQuery eller vanlig JS.

Om du vill att fälten ska vara fortsatt ifyllda även fast din validering inte går igenom så måste du skicka tillbaka all info från ditt valideringsscript, och sen sätta dessa värden som values i dina fält i formuläret.

Jag brukar köra med dubbla valideringar, en i JS/jQuery för validering på klientsidan för att inte belasta servern i onödan, men det behövs även en validering på serversidan för att säkerställa att infon som lagras är korrekt. Klientvalideringen går ju att komma runt med att t.ex. inaktivera javascript.

Permalänk
Medlem
Skrivet av Teere:

Som nivv säger, men med ett kodexempel:

$username = trim ($_POST["username"]); if (strlen($username) < 5) { //error } <input type="text" value="<?php echo $username; ?>" />

Skrivet av nivv:

Finns det någon anledning till att du behöver göra den initiala valideringen på serversidan? Finns ju rätt många valideringsmöjligheter med jQuery eller vanlig JS.

Om du vill att fälten ska vara fortsatt ifyllda även fast din validering inte går igenom så måste du skicka tillbaka all info från ditt valideringsscript, och sen sätta dessa värden som values i dina fält i formuläret.

Fixat, tack för hjälpen!

Permalänk
Inaktiv

Registreringsformulär!

Sedan, se till att inte skriva ut input utan att rensa texten från potentiell javascript .. eller htmlentities().

Permalänk
Medlem
Skrivet av jonke:

Jag brukar köra med dubbla valideringar, en i JS/jQuery för validering på klientsidan för att inte belasta servern i onödan, men det behövs även en validering på serversidan för att säkerställa att infon som lagras är korrekt. Klientvalideringen går ju att komma runt med att t.ex. inaktivera javascript.

Absolut, du har helt rätt! Man skulle ju dock kunna stänga av formen om JS inte är aktiverat. Men helt klart, validering på backend och frontend är det bästa

Visa signatur

[Intel i7 4770K] [ GTX 1070] [Asus ROG VI Gene] [Corsair AX860] [Corsair 16GB Vengeance LP] [120GBIntel 520] [Bitfenix Phenom M]

Citera för svar