webForumDet fria alternativet

Snälla felmedelanden?!

ASP

17 svar · 223 visningar · startad av Jesper T

Medlem sedan nov. 20017 144 inlägg
Frågan#1

Hej, allt detta funkar hjälpligt, prblemet är att när jag skriver en dublett på användarnamnet (username) så kommer inte mitt snälla felmeddelande upp, varför?Är denna kod ful eller går det att göra på ett annat sätt? OBS! Lång kod!

<%
Option Explicit
Dim sql,rsUser,username,password,passwordconfirm,firstname,surname,address,zip,city,country,phone,mobil,email,dob,sex,notfilled(14),badflag,count,passwordLength,calltype,icon,dobmonth,dobday,member,lastlog
Dim besok,jmail,fritext

'Assign form values to variables
username = Request.Form("username")

'Make sure they've not put any quotation marks in their username
If InStr(username,chr(34)) <> 0 or InStr(username,chr(39)) <> 0 then
	errorfunction("invalidchars")
end if

'Make sure they've not put any quotation marks in their password
If InStr(password,chr(34)) <> 0 or InStr(password,chr(39)) <> 0 then
	errorfunction("invalidchars")
end if
firstname = Request.Form("firstname")
surname = Request.Form("surname")
address = Request.Form("address")
zip = Request.Form("zip")
city = Request.Form("city")
country = Request.Form("country")
phone = Request.Form("phone")
mobil = Request.Form("mobil")
email = Request.Form("email")
fritext = Request.Form("fritext")
sex = Request.Form("sex")
password = Request.Form("password")
passwordconfirm = Request.Form("passwordconfirm")
dob = Request.Form("birth_day") & "/" & Request.Form("birth_month") & "/" & Request.Form("birth_year")
icon = Request.Form("icon")
member = Request.Form("member")
besok = "1"
lastlog = Request.Form("timecode")

badflag = 0

if firstname = "" then
	notfilled(0) = "F&ouml;rnamnet"
	badflag = 1
end if
if surname = "" then
	notfilled(1) = "Efternamnet"
	badflag = 1
end if
if address = "" then
	notfilled(2) = "Gatuadressen"
	badflag = 1
end if
if zip = "" then
	notfilled(3) = "Postnummret"
	badflag = 1
end if
if city = "" then
	notfilled(4) = "Orten"
	badflag = 1
end if
if country = "" then
	notfilled(5) = "Landet"
	badflag = 1
end if
if phone = "" then
	notfilled(6) = "Hemtelefonnummret"
	badflag = 1
end if
if mobil = "" then
	notfilled(7) = "Mobiltelefonnummret"
	badflag = 1
end if
if email = "" then
	notfilled(8) = "E-postadressen"
	badflag = 1
end if
if username = "" then
	notfilled(9) = "Anv&auml;ndarnamnet"
	badflag = 1
end if
if password = "" then
	notfilled(10) = "L&ouml;senordet"
	badflag = 1
end if
if sex = "" then
	notfilled(11) = "K&ouml;net"
	badflag = 1
end if
if IsDate(dob) = "False" then
	notfilled(12) = "F&ouml;delsedatumet"
	badflag = 1
end if
if icon = "" then
	notfilled(13) = "Ditt ikonval"
	badflag = 1
end if

if badflag = 1 then
	signuperror()
end if

passwordLength = Len(password)
if passwordLength < 5 or passwordLength > 15 then
	errorfunction("length")
end if

if password <> passwordconfirm then
	errorfunction("confirm")
end if

%>
<!--#include virtual="/cn.asp"-->
<%
UserUpdate()

Function UserUpdate()

Set rsUser = Server.CreateObject("ADODB.Recordset")
rsUser.open "users", cn, 3, 3
rsUser.AddNew
rsUser("username") = username
rsUser("password") = password
rsUser("firstname") = firstname
rsUser("surname") = surname
rsUser("address") = address
rsUser("zip") = zip
rsUser("city") = city
rsUser("country") = country
rsUser("phone") = phone
rsUser("mobil") = mobil
rsUser("email") = email
rsUser("dob") = dob
rsUser("fritext") = fritext
rsUser("sex") = sex
rsUser("icon") = icon
rsUser("member") = member
rsUser("lastlogg") = lastlog
rsUser("besok") = besok
rsUser.Update

if Err.Number = -2147217887 then
	Err.clear
	errorfunction("badusername")
else

Set jmail = Server.CreateObject("JMail.Message")
 
