webForumDet fria alternativet

fält måste innehålla både tal och bokstäver

ASP

14 svar · 573 visningar · startad av golgata

Medlem sedan maj 2000131 inlägg
Frågan#1

Hur ser koden ut om man vill att lösenordfältet ska innehålla både bokstäver och siffror. Min kod ser ut såhär.

Formulär:

<form method="POST" action="nyttlosenklart.asp">
<input type="hidden" name="AD" value="<% =Request.QueryString("personal") %>"> <tr>
      <td valign="top">
<font face="Verdana" size="2">
<b>Här kan du ändra ditt lösenord<br>
</b></font>
<font face="Verdana" size="1">
<i>Lösenordet måste innehålla både siffror och bokstäver&nbsp; och innehålla 
minst 6 tecken</i></font>
  
          <p>
<font face="Verdana" size="1">
    <b>Gammalt lösenord</b></font>
<font face="Verdana" size="1">
      <br>
 
  <input type="password" name="oldlosen" size="10" style="font-size: 8pt; color: #0000CC; font-family: Tahoma; background-color: #EEEEEE; border: 1 solid #C0C0C0">
<font size="1" face="verdana" color="ff0000" > <%=session("fellosen2")%></font>
<br>
    <b>Nytt lösenord</b></font>
<font face="Verdana" size="1">
      <br>
 
  <input type="password" name="losen" size="10" style="font-size: 8pt; color: #0000CC; font-family: Tahoma; background-color: #EEEEEE; border: 1 solid #C0C0C0">
<font size="1" face="verdana" color="ff0000" > <%=session("fellosen1")%></font>
<br>
<b>Repetera lösenord</b>
<br>
<input type="password" size="10" name="losen1" style="font-size: 8pt; color: #0000CC; font-family: Tahoma; background-color: #EEEEEE; border: 1 solid #C0C0C0">
 <font size="1" face="verdana" color="ff0000" > <%=session("fellosen1")%></font>   
    <br>
    <br>
      <input type="submit" value="Ändra lösenord" style="font-weight: bold; font-size: 8pt; color: #0000CC; font-family: Tahoma; background-color: #EEEEEE; border: 1 solid #C0C0C0">
  
</form>

sparar lösenordet:

koden ser ut såhär.

<!-- #include file="opendatabas.inc" -->
<% Set RecSet = Server.CreateObject("ADODB.Recordset")
  Uppdatera = "SELECT * FROM behoriga WHERE ID = " & session("id") & ""

  RecSet.Open Uppdatera, Connect, adOpenStatic, adLockOptimistic %>

<% 
oldlosen     = Request.Form("oldlosen")
losen     = Request.Form("losen")
losen1     = Request.Form("losen1")
idnr = Request.Form("ad")

if oldlosen = Recset("losen") Then
Session("fellosen2")=Abandon
Else
Session("fellosen2") = "Du har skrivit fel lösenord."
Response.Redirect("nyttlosen.asp?personal=" & Request.Form("AD") & "")
end if

if losen <> losen1 Then
Session("fellosen1") = " Du måste skriva samma lösenord på båda raderna"
Response.Redirect("nyttlosen.asp?personal=" & Request.Form("AD") & "")
else
Session("fellosen1")=Abandon
end if

%>
<%
RecSet("namn") = Session("namn")
RecSet("login") = Session("login") 
RecSet("losen") = Request.Form("losen")
    RecSet.Update
     %>
Medlem sedan juni 200032 967 inlägg
#2

Din kod ser snyggare ut om du använder [kod]-taggar.

Medlem sedan maj 2000131 inlägg
#3

men det var inte det jag frågade efter *ler*

Medlem sedan apr. 20031 660 inlägg
#4

HEJ!

Håller med, dessutom används inte spara-sidan för detta, javacript (fel forum?) gäller, och RegExp!

Så här gör jag för att kontrollera 4 bokstäver + 2 siffror

var reg = new RegExp();
reg = /\W/;
var losen = form.losen1.value;
var elaka = reg.exec(losen);
if (elaka != null){
	alert("Du har ogiltiga tecken\r\ni ditt lösenord.");
	form.losen1.focus();
	return (false);
}
var reg = new RegExp();
reg = /\w{6,}/;
var antal = reg.exec(losen); //null om ej 6
if ((antal == null) || (form.losen1.value.length > 8)){
	alert("Lösenordet ska vara sex till åtta\r\ntecken, varav minst två siffror.");
	form.losen1.focus();
	return (false);
}
var reg = new RegExp();
reg = /\d{1}/;
var siffra1 = reg.exec(losen);
var hoger_losen =  RegExp.rightContext
var siffra2 = reg.exec(hoger_losen);
if (siffra2 == null){
	alert("Du måste ha minst två siffror")
	form.losen1.focus();
	return (false);
}
Medlem sedan juni 200032 967 inlägg
#5

