30. marts 2005 - 09:51Der er
37 kommentarer og 1 løsning
validering af password
Skal bruge et script der validerer min formular. Alle felterne i formularen skal være udfyldt, og så skal der være specielle krav til password-feltet, som hedder 'pass' ... Dette må ikke indeholde æ ø å og skal være 8-cifret, og så skal feltet 'pass' og 'pass2' være identiske!!
Du kan opbygge din formular med. Jeg har lige hurtigt lavet et check på om det første felt er udfyldt og om man har indtastet ens passwords, men du kan selv lave flere af samme stil.
yellow: så må du vist læse mit indlæg en gang til?
<script language="JavaScript"> function validate() { tjek=/^[a-z][^æøå]/; <--- skulle da ligne æ,ø,å-kriteriet? mNv=mainform.Navn.value; if (mNv=='') { alert('Dit navn skal skrives.'); event.returnValue=false; } if (!(mainform.Kon[0].checked || mainform.Kon[1].checked)) { alert('Dit køn skal vælges.'); event.returnValue=false; } if (tjek.test(mainform.Navn.value)) {
} else { alert("fejl"); } if (mainform.Pass.value.length < 8) { alert("dit password skal være mindst 8 tegn langt"); } } </script>
nåår... beklager.. havde vist ikke læst spørgsmålet ordentligt.. ;-) så ikke det kun var password feltet der ikke skulle indeholde æ,ø og å... men... yellow.. din rettelse.. der er ikke nogen forskel?
Min rettelse var et lille "i" for enden af regexp = ignorecase.
Din tjek=/^[a-z][^æøå]/; kan jeg ikke rigtig få til at gi mening... Den siger: Første tegn skal være a til z Næste tegn skal være noget der ikke er æ,ø eller å Resten af tegnene er bedøvende ligegyldige...
Yellow - jeg kom til at tænke på, at det selvfølgelig heller ikke må indeholde specielle tegn, såsom ".,-' osv. osv. Så bare fra a-z (kun småbogstaver)
yellow.. nå da... undskyld :P er lige startet med det der.. kan ikke heelt finde ud af det, men kender det sådan ca.. men undskyld.. så ikke det i.. kiggede dog alligevel 4-5 gange igennem for at tjekke... det er lidt svært at se.. :P
men så må jeg til at lære mig noget mere om de tegn.. ;-P - slutter af..
yellow - skal dette oprettes for hvert felt: elm = myForm.Felt2; if( blankReg.test( elm.value ) ){ alert("Felt2 skal udfyldes"); elm.focus(); return false;
...for der er altså en del felter, kan man ikke lave noget overordnet? :))
Har tidligere brugt dette script jeg fik lavet: function check(f){
elm = f.elements; str= "Følgende felter mangler at blive udfyldt:\n\n"; err = 0;
for (i=0;i<elm.length;i++){ if (elm[i].value.length==0){ if(elm[i].name.charAt(elm[i].name.length-1)!="X"){ str+=elm[i].felt+"\n"; err++ } } }
...som tjekker alle felter, hvor der ikke står et X i navnet (altså de valgfrie) og så skriver den hvilke der mangler at blive udfyldt! Problemet var bare jeg ikke kunne få den kombineret med password valideringen! :)
Validering af server-delen!? Hvordan foregår det lige, jeg ved godt at jeg skal have lavet et eller andet der tjekker om brugernavnet allerede eksisterer, kan det gøres via et script også eller skal det bare være med if() ...? Vil du/I løse det hvis jeg opretter et nyt spørgsmål?
Du skal i dit php-script teste, at der ikke er ulovligheder i indtastede data, f.eks. ved at en bruger har omgået din form på websiden ...
-- og det værste, der kan ske, er at en har indtastet sql-kode, som kan korrumpere din database eller skaffe ham adgang, hvor han ikke skulle (sql-injection !-)
-- en simpel udgave, som tillader mindst 6 bogstaver (store og små), tal og _
nameReg = /^\w{6,}$/i;
-- begrebet bogstaver fortolkes en anelse forskelligt i forskellige browsere, så f.eks. æøå accepteres i Mozilla, hvilket det ikke gør i IE, men så skal du alligevel teste data før de indsættes i databasen, så der vil du kunne fange ugyldige tegn, hvis de skulle slippe igennem !-)
...hvordan skal den se ud, hvis man vil tjekke om der er indtastet '@' i feltet??? Som jeg har lavet den der melder den fejl uanset om der er eller ej...
-- og vi kan splitte udtrykket op, så du kan se, hvad den gør:
// er afgrænsere af regexps, ligesom man bruger "" eller ' til tekststrenge
^$ betyder hhv. start og slut af teksten, og betyder altså at samtlige tegn i den skal medtages i evalueringen
. betyder en hvilketsomhelst karakter
* betyder 0 eller flere tegn, og betyder altså her, at vi er bedøvende ligeglade med hvad der kommer før @-tegnet (da der alligevel ikke er nogle globale standarder, som skal overholdes der !-)
@ skal tages bogstaveligt, da det ikke har nogen special-betydning i regexps
\ er escape-karakter, og betyder at det efterfølgende tegn enten skal tages bogstaveligt (hvis det er en anden special-karakter, f.eks. . eller $ !-), eller at der kommer en speciel escape-sekvens ...
\w er netop en speciel escape-sekvens, som betyder ord-tegn, hvilket i alle udgaver af ECMA-script betyder a-z, 0-9 og _ både store og små, men i nogle udgaver også inkluderer locale-specifíkke tegn, f.eks. accepterer Gecko-browserne æøåÉ osv.
-- der skal være et af disse tegn, som det første efter @-tegnet, så den er lige smidt på før den næste
[] betyder at alle tegn indenfor kan forekomme (medmindre de er mærket som ikke forekomme ved at første tegn indeni er ^ !-)
Så [\w\.-]* betyder altså, at vi vil acceptere en hvilkensomhelst tegnfølge (0 til uendelig lang), som kun indeholder tegnene a-zA-Z0-9_.-
-- bemærk her, at . skal escapes, da det _skal_ tages bogstaveligt, ofte ville man også have brug for at escape - da det også bruges til at betegne tegn-sekvenser (se senere !-)
-- så skal vi have et punktum, derfor \.
[a-z] betyder så, at vi vil tillade et hvilketsomhelst bogstav i sekvensen fra a til z (her ses bindestregens rolle !-)
{} er den fjerde måde at angive hvor mange af noget man vil acceptere:
? betyder 0 eller 1 forekomst * betyder 0 eller flere forekomster + betyder 1 eller flere forekomster {} betyder, at man selv kan angive i tal, hvilken længde, man vil acceptere ...
? er det samme som {0,1} eller {,1} * er det samme som {0,} + er det samme som {1,}
{2} betyder længden skal være præcis 2 {2,} betyder at længden skal være mindst 2 {,2} betyder at længden kan være op til 2 {2,48} betyder så at længden skal være mellem 2 og 48 !o]
-- så {2,6} betyder altså, at der skal være mindst 2 og højest 6 tegn af den foregående definition, fordi top-domæne-navne har den længde (eks. .dk, .tv, .com, .museum !-)
.test er bare en funktion du kalder på en regular expression. /\d/.test('abc1def') ->returnerer true fordi 1 tallet matcher på /\d/
\s er whitespace. Det varierer lidt fra sprog til sprog hvad den præcist dækker over. Er som regel altid mellemrum og tab. I nogle sprog er linefeed, carriage return og "ikke-printbare-tegn" også med under \s.
er bare en løkke der kører igennem samtlige form elements. Dvs alle <input =...>, <textarea..> etc. tags. I hver gennemgang af løkken bliver det enkelte form-element sat til "elm"-variablen.
Synes godt om
Ny brugerNybegynder
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.