jmail.AddRecipient "" & email & "", "" & firstname & ""
jmail.AddRecipientBCC ("jesper.trn@test.com")
	
jmail.From = "info@test.nu"
Jmail.Priority = 1
jmail.Subject = "Välkommen till test!"
jmail.appendHTML "<html><head></head><body><font face=tahoma,verdana size=2>"
jmail.appendHTML "<h4>Välkommen " & firstname & " "& surname &"</h4><br>  "
jmail.appendHTML "Förnamn:   "& firstname &"<br>"
jmail.appendHTML "Efternamn: "& surname &"<br>"
jmail.appendHTML "Adress:    "& address &"<br>"
jmail.appendHTML "Postnummer:"& zip &"  "
jmail.appendHTML "Postadress:"& city &"<br>"
jmail.appendHTML "Land:      "& country &"<br>"
jmail.appendHTML "------------------------------------------<br>"
jmail.appendHTML "Födelsedata:"& dob &"<br>"
jmail.appendHTML "Hemtelefon: "& phone &"<br>"
jmail.appendHTML "Mobiltfn:   "& mobil &"<br>"
jmail.appendHTML "------------------------------------------<br>"
jmail.appendHTML "<b>Användarnamn:</b>  " & username & "<br>"
jmail.appendHTML "<b>Lösenord:	  </b>  " & password & "<br>"
jmail.appendHTML "------------------------------------------<br>"
jmail.appendHTML "Det är trevligt att ha fått dig som medlem på test ... massa text kanske..<br>"
jmail.appendHTML "<br>"
jmail.appendHTML "</font></form></body></html>"
jmail.Send( "smtp.test.nu" )
Set jmail = nothing

	Response.Cokies("username") = username 
	Response.cokies("firstname") = firstname
%>
<html>
<head>
<title>test</title><LINK href="style_main.css" rel=stylesheet>
</head>
<body bgcolor="#FFFFFF">
<table width="45%" border="0">
  <tr> 
    <td width="24%"><img src="bilder/logo.gif" width="238" height="65"></td>
    <td width="23%">&nbsp;</td>
    <td width="53%">&nbsp;</td>
  </tr>
</table>
<p><font size="4">V&auml;lkommen!</font></p>
<p><font size="2">Och tack<font color="#FFFFFF">.</font><%=firstname%><font color="#FFFFFF">.</font></font> <font size="2"><%=surname%><font color="#FFFFFF">.</font>f&ouml;r din anm&auml;lan om medlemskap 
  p&aring; test</font></p>
<form name="form1" method="post" action="visit/visit_prew.asp" onsubmit="window.open('','fonster','width=500,height=350');" target="fonster">
  <input type="hidden" name="firstname" value="<%=firstname%>">
  <input type="hidden" name="surname" value="<%=surname%>">
  <input type="hidden" name="address" value="<%=address%>">
  <input type="hidden" name="zip" value="<%=zip%>">
  <input type="hidden" name="city" value="<%=city%>">
  <input type="hidden" name="country" value="<%=country%>">
  <input type="hidden" name="phone" value="<%=phone%>">
  <input type="hidden" name="mobil" value="<%=mobil%>">
  <input type="hidden" name="email" value="<%=email%>">
  <font size="2"> Jag best&auml;ller samtidigt visitkort: 200 st 
  <input type="radio" name="antal" value="200" checked>
  , 400st</font> 
  <input type="radio" name="antal" value="400">
  <input type="submit" name="Submit" value="Granska">
</form>
<table width="423" border="0" height="288">
  <tr> 
    <td> 
    </td>
  </tr>
</table>
<p align="left">&nbsp;</p>
<p><font size="2">Ditt anv&auml;ndarnamn &auml;r <%=username%>, och du &auml;r nu inloggad.</font></p>
<p>&nbsp;</p>
<p><a href="/indext.asp"><font face="Verdana, Arial, Helvetica, sans-serif">Tillbaka 
  till hemsidan</font></a> 

</body>
</html>

<%
rsUser.close
set rsUser = nothing
cn.close
set cn = nothing

end if
End Function%>
<%Function signuperror()%>
<html>
<head>
<title>test</title>
</head>
<body bgcolor="#FFFFFF" link="#DD0000" vlink="#DD0000" alink="#000000">
<font face="arial,helvetica" size=2>

<p><b>Du har inte fyllt i f&ouml;ljande f&auml;lt korrekt:</b></p>

