Avatar billede -kenner- Nybegynder
22. januar 2006 - 23:08 Der er 10 kommentarer og
2 løsninger

Teste paa lengden af et input!

Hej eksperter,

Jeg sidder og skal teste brugernavne og kodeord paa hvor lange de er, da de ikke maa overskride eller underskride en graense.

Kodeord skal vaere imellem 8 og 24 cifre, Brugernavne skal vaere imellem 4 og 18 cifre.
Avatar billede roenving Novice
23. januar 2006 - 00:14 #1
Ved at bruge en RegExp kan du gøre næsten det samme clientside først og så kontrollere det bagefter server-side, men der er dog en del syntaktiske forskelle, som jeg ikke kan hjælpe dig med ...

En clientside-validering kan f.eks. se sådan ud:

<script type="text/javascript">
function valider(f){
  if(!f.brugernavn.value.match(/^\d{4,18}$/)){
    alert("Brugernavnet skal være på mellem 4 og 18 cifre");
    f.brugernavn.focus();
    return false;
  }
  if(!f.pass.value.match(/^\d{8,24}$/)){
    alert("Kodeordet skal være på mellem 8 og 24 cifre");
    f.brugernavn.focus();
    return false;
  }
  return true;
}
</script>

-- og formen:

<form action="" method="post" onsubmit="return validering(this);">
<input type="text" name="brugernavn" value="Dit brugernavn" onfocus="this.value='';"><br>
<input type="password" name="pass"><br>
<input type="submit" value="login">
</form>
Avatar billede tjp Mester
23. januar 2006 - 00:36 #2
Hvis du med 'cifre' mener både tal, bogstaver og _, så skal du skifte '\d' ud med '\w' i roenvings forslag.
Avatar billede -kenner- Nybegynder
23. januar 2006 - 05:30 #3
Jeg har placeret spoergsmaalet i PHP da jeg gerne vil teste i PHP, saa Javascript hjaelper mig ikke.

cifre er alt der kan smides i inputet (tal, special tagn, bogstaver), men jeg tester dog for specialtegn, saa kun tal og bogstaver er tilladt, men alt skal taelles med.

f4t&^&hjjh = 10 cifre
Avatar billede stalle Nybegynder
23. januar 2006 - 06:13 #4
du kan tjekke med strlen()

$brugernavn = "JallaDalla"
$len_bruger = strlen($brugernavn);
echo "Brugernavnet er: ".$len_bruger;

Ovenstående vil give:

Brugernavnet er: 10
Avatar billede johan.o Nybegynder
23. januar 2006 - 10:14 #5
'stalle' giver dig det du spørger efter, et rent check af længden af strengen.

Dette går lidt videre og checker også indholdet (accepterer mellem 8 og 24 tegn af typen a-z, A-Z og 0-9) :

$pwd="efrbiu4b4iub";
if(preg_match("/^[a-z0-9]{8,24}$/i", $pwd)) {
$pm="Pwd match"; }
else {
$pm="Pwd dont match"; }

Derudover kender jeg jo ikke sammenhængen, men der er god fornuft i først at lave en validering via javascript, som 'roenving' foreslår, og så også lave en validering på server siden. En af fordelene ved dette vil jo være en lavere belastning af serveren, da den i normale tilfælde kun vil modtage korrekt formaterede informationer, og derved ikke skal bruge tid på at sende fejlmeddelelser. Men som sagt kender jeg ikke sammenhængen :)

Mvh. Johan
Avatar billede -kenner- Nybegynder
23. januar 2006 - 23:37 #6
johan.o > kan du staette det op, saa laengden bliver tjekket i en if, og tegn i en anden, da jeg gerne vil smide to forskellinge fejlmeldigner.

Javascript er ikke aktivt i alle browsere, saa det vil alligevel ikke virke 100%.
Avatar billede johan.o Nybegynder
23. januar 2006 - 23:55 #7
Ja, det bliver jo bare en kombination af det ovenstående, f.eks. :

$pwd="jhvsshvweu98"; $errmsg="";
if(strlen($pwd)<8) { $errmsg="Password er for kort !"; }
if(strlen($pwd)>24 && $errmsg="") { $errmsg="Password er for langt !"; }
if(!preg_match("/^[a-z0-9]+$/i", $pwd)) { $errmsg="Password indeholder ugyldigt tegn !"; }
if($errmsg!="") {
echo "Password er ugyldigt. Problemet er : ".$errmsg; }
else {
echo "Password er iorden !"; }

Og med hensyn til at 'Javascript er ikke aktivt i alle browsere' så er det naturligvis korrekt, men jeg vil dog vove pelsen og påstå at det er aktivt i langt størstedelen, men det bestemmer du selvfølgelig helt selv hvordan du vil gøre, det er bare også værd at bemærke at det er meget hurtigere for dine brugere hvis du forsøger at rydde op i deres input's før du sender....det lyder måske utroligt :), men det ER ikke alle brugere der fløjter afsted på en highspeed forbindelse, jeg kender stadig mange modem brugere, og de syntes det er lidt nedtur at skulle vente på et svar fra serveren hver gang de laver en tastefejl i en form :).....hmmm skal vist læse lidt op på brugen af punktum :)

Mvh. Johan
Avatar billede -kenner- Nybegynder
24. januar 2006 - 23:18 #8
$pwd="jhvsshvweu98"; $errmsg="";
if(strlen($pwd)<8 or strlen($pwd)>24) { $errmsg="Kodeordet skal vaere 8 til 24 cifret!"; }
if(!preg_match("/^[a-z0-9]+$/i", $pwd)) { $errmsg="Password indeholder ugyldigt tegn !"; }
if($errmsg!="") {
echo "Password er ugyldigt. Problemet er : ".$errmsg; }
else {
echo "Password er iorden !"; }
Avatar billede -kenner- Nybegynder
24. januar 2006 - 23:21 #9
Jeg satte det lige op saa det passer bedere i min fil:

$pwd="jhvsshvweu98";
if(strlen($pwd)<8 or strlen($pwd)>24) { $errmsg="Kodeordet skal vaere 8 til 24 cifret!"; }
elseif(!preg_match("/^[a-z0-9]+$/i", $pwd)) { $errmsg="Password indeholder ugyldigt tegn !"; }else{
echo"Kodeordet er fint :)";
}
Avatar billede -kenner- Nybegynder
24. januar 2006 - 23:22 #10
johan.o send svar :)
Avatar billede johan.o Nybegynder
25. januar 2006 - 02:04 #11
Jamen det kommer lige her, men jeg syntes da vi skal lave en deler med stalle, han svarede jo på det du spurgte om :)

Mvh. Johan
Avatar billede johan.o Nybegynder
04. februar 2006 - 00:20 #12
Tak for points :)
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