Set rs = Conn.execute ("SELECT * FROM user WHERE mail='" & mail & "'")
If Not rs.Eof Then Response.Write("<p><font color=red>Det indtastede mail adresse er allerede tilmeldt vores nyhedsbrev.</font></p>") fejl = true End If Conn.Close Set Conn = Nothing %>
Den virker fint, men jeg vil gerne have den til at være på den samme side som man indtaster mail adressen.
if request.querystring("mode") = "check" then fejl = false mail = Request.Form("mail") Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("log/newsletter.mdb") Set rs = Conn.execute ("SELECT * FROM user WHERE mail='" & mail & "'") If Not rs.Eof Then Response.Write("<p><font color=red>Det indtastede mail adresse er allerede tilmeldt vores nyhedsbrev.</font></p>") fejl = true End If Conn.Close Set Conn = Nothing end if
Den virker kun hvis jeg sætter actionen til min egen side, men jeg vil have den til en anden side, hvis den går igennem. Forstod du noget af det?
Her er AL min kode: <!-- #include file="script_nyhedsbrev.asp" --> <form method="post" onsubmit="return Check_Form(this)" action="send_mail.asp?mode=check"> Her kan du tilmelde dig til nyhedsbrevet <p /> Dit navn: <input type="text" name="navn" id="navn"> <br /> Din mail adresse: <input type="text" name="mail" id="mail"> <p/> Dit ønskede password: <input type="password" name="password" id="password"> <br/> Password kontrol: <input type="password" name="password_kontrol" id="password_kontrol"> <p/> <input type="submit" value="Tilmeld til Nyhedsbrevet" name="login" id="login"> <input type="hidden" value="no" name="godkend" id="godkend"> <p/> <% if request.querystring("mode") = "check" then fejl = false mail = Request.Form("mail") Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("log/newsletter.mdb") Set rs = Conn.execute ("SELECT * FROM user WHERE mail='" & mail & "'") If Not rs.Eof Then Response.Write("<p><font color=red>Det indtastede mail adresse er allerede tilmeldt vores nyhedsbrev.</font></p>") fejl = true End If Conn.Close Set Conn = Nothing end if %> <br/> <p/> Betingelser: <br/> 1. Du tilmelder dig til at modtage nyhedbreve. <br> 2. Du vil ikke modtage noget spam mail. </br> 3. Din mail adresse bliver ikke givet til andre. </form>
Hvis jeg sætter min action til: <form method="post" onsubmit="return Check_Form(this)" action="tilmeld.asp?mode=check">
Du har en form hvor du indtaster nogle data. Dem sender du til en side (Den samme som formsiden???). Her tjekker du så om emailen eksistere i databasen. Hvis den ikke gør (OK), vil du til en anden side. Hvad skal der ske her??? Jeg vil tro, det er noget med at gemme oplysningerne i databasen.
Jeg har min formside, hvor at brugerne indtaster sine oplysninger og klikker på "Tilmeld til Nyhedsbrevet", når at personen klikker på knappen, bliver siden undersøgt om alle tekstboksene er udfyldt og der skal der også undersøges om mail adressen findes i databasen, hvis mail adressen ikke findes i databasen, gemmes alle oplysningerne og bliver sendt til personens mail adresse.
Jeg vil have at man ikke kan komme videre, uden at mail adressen er ny og alle tekstboksene er udfyldt.
Alle tekstboksene og mail adressen skal undersøges på formsiden, og der efter skal de sendes til en ny side, hvor at de bliver gemt og sendt.
Jeps. Men det giver et lille problem. Hvis oplysningerne skal gemmes på en anden side skal de sendes en gang til. Hvilket er lidt besværlig. Jeg ville gemme oplysningerne på den samme side, ellers skal vi til at oprette en dummy form med hiddenfelter, som bliver submittet onLoad.
Sådan: Set rs = Conn.execute ("SELECT * FROM user WHERE mail='" & mail & "'") If Not rs.Eof Then Response.Write("<p><font color=red>Det indtastede mail adresse er allerede tilmeldt vores nyhedsbrev.</font></p>") fejl = true else 'email eksistere ikke. Gem oplysninger. fejl = false conn.execute("insert into ......") End If
De skal ikke sendes flere gange, når at man klikker på "Tilmeld til Nyhedsbrevet", så skal alle tekstboksene undersøges om de er udfyldt, og det virker, men der skal også undersøges om den indtastet mail adresse findes allerede, OG det er kun hvis mail adressen ikke findes at oplysningerne skal sendes(For første gang), og der skal komme en advarsel frem at den indtastet mail adresse findes allerede.
Jeg har prøvet med en onclick på min submit knap, men det virkede hellere ikke.
Da det skal køre gennem ASP bliver du nød til at sende oplysninger for at kunne tjekke det. Hvis du vil gøre det uden, kan du oprette et JavaScript array, hvor alle email er i, men de oplysninger vil så kunne ses, ved at trykke "vis kilde" i browseren, og det må du ikke i følge loven uden samtykke fra brugerne. Og det er desuden guf for spybots som samler emails til spammere. Du kunnen evt. kryptere dem, men det er meget arbejde for at tjekke det.
Så ville jeg holde mig til forslag "10/09-2004 10:02:21".
Jeg har været inde på www.libris.dk, og der kan man tilmelde sig til deres nyhedsbrev, når at man klikker på "Tilmeld", så undersøger den om mail adressen findes i databasen, og hvis ikke, så gemmes den i deres database, det var sådan noget som jeg mener, men ikke med at skifte side.
Det lader altså til at de submitter data inden de tjekker emailen. Jeg kan i hvert fald ikke se det i koden (JavaScript). De gør det så bare lidt smart med at submitte til et popup vindue, hvor jeg gætter på de tjekker/tilføjer/fjerner emailen.
Set rs = Conn.execute ("SELECT * FROM user WHERE mail='" & mail & "'")
If Not rs.Eof Then Response.Write("<p><font color=red>Det indtastede mail adresse er allerede tilmeldt vores nyhedsbrev.</font></p>") fejl = true Response.Redirect "tilmeld.asp" else Response.Redirect "sendt_mail_incl.asp" End If Conn.Close Set Conn = Nothing %>
Hvis mailen er tilmeldt så sendes man tilbage til tilmelds siden, hvor at man så skal skrive en ny mail adresse, men når at man kommer tilbage så er alt blank, så skal man skrive alt igen. Hvis mail adressen findes, så har jeg lavet en response.redirect, men den sender en tilbage med der samme, jeg vil gerne have at man bliver der 1-2 sekunder før at man sendes tilbage.
Nu er jeg kommet så langt at jeg har fået alt til at virke, men jeg vil gerne have at min validering ikke skal nulstille alt. Jeg har sat min mail validering ind på min tilmelds side, det virker men den refresh'er altid siden, hvis mail adressen findes, hvordan man jeg lave så den ikke sletter alt i tekst felterne? Jeg har lavet en lille "film", som viser hvad jeg mener(Den gentager sig selv, bare at du ved det), her er linket: http://www.darkskies.dk/mail.html
Du kan lægge et svar, så sender jeg 30 point, mange tak for hjælpen.
Det er fordi du laver en redirect. Enten skal du sende alle form felter med på url'en du redirecter til ("sendt_mail_incl.asp?mail="& mail). Eller også skal du gøre det gennem javascript. Det er også den eneste måde at lave en forsinkelse på. Så i stedet for en redirect, skal du lave en form som bliver submittet med en forsinkelse.
If Not rs.Eof Then %> <html> <body onLoad="send()"> <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> <!-- function send() { window.setTimeout('document.minForm.submit()', 5000); } //--> </SCRIPT> <p><font color=red>Det indtastede mail adresse er allerede tilmeldt vores nyhedsbrev.</font></p> <form name="minForm" method="post"> <input type="hidden" name="mail" value="<%= mail %>"> </form> </body> </html> <% response.end else Response.Redirect "sendt_mail_incl.asp" 'Måske noget af det samme her???? End If
mangler lige en action på formen :o) <form name="minForm" method="post" action="tilmeld.asp">
Synes godt om
Ny brugerNybegynder
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.