<%for count = 0 to 13%>
	<%if notfilled(count) <> "" then%>
	<b><%=notfilled(count)%></b><br>
	<%end if%>
<%next%>

<p><a href="javascript:self.history.go(-1)">F&ouml;rs&ouml;k igen!</a></p>

</font>
</body>
</html>
<%Response.end
End Function%>

<%Function errorfunction(calltype)%>
<html>
<head>
<title>test</title>
</head>
<body bgcolor="#FFFFFF" link="#DD0000" vlink="#DD0000" alink="#000000">
<font face="arial,helvetica" size=2>

<%if calltype = "confirm" then%>
<p><b>Din l&ouml;senords bekr&auml;ftelse st&auml;mmer inte! </b></p>
<p><a href="javascript:self.history.go(-1)">F&ouml;rs&ouml;k igen!</a></p>

</font>
<%Response.end%>
<%elseif calltype = "length" then%>
<p><b>Ditt l&ouml;senord &auml;r inte mellan 5 och 12 tecken långt!</b></p>
<p><a href="javascript:self.history.go(-1)">F&ouml;rs&oumlk igen!</a></p>
<%Response.end%>
[b]
<%elseif calltype = "badusername" then%>
<p><b>Tyv&auml;rr, anv&auml;ndarnamnet &quot;<%=username%>&quot; andv&auml;nds redan.</b></p>[/b]
<p><a href="javascript:self.history.go(-1)">F&ouml;rs&oumlk igen!</a></p>
<%
Response.end

rsUser.close
set rsUser = nothing
cn.close
set cn = nothing

elseif calltype = "invalidchars" then%>
<p><b>Anv&auml;ndarnamnet kan inte inneh&aring;lla n&aring;gra s&aring;dana tecken.</b></p>
<p><a href="javascript:self.history.go(-1)">F&ouml;rs&oumlk igen!</a></p>

</body>
</html>
<%Response.end%>
<%end if
End Function%>

------------------
If ASPackad date-1 then ASPerin Now

Medlem sedan dec. 200012 464 inlägg
#2

Hur är det tänkt att fungera? Har du skapat ett unique constraint på kolumnen username?

Du behöver också lägga till lite kod så att inte körningen avbryts när du får fel.

[b]on error resume next[/b]
rs.update
if Err.Number = -2147217887 then

------------------
essentitia preter non sans multiplicandum

Medlem sedan nov. 20017 144 inlägg
#3

Har du skapat ett unique constraint på kolumnen username?

Jo jag har ju det!

if Err.Number = -2147217887 then
Err.clear
errorfunction("badusername")
else

Jag tog bort "on error" i denna version men jag fattar att man måste ha med det. När jag har med det så kan man "gå vidare" utan att bli medlem så att säga inget läggs till i databasen men man får access till sidorna!!! = dumt!

Jag vet inte vad som är felet?!

Username skall vara unikt och har jag med on error resume next så blir det så!

MVH Jesper

------------------
If ASPackad date-1 then ASPerin Now

Medlem sedan dec. 200012 464 inlägg
#4

Hur kontrollerar du att en person har access till en sida?

------------------
essentitia preter non sans multiplicandum

Medlem sedan nov. 20017 144 inlägg
#5

Så här:

<%
if Request.Co(o)kies("username") = "" then
  Response.Redirect("nologin.asp?page=index.asp")
end if
session("username") = username%>

Kör jag "on error resume next" så skapas ju en kaka med användarnamnet även fast det redan finns en annan användare i databasen med samma användarnamn, det ger den personen access till sidorna en gång. Tar jag bort "on error resume next" så kommer det ett felmeddelande, men det är ju inte så snyggt ju!

MVH Jesper

------------------
If ASPackad date-1 then ASPerin Now

[Redigerat av Jesper T den 10 feb 2002]

Medlem sedan nov. 20017 144 inlägg
#6

huummm... ;)

------------------
If ASPackad date-1 then ASPerin Now

Medlem sedan nov. 20017 144 inlägg
#7

Hjääälp!! :x

------------------
If ASPackad date-1 then ASPerin Now

Medlem sedan nov. 20017 144 inlägg
#8

Hjäääääääääällllppp!!!!!!!! :x :x :x :x :x :x :x :x :x

------------------
If ASPackad date-1 then ASPerin Now

Medlem sedan juni 200032 967 inlägg
#9

Jag gillar inte riktigt on error resume next.

