WN

WN (https://www.wn.se/forum/index.php)
-   Klientsidans teknologier, design och grafik (https://www.wn.se/forum/forumdisplay.php?f=12)
-   -   Problem med formulär (https://www.wn.se/forum/showthread.php?t=34521)

VideoBengt 2009-01-17 12:57

Håller på med en föreningssida där jag bl.a. skall kunna göra medlemsansökan via ett formulär.

Har skapat ett formulär som börjar så här:
<form method=post action="mailto:[email protected]?subject=Medlem sansökan till föreningen" enctype="text/plain" name="emailform" onSubmit="return checkFields()">

efter alla formulärfält kommer

<pre><input type=submit value="Skicka ansökan!"></pre>

När jag provar i IE7 så skickas mitt formulär efter att jag kvitterat i två rutor.
När jag provar i FF3 så öppnas ett e-postfönster, alla info finns där och jag får trycka på skicka.
När jag provar i Opera 9 så öppnas ett e-postfönster med adress och ämnesrad ifyllt, i övrigt tomt.
Detta sista händer även med IE (troligen6) har jag fått veta.
Har inte kunat kolla med fler webläsare

Vad är fel?

Finns det någon bättre lösning för att skapa ett formulär för, som i det här fallet, göra en medlemsansökan på hemsidan?

gsoc 2009-01-17 15:47

Använd php och mail() ?

Bara bökigt med sidor som använder mailto:

kw_wasabi 2009-01-17 16:59

Det är bäst att undvika mailto: som gsoc skriver. Genom att använda ett PHP- eller ASP mailscript så kan du låta besökarna skicka mail via din server för utgående e-post (SMTP-server).

Använder du mailto: så krävs det att besökarna har angett ett mailprogram (t.ex Outlook) som standard i sin webbläsare. Samt har ett e-postkonto och serverinställningar registrerade i programmet. De besökare som använder Hotmail och Gmail etc har sällan konfiguerat sin Outlook.

Anledningen till att det funkar för dig i IE7 är kanske att du just har angett ett standardmailprogram i den webbläsaren.

VideoBengt 2009-01-17 20:12

Skall snarast skrota mailto-varianten!

Tips på lämpligt script mottages tacksamt.
Det finns ju "hur mycket som helst" när man söker på Google.

Hemsidan bor på one.com så jag kan använda ASP - PHP5 - MySQL för detta.

allstars 2009-01-17 20:37

kolla hos one.com om de har exempelfunktionalitet

VideoBengt 2009-01-17 20:49

Där finns ngt som heter: "FormMail.pl"

Förmodar att det använder det webhotellets SMTP-server, hittar inget mailto i scriptet?

I så fall testar jag att bygga vidare på det.

kw_wasabi 2009-01-17 21:02

Här är ett ASP-script jag tycker funkar bra. Det kräver inte speciellt mycket ASP-kunskaper, det är mest bara att fylla i rätt uppgifter för mailserver etc. Själva formuläret kan behöva snyggas till lite.


formular.asp
Kod:

<form method="post" action="skicka.asp"> 
<table border="0" align="center" id="text">
<tr>
 <td colspan="2"><font size="2" face="Verdana"><b><font size="1"></font></b></font></td>
</tr>
<%
IF Len(Session("kontakta_mig")) <> 0 then
If Len(Session("falt")) <> 0 then
        uppg = Split(Session("falt"),"$|$")
        mess = uppg(0)
        namn = uppg(2)
        epost = uppg(1)
        hemsida = uppg(3)
        Session("falt") = ""
End If
felet = Session("kontakta_mig")
Session("kontakta_mig") = ""
End If
IF len(felet) <> 0 then
%>
<tr>
 <td colspan="2">
        <%
Response.Write "<i><font face='verdana' size='1'>" & felet & "</font></i>"
%>
 </td>
</tr>
<%
END IF%>
<tr>
 <td colspan="2">Meddelande:<font color="#FF0000">*</font></td>
</tr>
<tr>
 <td colspan="2"><textarea name="meddelande" rows="8" cols="58" style="font-family: verdana; background: #C8C8C8; font-size: 10px; border: #000000 1px solid"><%=mess%></textarea></td>
</tr>
<tr>
 <td>Ditt namn: <font color="#FF0000">*</font></td>
 <td><input type="text" size="35" name="namn" value="<%=namn%>" style="font-family: verdana; background: #C8C8C8; font-size: 10px; border: #000000 1px solid"></td>
</tr>
<tr>
 <td>E-Mail: <font color="#FF0000">*</font></td>
 <td><input type="text" size="35" name="epost" value="<%=epost%>" style="font-family: verdana; background: #C8C8C8; font-size: 10px; border: #000000 1px solid"></td>
</tr>
<tr>
 <td>Hemsida: </td>
 <td><input type="text" size="35" name="hemsida" value="<%=hemsida%>" style="font-family: verdana; background: #C8C8C8; font-size: 10px; border: #000000 1px solid"></td>
</tr>
<tr>
 <td>Spamskydd: <font color="#FF0000">*</font></td>
 <td><input type="checkbox" value="haha" name="skydd" style="height: 10px; width: 10px;"> <font size="1" face="Verdana">(kryssa i rutan)</font></td>
</tr>
<tr>
 <td></td>
 <td> <input type="submit" name="submit" value="Skicka" style="font-family: verdana; font-size: 10px; border: #000000 1px solid">
 </td>
</tr>
</table>
</form>

skicka.asp
Kod:

<%
' På denna sida finns koden som gör att dina besökares meddelanden skickas till din e-post adress.
' Det är därför viktigt att du anger korrekta uppgifter nedan.

Dim formularsida, mottagare_namn, mottagare_epost, rubrik, mailserver
formularsida = "formular.asp" ' Ändra här om du bytt namn på sidan med formuläret
mottagare_namn = "Webmaster" ' Här anger du namnet på den mailen skall skickas till
mottagare_epost = "[email protected]" ' Här anger du till vilken mailadress allt skall skickas
rubrik = "Mail från hemsidan" ' Ändra här om du vill ha annan rubrik på alla mail som skickas
mailserver = "smtp.xxxxxxxxx.xxxxx ' VIKTIGT! Ändra denna till din e-post adress SMTP server!
'(SMTP-server = Server för utgående mail)

'=================================================================================================
'OBSERVERA!
'Här nedan finns kod som gör att meddelandet skickas och skall fungera helt felfritt, det brukar
'vara fel på mailservern, eller e-post adressen som orsakar fel. Så PILLA INTE i nedanstående kod
'om du inte har goda kunskaper om ASP och vet vad du gör!
'=================================================================================================


'Här hämtas informationen och läggs i variabler.
Dim Meddelande, epost, namn, hemsida, innehall, sida
Meddelande = Request.Form("meddelande")
epost = Request.Form("epost")
namn = Request.Form("namn")
hemsida = Request.Form("hemsida")
skydd = Request.Form("skydd")
innehall = meddelande & "$|$" & epost & "$|$" & namn & "$|$" & hemsida
sida = formularsida


'Här kontrolleras fälten så att alla obligatoriska fält är ifyllda
IF Not Len(Meddelande) <> 0 then
        session("falt") = innehall
        Session("kontakta_mig") = "Du glömde att skriva in ett meddelande"
        Response.Redirect sida
ELSEIF Not Len(namn) <> 0 then
        session("falt") = innehall
        Session("kontakta_mig") = "Du glömde att fylla i ditt namn"
        Response.Redirect sida
ELSEIF Not Len(epost) <> 0 then
        session("falt") = innehall
        Session("kontakta_mig") = "Du glömde att fylla i din e-post adress"
        Response.Redirect sida
ELSEIF Not Len(skydd) <> 0 then
        session("falt") = innehall
        Session("kontakta_mig") = "Du glömde att fylla i spamskyddet"
        Response.Redirect sida
END IF


'Här kontrolleras spamskyddet
IF Instr(skydd,"haha") Then
        ' inget
ELSE
        session("falt") = innehall
        Session("kontakta_mig") = "Du har inte skrivit rätt i spamskyddsfältet"
        Response.Redirect sida
END IF


'Här kontrolleras e-post adressen
IF Instr(epost,"@") Then
        ' inget
ELSE
        session("falt") = innehall
        Session("kontakta_mig") = "Du har angett en felaktig e-post adress"
        Response.Redirect sida
END IF
IF Instr(epost,".") Then
        ' inget
ELSE
        session("falt") = innehall
        Session("kontakta_mig") = "Du har angett en felaktig e-post adress"
        Response.Redirect sida
END IF

' Här ändras hemsideadressen så att den alltid inleds med http://
IF Len(hemsida) <> 0 Then
        IF Left(hemsida,7) = "http://" Then
 webb = Lcase(hemsida)
        ELSE
 webb = "http://" & Lcase(hemsida)
        END IF
END IF

'=================================================================================================
' Här börjar själva jmailandet. Ändra inte nedanstående kod, om du inte har goda kunskaper om ASP
' JMAIL-komponentens funktioner. Det är väldigt ovanligt att fel uppstår i nedanstående kod. Om
' Fel uppstår på raden precis nedanför denna kommentar så brukar det bero på att servern INTE HAR
' STÖD FÖR JMAIL.
'=================================================================================================

Set mailare = Server.CreateObject("JMail.Message")
        mailare.AddRecipient ""&mottagare_epost&"", ""&mottagare_namn&""
        mailare.From = ""&epost&""
        mailare.FromName = ""&namn&""
        mailare.Subject = ""&rubrik&""
        mailare.AppendHTML "<font face='verdana' size='1'>" & Replace(Server.HTMLEncode(Meddelande),vbCrlf,"<br>") &_
        "<br><br><br>------------------------------------------<br><b>Skickades:</b> " & Now & "<br><b>Namn: </b> "&_
        namn & "<br><b>E-mail: </b> " & epost & "<br>"
        If Len(hemsida) <> 0 then
 mailare.AppendHTML "<b>Hemsida: </b><a href=" & webb & ">" & webb & "</a><br>"
        End If
        mailare.AppendHTML "------------------------------------------<br></font>"
        mailare.Send(""&mailserver&"")
        mailare.Close
Set mailare = nothing

Session("kontakta_mig") = "Meddelandet är nu skickat!"
Response.Redirect sida
%>


VideoBengt 2009-01-17 21:19

Tack så mycket!

Skall testa detta.

kw_wasabi 2009-01-17 22:19

Gör det! Om du stöter på problem så är det bara att fråga här i tråden.

VideoBengt 2009-01-17 23:36

Jag får det inte att fungera. Svaret är enkelt: One.com har inte stöd för JMAIL.
Fick förslaget att använda CDONTS.

Ingen aning vad det är men det får kollas imorgon.

etanders 2009-01-17 23:50

Det är väldigt enkelt att skicka mail med php. I sin enklaste form bara så här:

Kod:

<?
$to = "mottagare@domän.se";
$subject = "Ett testmail";
$message = "Detta är ett litet testmeddelande";
$headers = "From: avsändare@domän.se";
mail($to, $subject, $message, $headers);
?>

Läs mer här http://se.php.net/manual/en/function.mail.php

Om du sätter action="DinFilMedPhpKodFörAttSkickaMail.php" i ditt formulär och har en input-tag med name="thisIsMyInput" så kan du nå värdet som matats in genom $_GET["thisIsMyInput"] resp. $_POST["thisIsMyInput"] i php-koden, beroende på om du har method="get" eller method="post" i ditt formulär.

martine 2009-01-18 11:16

Citat:

Originally posted by VideoBengt@Jan 17 2009, 21:49
Där finns ngt som heter: "FormMail.pl"

Förmodar att det använder det webhotellets SMTP-server, hittar inget mailto i scriptet?

I så fall testar jag att bygga vidare på det.

Det enklaste vore nog att använda FormMail.pl som tydligen redan finns där.

Sök på FormMail.pl tills du hittar instruktioner som du förstår. Du behöver bara göra ett formulär med action till FormMail.pl så skickas det.
Exemplevis: http://www.nethere.com/support/webhosting/...e-formmail.html

VideoBengt 2009-01-18 16:41

Nu har jag provat FormMail.pl.
Det får jag att fungera som jag vill, nästan.

Jag skall kunna skapa en egen "Du har inte fyllt i alla fält-sida" med följande kodsnutt: <input type="hidden" name="missing_fields_redirect "value="http://www.yoursite.com/form_error.html">

Jag har skapat en sådan sida, lagt den på rätt plats men jag får bara FormMails egen "Error: Blank Fields-sida"

Kodsnutten är lagd sist i raden med övriga <input type="hidden"

Vad gör jag för fel tro?

Eftersom jag vill ha "felsidan" på svenska har jag även provat med att översätta texten i felmeddelande i FormMail.pl till svenska men det lyckades inte heller.

martine 2009-01-18 17:18

Citat:

Originally posted by VideoBengt@Jan 18 2009, 17:41
<input type="hidden" name="missing_fields_redirect "value="http://www.yoursite.com/form_error.html">
Ser det exakt ut som ovan så har ett mellanslag hamnat fel.

missing_fields_redirect "value
ska vara
missing_fields_redirect" value

VideoBengt 2009-01-18 17:41

Tack!

Tänk vad lite luft på rätt ställe gör underverk.

Lambda 2009-01-25 14:59

Citat:

Originally posted by VideoBengt@Jan 18 2009, 17:41
Eftersom jag vill ha "felsidan" på svenska har jag även provat med att översätta texten i felmeddelande i FormMail.pl till svenska men det lyckades inte heller.
Vill du slippa krångel kan du prova ett formulär jag gjorde förra veckan:
www.street-legal.net/contact.php

Osynligt spamskydd (Captcha är fult/tråkigt/jobbigt)
JS validering av alla fält med snygg fel rapportering
Allt på svenska
css grafik
Sidan behöver inte laddas om när du skickar mailet eller när nått fält är tomt/felaktigt ifyllt...

formmail med "felsida" känns lite oldschool :)

martine 2009-01-26 17:57

2 bifogad(e) fil(er)
Citat:

Ursprungligen postat av Lambda
Citat:

Ursprungligen postat av VideoBengt
Eftersom jag vill ha "felsidan" på svenska har jag även provat med att översätta texten i felmeddelande i FormMail.pl till svenska men det lyckades inte heller.

Vill du slippa krångel kan du prova ett formulär jag gjorde förra veckan:
www.street-legal.net/contact.php

Osynligt spamskydd (Captcha är fult/tråkigt/jobbigt)
JS validering av alla fält med snygg fel rapportering
Allt på svenska
css grafik
Sidan behöver inte laddas om när du skickar mailet eller när nått fält är tomt/felaktigt ifyllt...

formmail med "felsida" känns lite oldschool :)

Trots det kan det ofta vara praktiskt med "formmail" för den som helt enkelt bara snabbt och enkelt vill ha möjligheten att ta emot mejl från webbplatsen.

Det låter ju fint det där - man får väl hoppas att du även mime-kodat mejlet till quoted-printable eller base64 enligt RFC 1521 och 2045 (även mottagare och ämnesrubriken), annars är ju all tjusig förpackning i onödan när meddelandet inte kommer fram riktigt eller åäö blir fel…


PS. Misstänker att det inte ligger så bra till med teckenkodningen - exempelsidan visar åäö fel eftersom ingen teckenkodning har specificerats i meta:n på sidan.


Alla tider är GMT +2. Klockan är nu 23:52.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson