Avatar billede steen_hansen Forsker
13. marts 2005 - 13:00 Der er 8 kommentarer og
1 løsning

Opret bruger-problemer (ASP/VB-scripting)

Jeg har problemer med at overskue MySQL:

- Brugeren skal oprette sig selv v.hj.a. en formular.
- Når der submittes, tjekkes om alle oplysninger er udfyldt.
- Hvis alle informationer er udfyldt korrekt, sendes en mail med bekræftelse og automatisk generet password til brugerens e-mailadresse.
- Data indsættes i database


DOKUMENTET:

<%
    On Error Resume Next
    Dim adoConn
    Set adoConn = Server.CreateObject("ADODB.Connection")
    adoConn.Open "DSN=MinDatabase"

    Const MaxLengthUser = 16
    Const MaxLengthDescription = 2000
%>

    If Request.Form("mode") = "create" Then

        If Trim(Request.Form("username")) = "" Then
            Response.Redirect "/error.asp?msg=Indtast+venligst+et+brugernavn."
        ElseIf (Request.Form("accept")) = "" Then
            Response.Redirect "/error.asp?msg=Det+er+en+betingelse,+at+du+accepterer+betingelserne+for+anvendelsen+af+include.dk"
        ElseIf Trim(Request.Form("email")) = "" Then
            Response.Redirect "/error.asp?msg=Indtast+venligst+din+e-mail."
        ElseIf InStr(1,Request.Form("email"),"@") = 0 Or InStr(1,Request.Form("email"),".") = 0 Or Len(Request.Form("email")) < 6 Then 'Ugyldig e-mail (virker kun i et vist omfang)
            Response.Redirect "/error.asp?msg=Indtast+venligst+en+gyldig+e-mail."
        ElseIf Len(Request.Form("description")) > MaxLength Then
            Response.Redirect "/error.asp?msg=Din+beskrivelse+af+dig+selv+indeholder+for+mange+tegn."
        ElseIf Request.Form("accept") <> "on" Then
            Response.Redirect "/error.asp?msg=Du+kan+ikke+oprettes+på+include.dk+hvis+ikke+du+accepterer+vores+betingelser."
        End If

        If Not Conn.Execute("SELECT username FROM profiles WHERE username = '" & Request.Form("username") & "'").EOF Then
            Conn.Close
            Response.Redirect "/error.asp?msg=En+bruger+med+samme+brugernavn+eksisterer+allerede.+Indtast+venligst+et+andet+brugernavn."
        End If

        Dim vPassword
        vPassword = RandomString(8)

        Set JMail = Server.CreateObject("JMail.SMTPMail")
        JMail.ServerAddress = "mail.mydomain.dk"
        JMail.Sender = "my@domain.dk"
        JMail.Subject = "Velkommen til din nye profil"
        JMail.AddRecipient Trim(Request.Form("email"))
        JMail.AddRecipientBCC "my1@domain.dk"

        JMail.Body = _
            "........"

        Dim Dato
        Dato = Day(Date) & "/" & Month(Date) & "/" & Year(Date) & " " & Time

        If JMail.Execute() = True Then
            Conn.Execute("INSERT INTO profiles (username, firstname, lastname, pass, gender, email, zip, city, dayofbirth, monthofbirth, yearofbirth, description, created, lastIP) VALUES (" & _
                "'" & LTrim(RTrim(SQLEncode(Request.Form("username")))) & "', " & _
                "'" & LTrim(RTrim(SQLEncode(Request.Form("firstname")))) & "', " & _
                "'" & LTrim(RTrim(SQLEncode(Request.Form("lastname")))) & "', " & _
                "'" & SQLEncode(vPassword) & "', " & _
                "'" & LTrim(RTrim(SQLEncode(Request.Form("gender")))) & "', " & _
                "'" & Trim(SQLEncode(Request.Form("email"))) & "', " & _
                "'" & Trim(SQLEncode(Request.Form("zip"))) & "', " & _
                "'" & Trim(SQLEncode(Request.Form("city"))) & "', " & _
                "'" & LTrim(RTrim(SQLEncode(Request.Form("dayofbirth")))) & "', " & _
                "'" & LTrim(RTrim(SQLEncode(Request.Form("monthofbirth")))) & "', " & _
                "'" & LTrim(RTrim(SQLEncode(Request.Form("yearofbirth")))) & "', " & _
                "'" & LTrim(RTrim(SQLEncode(Request.Form("description")))) & "', " & _
                "'" & Dato & "', " & _
                "'" & SQLEncode(Request.ServerVariables("REMOTE_ADDR")) & "')")

            Conn.Close
        Else
            Conn.Close
            Response.Redirect "/error.asp?msg=E-mailen+med+dine+brugeroplysninger+kunne+ikke+sendes+til+din+e-mail+(" & Trim(Request.Form("email")) & ")+og+din+bruger+kunne+derfor+heller+ikke+oprettes.+Kig+efter+om+du+har+indtastet+den+korrekte+e-mail+adresse+eller+indtast+en+anden+og+prøv+igen."
        End If

        Set JMail = Nothing
        Response.Redirect "/default.asp?msg=Du+er+blevet+oprettet.+Du+vil+inden+for+kort+tid+modtage+en+e-mail+med+dine+brugeroplysninger,+som+du+skal+bruge+første+gang+du+logger+ind."

    End If

%>

<html>

<head>
<script type="text/JavaScript" language="JavaScript">
function showLenUser()
    { document.frmUser.countdownuser.value = <%=MaxLengthUser%> - document.frmUser.username.value.length }
</script>
<script type="text/JavaScript" language="JavaScript">
function showLenDescription()
    { document.frmUser.countdowndescription.value = <%=MaxLengthDescription%> - document.frmUser.description.value.length }
</script>
</head>

<body onload="showLenUser"();">

            <form name="frmUser" action="/login.asp" method="post" style="margin: 0px;">
            <input type="hidden" name="mode" value="create">
                <table border="0" cellpadding="0" cellspacing="0" style="width: 568px;">
                    <tr>
                        <td colspan="4" style="height: 30px;"></td>
                    </tr>
                    <tr>
                        <td align="left" colspan="4" class="headlinepadding headline" style="width: 568px; padding-bottom: 20px;">Opret mig som bruger</td>
                    </tr>
                    <tr>
                        <td align="left" colspan="4" style="padding-bottom: 20px; width: 568px;"><b>Alle felter skal udfyldes. Det er dog kun brugernavn og alder, der som standard vil blive vist i din profil.</b></td>
                    </tr>
                    <tr>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 110px;">Brugernavn:</td>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 220px;"><input tabindex="1" style="width: 208px;" type="text" name="username" onkeydown="showLenUser();" onkeyup="showLenUser();" onchange="showLenUser();" onfocus="showLenUser();" onblur="showLenUser();" class="input1"></td>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 50px;"><input type="text" style="width: 38px;" name="countdownuser" readonly value="" class="input1"></td>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 188px;">&nbsp;</td>
                    </tr>
                    <tr>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 110px;">Fornavn:</td>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 220px;"><input tabindex="2" type="text" style="width: 208px;" name="firstname" class="input1"></td>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 50px;">&nbsp;</td>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 188px;">&nbsp;</td>
                    </tr>
                    <tr>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 110px;">Efternavn:</td>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 220px;"><input tabindex="3" type="text" style="width: 208px;" name="lastname" class="input1"></td>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 50px;">&nbsp;</td>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 188px;">&nbsp;</td>
                    </tr>
                    <tr>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 110px;">E-mail:</td>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 220px;"><input tabindex="4" type="text" style="width: 208px;" name="email" class="input1"></td>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 50px;">&nbsp;</td>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 188px;">&nbsp;</td>
                    </tr>
                    <tr>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 110px;">Gentag e-mail:</td>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 220px;"><input tabindex="5" type="text" style="width: 208px;" name="confirmemail" class="input1"></td>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 50px;">&nbsp;</td>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 188px;">&nbsp;</td>
                    </tr>
                    <tr>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 110px;">Postnummer:</td>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 220px;">
                            <input tabindex="6" type="text" style="width: 50px;" name="p" onblur="fillPn(this.form);" class="input1">
                            <input type="text" name="b" onfocus="this.blur();" class="input3" readonly>
                        </td>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 50px;">&nbsp;</td>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 188px;">&nbsp;</td>
                    </tr>
                    <tr>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 110px;">Fødselsdato:</td>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 220px;">
                            <table border="0" cellpadding="0" cellspacing="0">
                                <tr>
                                    <td align="left" style="padding-right: 5px;">
                                        <select tabindex="7" size="1" name="dayofbirth" class="input1">
                                            <option value="01">1</option>
                                            <option value="02">2</option>
                                            <option value="03">3</option>
                                            <option value="04">4</option>
                                            <option value="05">5</option>
                                            <option value="06">6</option>
                                            <option value="07">7</option>
                                            <option value="08">8</option>
                                            <option value="09">9</option>
                                            <option value="10">10</option>
                                            <option value="11">11</option>
                                            <option value="12">12</option>
                                            <option value="13">13</option>
                                            <option value="14">14</option>
                                            <option value="15">15</option>
                                            <option value="16">16</option>
                                            <option value="17">17</option>
                                            <option value="18">18</option>
                                            <option value="19">19</option>
                                            <option value="20">20</option>
                                            <option value="21">21</option>
                                            <option value="22">22</option>
                                            <option value="23">23</option>
                                            <option value="24">24</option>
                                            <option value="25">25</option>
                                            <option value="26">26</option>
                                            <option value="27">27</option>
                                            <option value="28">28</option>
                                            <option value="29">29</option>
                                            <option value="30">30</option>
                                            <option value="31">31</option>
                                        </select>
                                    </td>
                                    <td align="left" style="padding-right: 5px;">
                                        <select tabindex="8" size="1" name="monthofbirth" class="input1">
                                            <option value="01">januar</option>
                                            <option value="02">februar</option>
                                            <option value="03">marts</option>
                                            <option value="04">april</option>
                                            <option value="05">maj</option>
                                            <option value="06">juni</option>
                                            <option value="07">juli</option>
                                            <option value="08">august</option>
                                            <option value="09">september</option>
                                            <option value="10">oktober</option>
                                            <option value="11">november</option>
                                            <option value="12">december</option>
                                        </select>
                                    </td>
                                    <td align="left">
                                        <select tabindex="9" size="1" name="yearofbirth" class="input1">
                                            <option value="2005">2005</option>
                                            ..........
                                            <option value="1900">1900</option>
                                        </select>
                                    </td>
                                </tr>
                            </table>
                        </td>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 50px;">&nbsp;</td>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 188px;">&nbsp;</td>
                    </tr>
                    <tr>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 110px;">Jeg er af:</td>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 220px;">
                            <select tabindex="10" size="1" name="gender" class="input1">
                                <option value="female">hunkøn</option>
                                <option value="male">hankøn</option>
                            </select>
                        </td>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 50px;">&nbsp;</td>
                        <td align="left" style="padding: 3px 0px 3px 0px; width: 188px;">&nbsp;</td>
                    </tr>
                    <tr>
                        <td align="left" valign="top" style="padding: 3px 0px 3px 0px; width: 110px;">Egen beskrivelse:</td>
                        <td align="left" style="padding: 3px 0px 3px 0px;" colspan="3">
                            <table border="0" cellpadding="0" cellspacing="0" style="width: 100%;">
                                <tr>
                                    <td><textarea tabindex="11" onkeydown="showLenDescription();" onkeyup="showLenDescription();" onchange="showLenDescription();" onfocus="showLenDescription();" onblur="showLenDescription();" name="description" rows="<%=TXTRows%>" cols="<%=TXTCols%>" class="input1"></textarea></td>
                                    <td align="left" valign="top"><input type="text" style="width: 38px;" name="countdowndescription" readonly value="" class="input1"></td>
                                </tr>
                            </table>
                        </td>
                    </tr>
                    <tr>
                        <td align="left" colspan="4" style="width: 568px;"><% If Trim(Request.Form("username")) = "" Then %><b><%=msgUsername%></b><% Else %>&nbsp;<% End If %></td>
                    </tr>
                    <tr>
                        <td align="left" colspan="4" style="width: 568px;">
                            <table border="0" cellpadding="0" cellspacing="0" style="width: 568px;">
                                <tr>
                                    <td align="left" valign="top" style="width: 5%; padding: 20px 0px 20px 0px;"><input tabindex="12" type="checkbox" name="accept"></td>
                                    <td align="left" style="width: 95%; padding:  20px 0px 20px 0px;">
                                        Jeg har gennemlæst og accepterer <a href="#" onfocus="this.blur();"><b>betingelserne</b></a> for anvendelsen af include.dk.<br>
                                        Samtidigt vedkender jeg mig at have gennemlæst og accepterer følgende:
                                        <a href="#" onfocus="this.blur();" title="Disclaimer" style="display: block; width: 100%;">Disclaimer</a>
                                        <a href="#" onfocus="this.blur();" title="Ophavsrettigheder" style="display: block; width: 100%;">Ophavsrettigheder</a>
                                        <a href="#" onfocus="this.blur();" title="Etikette findes også på Internettet" style="display: block; width: 100%;">Netetikette</a>
                                    </td>
                                </tr>
                                <tr>
                                    <td align="left" style="width: 5%;">
                                    <td align="left" style="width: 95%;"><input tabindex="13" type="submit" name="" value="Opret min profil" class="input2"></td>
                                </tr>
                            </table>
                        </td>
                    </tr>
                </table>
            </form>