golgata skrev:

men det var inte det jag frågade efter *ler*

Nej, det är riktigt.

Du kan inte tänka dig att redigera in lite kod-taggar så koden går att läsa?

Medlem sedan feb. 200112 078 inlägg
#6

golgata skrev:

men det var inte det jag frågade efter *ler*

Passa på att läsa den här tråden innan du / jag redigerar ditt inlägg.

MVH
OveRRidE
moderator, wF

Medlem sedan maj 2000131 inlägg
#7

oki ska tänka på det i fortsättningen.

men det ska gå att göra med asp också.

men om det bara är tvunget med en siffra hur gör man då?

Medlem sedan dec. 20003 887 inlägg
#8

Nästan samma sak i VBScript blir typ

Function ValidatePassword(strPW)
  Dim objRX, intLen

  intLen = Len(strPW)

  If intLen < 6 Then
    ValidatePassword = False
  Else
    Set objRX = New Regexp
    objRX.Global = True
    objRX.IgnoreCase = True
    objRX.Pattern = "(.*\d){2,}"

    ValidatePassword = objRX.Test(strPW)

    objRX.Pattern = "[a-z]"

    ValidatePassword = ValidatePassword And objRX.Test(strPW)
  End If
End Function

Response.Write ValidatePassword("abc2k4")
Medlem sedan maj 2000131 inlägg
#9

men var ska jag lägga detta i koden? precis innan submit eller?

Medlem sedan apr. 20031 660 inlägg
#10

HEJ!

men om det bara är tvunget med en siffra hur gör man då?

Om du menar i min kod är det

reg = /\d{1}/;
var siffra1 = reg.exec(losen);
var hoger_losen =  RegExp.rightContext
var siffra2 = reg.exec(hoger_losen);
if (siffra2 == null){
	alert("Du måste ha minst två siffror")
	form.losen1.focus();
	return (false);
}

som fixar det, ta bort detta helt enkelt. Pattern 'reg' kontrolleras två gånger, andra gången på det som är kvar, blir det inte träff där, är det fel.

Medlem sedan dec. 20003 887 inlägg
#11

Vill du göra det innan du gör din submit får du lov att använda dig av **J.N.**s exempel med javascript.

Annars lägger du in det på sidan som du postar till... <form action="hmmm.asp">

Medlem sedan maj 2000131 inlägg
#12

får det inte att fungera. har jag gjort rätt eller?

<head>
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin

var reg = new RegExp();
reg = /\W/;
var losen = form.losen1.value;
var elaka = reg.exec(losen);
if (elaka != null){
alert("Du har ogiltiga tecken\r\ni ditt lösenord.");
form.losen1.focus();
return (false);
}
var reg = new RegExp();
reg = /\w{6,}/;
var antal = reg.exec(losen); //null om ej 6
if ((antal == null) || (form.losen1.value.length > 8)){
alert("Lösenordet ska vara sex till åtta\r\ntecken, varav minst två siffror.");
form.losen1.focus();
return (false);
}

// End -->
</SCRIPT>
</head>

Medlem sedan apr. 20031 660 inlägg
#13

HEJ!

Njae, har du BARA klistrat in min kod utan att översätta den till dig fungerar det ju inte.

Dessutom: OM du har en gammal version av VB-motorn (?) fungerar inte RegExp, men det är nog endast problem om du kör NT4.

Medlem sedan juli 20015 107 inlägg
#14

J.N. skrev:

HEJ!

Njae, har du BARA klistrat in min kod utan att översätta den till dig fungerar det ju inte.

Dessutom: OM du har en gammal version av VB-motorn (?) fungerar inte RegExp, men det är nog endast problem om du kör NT4.

nee under 2000 kan script motorn vara för gammal också! (har jag fått erfara nyligen) men den går enkelt att hämta ner senaste versionen av Script motorn från microsoft! curr.ver: 5.6

Medlem sedan apr. 20031 660 inlägg
#15

HEJ!

Okej, där ser man, jag hade problem med det för några år sedan på en IIS4. Sedan dess har jag inte stött på det, bättre miljö helt enkelt!

262 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)