Kan du inte göra tillräckliga kontroller, så slipper du skapa fel?

Ex: ställ en SELECT-fråga innan du lägger till användaren. Finns användaren redan (dvs du får något annat än ett tomt recordset), så kallar du på din errorfunction.

Det är livsfarligt med on error resume next, eftersom exekveringen av koden ju fortsätter om du inte själv bryter den med if-satser innan varje viktigt statement.

Mvh,

------------------
webForum har stängt 15-17/2 för uppgradering.

Medlem sedan mars 20015 287 inlägg
#10

Typ:

SQL = "SELECT username FROM users WHERE username = "& username
Set rs = Connection.Execute(SQL)
if rs.eof then

'Lägg in i databasen!

Else
'Snubben finns redan!
errorfunction("badusername")
end if

Du får komplettera med din öppning o stängning av databasen.
I "vanliga fall" har man väl frågan överst på sidan och kör sen inläggningen med ditt script om allt är ok. (=username finns inte.) Kanske kan gå att kalla på din errorfunktion inuti if-satsen iofs.
Sök annars på tex "om post finns" eller eof el. dyl

------------------
/solbulle
Hemmabio | Spelautomater | The Who | The Who II

[Redigerat av solbulle den 12 feb 2002]

Medlem sedan nov. 20017 144 inlägg
#11

gör så här nu, men nu godkänns inga namn! :l

Konstigt

------------------
If ASPackad date-1 then ASPerin Now

Medlem sedan juni 200032 967 inlägg
#12

Hur ser din kod ut nu?

------------------
webForum har stängt 15-17/2 för uppgradering.

Medlem sedan nov. 20017 144 inlägg
#13

Evighetstföljetongen ser ut ungefär såhär:

' kod kod kod massa kod
SQL = "SELECT username FROM users WHERE username = "& username

Set rsUser = Server.CreateObject("ADODB.Recordset")
rsUser.open "users", conn, 3, 3
if rsUser.eof then
  
rsUser.AddNew
rsUser("username") = username
rsUser("password") = password
rsUser("firstname") = firstname
rsUser("surname") = surname
rsUser("address") = address
rsUser("zip") = zip
rsUser("city") = city
rsUser("country") = country
rsUser("phone") = phone
rsUser("mobil") = mobil
rsUser("email") = email
rsUser("dob") = dob
rsUser("fritext") = fritext
rsUser("sex") = sex
rsUser("icon") = icon
rsUser("member") = member

rsUser.Update
else
Err.clear
	errorfunction("badusername")
end if
' kod kod kod massa kod

MVH Jesper

------------------
If ASPackad date-1 then ASPerin Now

Medlem sedan juni 200032 967 inlägg
#14

Du öppnar ju hela tabellen, och inte den SQL-frågan du skrivit. Så länge det finns någon data i tabellen läggs det alltså inte in någonting.

Ändra din rsUser.open-rad till:

rsUser.open SQL, conn, 3, 3

Mvh,

------------------
webForum har stängt 15-17/2 för uppgradering.

Medlem sedan nov. 20017 144 inlägg
#15

Ja, du ser vilken nivå vi snackar här :r

Tack!

------------------
If ASPackad date-1 then ASPerin Now

Medlem sedan nov. 20017 144 inlägg
#16

Ja ha, nu ser det ut så här!

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

/signupprocess.asp, line 126

SQL = "SELECT username FROM users WHERE username = "& username
Set rsUser = Server.CreateObject("ADODB.Recordset")
rsUser.open SQL, conn, 3, 3 'rad 126
if rsUser.eof then

------------------
If ASPackad date-1 then ASPerin Now

Medlem sedan juni 200032 967 inlägg
#17

Ah.

Apostrofer runt användarnamnet:

SQL = "SELECT username FROM users WHERE username = '"& username & "'"

Eftersom det är en sträng skall den omslutas av apostrofer, annars tolkas det som ett fält, och fältet Pelle finns ju inte, därav felmeddelandet.

Mvh,

------------------
webForum har stängt 15-17/2 för uppgradering.

Medlem sedan nov. 20017 144 inlägg
#18

Juste, skall genast hacka lite!
Citerar mig själv:

Ja, du ser vilken nivå vi snackar här

MVH Jesper T

------------------
If ASPackad date-1 then ASPerin Now

354 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
116 ms — deklarationer (db)
0 ms — hämta statistik (cache)
236 ms — hämta tråd, inlägg och bilagor (db)
116 ms — ändringar (db)