</body>

</html>

Der bliver ikke gemt noget i DB, og der bliver ikke tjekket for, at oplysningerne er korrekte eller mangelfulde. Og der bliver selvfølgelig ikke sendt nogen e-mail. Håber på hjælp snarest
Avatar billede steen_hansen Forsker
13. marts 2005 - 13:01 #1
Mangler lige felterne i DB, øjeblik ...
Avatar billede steen_hansen Forsker
13. marts 2005 - 13:07 #2
userID:
Type = smallint(6)
Null = No
Extra = auto_increment
Primary
Index

username:
Type = varchar(16)
Null = No

pass:
Type = varchar(8)
Null = No

firstname:
Type = varchar(16)
Null = No

lastname:
Type = varchar(16)
Null = No

email:
Type = varchar(60)
Null = No

dayofbirth:
Type = char(2)
Null = No

monthofbirth:
Type = char(2)
Null = No

yearofbirth:
Type = char(4)
Null = No

description:
Type = text(2000)
Null = No
Avatar billede steen_hansen Forsker
13. marts 2005 - 19:43 #3
Jeg ved der er noget at kigge igennem, sætter point op til maks
Avatar billede bernhof Nybegynder
13. marts 2005 - 22:27 #4
Hej Steen

Jeg har ikke tid til at kigge det hele igennem lige nu, men ved første øjekast så jeg, at der er et %> tag hvor det ikke skal være - helt i starten af dokumentet. Skal bare lige sikre mig, at det bare er en copy/paste fejl, og at dokumentet ikke ser sådan ud i virkeligheden:

<%
    On Error Resume Next
    Dim adoConn
    Set adoConn = Server.CreateObject("ADODB.Connection")
    adoConn.Open "DSN=MinDatabase"

    Const MaxLengthUser = 16
    Const MaxLengthDescription = 2000

%> ---SKAL DETTE VÆRE HER?

    If Request.Form("mode") = "create" Then

        If Trim(Request.Form("username")) = "" Then
        ...

Hvis det ikke løser problemet, så skriv :)
Avatar billede steen_hansen Forsker
14. marts 2005 - 01:12 #5
Ok, det var en copy/paste fejl :)

Jeg er på vej i seng, men kigger lidt mere på det i morgen. Finder du frem til noget, så råb endelig højt. Snakkes :)
Avatar billede steen_hansen Forsker
07. april 2005 - 22:28 #6
Lukker, Mikkel. Fandt ud af noget Response.Redirect var forkert. Se også http://www.eksperten.dk/spm/607586
Avatar billede steen_hansen Forsker
07. april 2005 - 22:28 #7
Lukker
Avatar billede bernhof Nybegynder
08. april 2005 - 11:48 #8
Hey Steen!

Jeg har desværre ikke haft meget overskud til at kigge på det, så jeg er glad for, at du fandt ud af det! :o)

Mikkel
Avatar billede steen_hansen Forsker
09. april 2005 - 07:25 #9
Der er ikke helt styr på det, men jeg prøver. Kører jeg helt fast, hiver jeg fat i dig :)

Snakkes!
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
Computerworld tilbyder specialiserede kurser i database-management

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