24. december 2003 - 23:16Der er
32 kommentarer og 1 løsning
fejl i indtastning eller findes allerede
GLÆDELIG JUL !!! :)
Jeg har lavet et script til at oprette nye brugerer med.
Når en bruger har indtastede nogle ting så klikker denne opret og så vil han blive oprette medmindre han har glemt at udfylde noget !!
Jeg har dog 2 ting jeg også vil have tjekke og hvis dette findes så skal den melde fejl som den gør nu ved bare ikke hvordan jeg gør det !!
1. Hvis det indtastede Brugernavn findes, så skal flg fejl skrives "Det vælgte Brugernavn er taget".
2. Hvis der oprettes en bruger og der findes en anden bruger med den samme IP, så skal flg fejl skrives "Der er oprettet én bruger med denne IP, brug en anden PC".
Brugernavn hedder UserNick i min DB og IP er UserIP i min DB og min code er flg.
<!--#include file="include/easytags.asp"--> <!--#include file="include/conndb.asp"--> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> </HEAD> <BODY bgcolor="#ffffff"> <script language="JavaScript"> function Validator(theForm){ fejl.innerHTML=""; var error = 0; var mailEr = 0; if (theForm.email.value =="" || theForm.email.value.indexOf("@") == -1) { if(error) { fejl.innerHTML+="<br>"; } fejl.innerHTML+="- Der skal oplyses en korrekt mailadresse."; if(!error) { theForm.email.focus(); } error = 1; mailEr = 1; }
mailOrd = new Array(); mailOrd[0]="fuck"; mailOrd[1]="test"; mailOrd[2]="skrid"; mailOrd[3]="nej";
for(i = 0; mailOrd[i]; i++) { if(!mailEr) { if (theForm.email.value =="" || theForm.email.value.indexOf(mailOrd[i]) > -1) { if(error) { fejl.innerHTML+="<br>"; } fejl.innerHTML+="- Der skal oplyses en korrekt mailadresse."; if(!error) { theForm.email.focus(); } error = 1; mailEr = 1; } } }
Angående det med IP så det en rigtig dårlig ide efter min mening hvis det er noget som skal ligge på nettet som alle skal havde adgang til fordi: 1. Folk med modem skifter IP hver gang de logger på nettet. 2. Folk i en stor virksomhed vil alle hvade samme IP pga. firewall/gateway.
Men der er ikke noget problem i at tage det med og det er med i denne kode så.
<!--#include file="include/easytags.asp"--> <!--#include file="include/conndb.asp"--> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> </HEAD> <BODY bgcolor="#ffffff"> <script language="JavaScript"> function Validator(theForm){ fejl.innerHTML=""; var error = 0; var mailEr = 0; if (theForm.email.value =="" || theForm.email.value.indexOf("@") == -1) { if(error) { fejl.innerHTML+="<br>"; } fejl.innerHTML+="- Der skal oplyses en korrekt mailadresse."; if(!error) { theForm.email.focus(); } error = 1; mailEr = 1; }
mailOrd = new Array(); mailOrd[0]="fuck"; mailOrd[1]="test"; mailOrd[2]="skrid"; mailOrd[3]="nej";
for(i = 0; mailOrd[i]; i++) { if(!mailEr) { if (theForm.email.value =="" || theForm.email.value.indexOf(mailOrd[i]) > -1) { if(error) { fejl.innerHTML+="<br>"; } fejl.innerHTML+="- Der skal oplyses en korrekt mailadresse."; if(!error) { theForm.email.focus(); } error = 1; mailEr = 1; } } }
Dim AA, BB, CC, DD, EE, FF, GG, HH, II, KK, rsOpret
Function OpretUpdate()
AA = Request.Form("username") BB = Request.Form("password") CC = Request.Form("email") DD = Request.Form("fnavn") EE = Request.Form("enavn") FF = Request.Form("adr") GG = Request.Form("by") HH = Request.Form("postal") II = Request.Form("ip") JJ = Request.Form("univ") KK = Request.Form("ustat")
SQL = "SELECT * FROM userdatabase WHERE UserNick = '" & AA & "'" Set rs = Conn.Execute(SQL) fejl = "" if NOT rs.EOF then fejl = "Det vælgte Brugernavn er taget." end if SQL = "SELECT * FROM userdatabase WHERE UserIP = '" & II & "'" Set rs = Conn.Execute(SQL) if NOT rs.EOF then fejl = "Der er oprettet én bruger med denne IP, brug en anden PC." end if
if fejl = "" then Set rsOpret = Server.CreateObject("ADODB.Recordset") rsOpret.open "userdatabase", conn, 3, 3 rsOpret.AddNew rsOpret("UserNick") = AA rsOpret("UserFName") = DD rsOpret("UserLName") = EE rsOpret("UserMail") = CC rsOpret("UserAdr") = FF rsOpret("UserCity") = GG rsOpret("UserPostal") = HH rsOpret("UserPassword") = BB rsOpret("UserNiveau") = JJ rsOpret("UserIP") = II rsOpret("UserStat") = KK
rsOpret.Update rsOpret.close set rsOpret = nothing end if OpretUpdate = fejl
End Function
fejlkode = OpretUpdate()
conn.close set conn = nothing
if fejlkode = "" then Response.Redirect("login.asp") else Response.Write "<center>" & fejlkode & "</center>" end if end if
og hvordan kan jeg trække den kommende brugers UserID ud så jeg kan bruge det i en JMAIL lige efter den er gemt da jeg skal bruge brugerens ID det som brugeren er gemt under !??
Det forstår jeg ikke det skulle den ikke gøre.. Du får ikke en pop-up besked når man skriver navet at det er taget i forvejen det kan man først finde ud af når man trykke på "opret"/submit knappen.
hmm er du sikker på du har uploaded koden? Det skulle altså ikke kunne lade sig gøre, med dette tjek:
SQL = "SELECT * FROM userdatabase WHERE UserNick = '" & AA & "'" Set rs = Conn.Execute(SQL) fejl = "" if NOT rs.EOF then fejl = "Det vælgte Brugernavn er taget." end if
Dim AA, BB, CC, DD, EE, FF, GG, HH, II, KK, rsOpret
Function OpretUpdate()
AA = Request.Form("username") BB = Request.Form("password") CC = Request.Form("email") DD = Request.Form("fnavn") EE = Request.Form("enavn") FF = Request.Form("adr") GG = Request.Form("by") HH = Request.Form("postal") II = Request.Form("ip") JJ = Request.Form("univ") KK = Request.Form("ustat")
SQL = "SELECT * FROM userdatabase WHERE UserNick = '" & AA & "'" Set rs = Conn.Execute(SQL) fejl = "" if NOT rs.EOF then fejl = "Det vælgte Brugernavn er taget." end if SQL = "SELECT * FROM userdatabase WHERE UserIP = '" & II & "'" Set rs = Conn.Execute(SQL) if NOT rs.EOF then fejl = "Der er oprettet én bruger med denne IP, brug en anden PC." end if
if fejl = "" then Set rsOpret = Server.CreateObject("ADODB.Recordset") rsOpret.open "userdatabase", conn, 3, 3 rsOpret.AddNew rsOpret("UserNick") = AA rsOpret("UserFName") = DD rsOpret("UserLName") = EE rsOpret("UserMail") = CC rsOpret("UserAdr") = FF rsOpret("UserCity") = GG rsOpret("UserPostal") = HH rsOpret("UserPassword") = BB rsOpret("UserNiveau") = JJ rsOpret("UserIP") = II rsOpret("UserStat") = KK
rsOpret.Update rsOpret.close set rsOpret = nothing end if OpretUpdate = fejl
End Function
fejlkode = OpretUpdate()
conn.close set conn = nothing
if fejlkode = "" then Response.Redirect("login.asp") else Response.Write "<center>" & fejlkode & "</center>" end if end if
%>
Ind imllem de to <div> tags: <div id="fejl" style="color:red;font-family:tahoma;font-size:10px"> <% 'Indsæt koden her %> </div>
har du prøvet at lade vær med at udfylde fornavn og efternavn evt skrevet test@test.dk i mail !??
så kan du se den viser alle 3 fejl på én gang !!
kan vi gøre så den også viser brugernavn fejl og ip !??
den viser nemlig kun de 3 fejl til at starte på til jeg har rette dem og når jeg så klikker opret så viser den fejlen med ip men ikke med brugernavn som jo også er en fejl da det findes !! og så sletter den hele formen så man kan starte helt forfra !!
Kunne du gøre så den gør det samme med de 2 sidste fejl som med de 3 omtalte fejl !??
Dim AA, BB, CC, DD, EE, FF, GG, HH, II, KK, rsOpret
Function OpretUpdate()
AA = Request.Form("username") BB = Request.Form("password") CC = Request.Form("email") DD = Request.Form("fnavn") EE = Request.Form("enavn") FF = Request.Form("adr") GG = Request.Form("by") HH = Request.Form("postal") II = Request.Form("ip") JJ = Request.Form("univ") KK = Request.Form("ustat")
SQL = "SELECT * FROM userdatabase WHERE UserNick = '" & AA & "'" Set rs = Conn.Execute(SQL) fejl = "" if NOT rs.EOF then fejl = fejl & "<br>- Det vælgte Brugernavn er taget." end if SQL = "SELECT * FROM userdatabase WHERE UserIP = '" & II & "'" Set rs = Conn.Execute(SQL) if NOT rs.EOF then fejl = fejl & "<br>- Der er oprettet én bruger med denne IP, brug en anden PC." end if
if fejl = "" then Set rsOpret = Server.CreateObject("ADODB.Recordset") rsOpret.open "userdatabase", conn, 3, 3 rsOpret.AddNew rsOpret("UserNick") = AA rsOpret("UserFName") = DD rsOpret("UserLName") = EE rsOpret("UserMail") = CC rsOpret("UserAdr") = FF rsOpret("UserCity") = GG rsOpret("UserPostal") = HH rsOpret("UserPassword") = BB rsOpret("UserNiveau") = JJ rsOpret("UserIP") = II rsOpret("UserStat") = KK
rsOpret.Update rsOpret.close set rsOpret = nothing end if OpretUpdate = fejl
End Function
fejlkode = OpretUpdate()
conn.close set conn = nothing
if fejlkode = "" then Response.Redirect("login.asp") else Response.Write fejlkode end if end if %>
for at data kommer ind på formen igen ska du rette dine input felter så de default får en value eksvis email: <br><input name="email" size="28" style="text-align: center;">
Skal rettes til: <br><input name="email" size="28" style="text-align: center;" value="<%=CC%>">
Det skal så være en tilsvarne variable for de andre.
Som skrevet før kan de 2 fejl først vises når man har send formen så den tjekker med databasen, de andre fejl kommer før formen sendes, der med kan de ikke umiddelbart vises på samme tid.
Hvis du vil det skal du havde lavet et array men brugernavn og et array med IP adresser som javascript validateren løber igennem på samme måde som eksvis email adressen tjekkes.
når nu den nye bruger er gemt hvordan laver jeg så en request på denne brugers ID hvis jeg nå sender den oprettede bruger efter gemning til SEND.asp og her er en JMAIL form som rettes til med denne brugers ID og sendes og først her sendes brugeren til login.asp når denne lille mellem side er blevet afviklet !??
Det med id kan gøres sådan her: man kan få ID efter rsOpret.update er kaldt:
<% if request.form ("subop") <>"" then
Dim AA, BB, CC, DD, EE, FF, GG, HH, II, KK, rsOpret
Function OpretUpdate()
AA = Request.Form("username") BB = Request.Form("password") CC = Request.Form("email") DD = Request.Form("fnavn") EE = Request.Form("enavn") FF = Request.Form("adr") GG = Request.Form("by") HH = Request.Form("postal") II = Request.Form("ip") JJ = Request.Form("univ") KK = Request.Form("ustat")
SQL = "SELECT * FROM userdatabase WHERE UserNick = '" & AA & "'" Set rs = Conn.Execute(SQL) fejl = "" if NOT rs.EOF then fejl = fejl & "<br>- Det vælgte Brugernavn er taget." end if rs.Close SQL = "SELECT * FROM userdatabase WHERE UserIP = '" & II & "'" Set rs = Conn.Execute(SQL) if NOT rs.EOF then fejl = fejl & "<br>- Der er oprettet én bruger med denne IP, brug en anden PC." end if rs.Close
if fejl = "" then Set rsOpret = Server.CreateObject("ADODB.Recordset")
rsOpret.open "userdatabase", conn, 3, 3 rsOpret.AddNew rsOpret("UserNick") = AA rsOpret("UserFName") = DD rsOpret("UserLName") = EE rsOpret("UserMail") = CC rsOpret("UserAdr") = FF rsOpret("UserCity") = GG rsOpret("UserPostal") = HH rsOpret("UserPassword") = BB rsOpret("UserNiveau") = JJ rsOpret("UserIP") = II rsOpret("UserStat") = KK
rsOpret.Update fejl = rsOpret("UserID")
rsOpret.close set rsOpret = nothing end if OpretUpdate = fejl
End Function
fejlkode = OpretUpdate() UserID = "" if isNumeric(fejlkode) then UserID = fejlkode fejlkode = "" end if
conn.close set conn = nothing
'Send mail if UserID <> "" then Response.Redirect("send.asp?userid=" & userID) end if
if fejlkode = "" then Response.Redirect("login.asp) else Response.Write fejlkode end if end if %>
Det med javascriptet bliver i javascript kategorien hvor de kan hjælpe med det.
I mine ønje er det en rigtig dålig ide for det er totalt let for en som ved hvordan kan skal komme og se hvilke IP adresse og brugernavn du har i din database. Da man bare skal højre klikke og vælge view source. Derud over kan du afligevel ikke undvære det andet tjek eller har du en chance for flere ens brugernavne.
kan jeg ikek bare lave din tidligere code om til dette:
'Send mail if UserID <> "" then Response.Redirect("send.asp?userid=" & userID) end if end if
så sendes brugeren gemmen send.asp på 1 sek. og redirect til login.asp når send.asp er blevet kørt hvilket brugeren ikke burde lægge mærke til at denne overhovedet er sendt ind på send.asp eller vil du foreslå det eks du viste sidst med execute !??
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.