Just nu i M3-nätverket
Gå till innehåll

flera action i formuläret


Ringbom

Rekommendera Poster

kan man ha flera "action" i ett formulär?

 

<form name="namn" method="POST" action="addkommentar.asp?add=yes">

Jag skulle även behöva action="http://formmail.dindoman.se

 

Tråden flyttad från Javascript av moderator

 

[inlägget ändrat 2008-08-22 23:22:22 av Cluster]

Länk till kommentar
Dela på andra webbplatser

Hej

jo så här är det, jag har ett formulär som man kan lägga kommentarer i och som sen läggs in i en databas.

<form name="insertText" method="POST" action="addkommentar.asp?add=yes">

 

MEn sen vill jag också ha ett mail när någon lägger en kommentar om mina slott som jag skriver om. Och då står det på Loopia att man skall lägga till

<form name="form" method="post"

action="http://formmail.dindoman.se">

alltså skulle jag behöva ha två "action" :-)

 

 

Länk till kommentar
Dela på andra webbplatser

går inte så du får antingen:

1. Skicka ett mail mha CDO.Message i asp i filen "aspkommentar.asp", eller

2. posta data från "aspkommentar.asp" till formmail.dindomän.se vilket är klart osmidigare.

 

 

Exempel med CDO

<%
Set myMail=CreateObject("CDO.Message")
myMail.Subject="Sending email with CDO"
myMail.From="mymail@mydomain.com"
myMail.To="someone@somedomain.com"
myMail.TextBody="This is a message."
myMail.Send
set myMail=nothing
%>

 

Länk till kommentar
Dela på andra webbplatser

posta data från "aspkommentar.asp" till formmail.dindomän.se vilket är klart osmidigare.

Ligger formmail på samma server som webbsidan så kan man använda Server.Transfer för att posta vidare formuläret från aspkommentar.asp

 

Länk till kommentar
Dela på andra webbplatser

det är ju inte helt säkert att det ligger på samma server, så fungerar det till en annan sub-domän?

 

[inlägget ändrat 2008-08-22 23:14:01 av Jonas_Bo]

Länk till kommentar
Dela på andra webbplatser

så fungerar det till en annan sub-domän?

Tvivlar på det, men är faktiskt inte säker. Det går ju att skicka mellan asp-filer på samma server som ligger i olika applikationsdomäner, men det är möjligt att det hela måste ske inom samma ip-nr och således begränsat till servern.

 

Det är ju inte krångligare än att testa...

 

 

Länk till kommentar
Dela på andra webbplatser

jaha jag som trodde det fanns en enkel lösning på detta.

vilket är bäst att göra då?

kan man inte göra nån IF submit then maila Nina :-)

 

Länk till kommentar
Dela på andra webbplatser

jo men jag förstod aldrig var jag skulle lägga in "Exempel med CDO"

Skall jag alltså skapa en ny asp-fil som heter aspkommentar.asp och lägga in den där?

 

Länk till kommentar
Dela på andra webbplatser

Nej, förlåt, i din fil som heter addkommentar.asp efter allt i din kod ( dock innan response.redirect eller något som skriver ut något på skärmen.

 

 

[inlägget ändrat 2008-08-23 00:07:26 av Jonas_Bo]

Länk till kommentar
Dela på andra webbplatser

1) Slängde upp mina filer till loopia och testade följande:

Set myMail=CreateObject("CDO.Message")

myMail.Subject="Sending email with CDO"

myMail.From="kommentar@historiesajten.se"

myMail.To="historiesajten@gmail.com"

myMail.TextBody="Ny kommentar"

myMail.Send

set myMail=nothing

 

 

och fick följande fel:

CDO.Message.1 error '80040220'

The "SendUsing" configuration value is invalid.

/addkommentar.asp, line 23

 

och på rad 23 står det "myMail.Send"

Har letat runt ett bra tag nu men hittar inte hur jag skall lösa detta.

 

Så... hur skulle punkt 2 (posta data från "addkommentar.asp" till formmail.dindomän.se vilket är klart osmidigare.) som du skrev om gå till?

 

2) Jag slängde upp mina filer på servern och testade, men datumen syntes inte/skrevs inte ut (vilket den gör lokalt) och i db stod det 0000-00-00 00:00:00.?

 

Hmmm..nu har jag testat en stund och ibland får jag mail fastän jag kommer till en vit sida där det står:

CDO.Message.1 error '80040220'

The "SendUsing" configuration value is invalid.

/addkommentar.asp, line 23

 

 

 

[inlägget ändrat 2008-08-23 12:13:07 av Ringbom]

Länk till kommentar
Dela på andra webbplatser

Hej!

Vad jag kan se så tillåter inte Loopia mail via CDO, utan använder sig av komponenten JMail. Dessutom måste deras smtp-server anges bland inställningarna. Så pröva att ersätta den mailkod du använt med följande istället:

set msg = Server.CreateOBject("JMail.Message")
msg.Logging = true
msg.silent = true
msg.AddRecipient "historiesajten@gmail.com", "Historiesajten"
msg.From = "kommentar@historiesajten.se"
msg.FromName = request.Form("namn")
msg.Subject = "Inlägg på slott med id=" & request.Form("slottid")
msg.Body = request.Form("kommentar")
msg.MailServerUserName = "info@mindoman.se" ' [color="#0000ff"]DITT ANVÄNDARNAMN[/color]
msg.MailServerPassword = "lösenord" ' [color="#0000ff"]DITT LÖSENORD[/color]
msg.Send("smtp.mindoman.se:587") ' [color="#0000ff"]ÄNDRA mindoman TILL DITT DOMÄNNAMN[/color]

 

Observera kommentarerna i blått. Jag är inte säker på om smtp-servern skall anges som smtp.historiesajten.se:587 eller smtp.loopia.se:587 men jag tippar att det skall vara loopia-varianten.

Användarnamn/Lösenord vet jag inte heller vad de syftar på, men det kanske är samma som för ditt konto hos Loopia. Exemplet är iallafall baserat på den kod de själva lämnar ut, så kontakta dem om det inte fungerar.

 

Länk till kommentar
Dela på andra webbplatser

Efter lite mer rotande hos Loopia ser jag att de visst tillåter även CDO, men pröva mitt JMail-exempel iallafall, nu när jag ändå skrivit det =)

 

För att istället få CDO-exemplet att fungera måste även smtp-server anges, så där behöver du lägga till ett par rader:

 

myMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing")=2

myMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") _
="smtp.loopia.se"

myMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") _
=587

Även här chansar jag på att smtp-servern heter smtp.loopia.se

 

EDIT: Kom även ihåg att du måste ladda upp scriptet för att testa det. För att testa sändning av mail på din egen server måste du troligtvis använda din egen smtp-server om du nu har den tjänsten igång.

[inlägget ändrat 2008-08-23 14:00:27 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

nu är det bara en grej kvar - att slänga in någon kod som gör att namn och kommentar är ifyllda. Troligen javasckript kan jag tro

 

kolla längst ned

http://www.historiesajten.se/slottdetalj.asp?id=217

 

:-)

 

jo just det - datumet läggs inte in heller. Blir bara nollor i db:n

[inlägget ändrat 2008-08-23 14:02:50 av Ringbom]

Länk till kommentar
Dela på andra webbplatser

nu är det bara en grej kvar - att slänga in någon kod som gör att namn och kommentar är ifyllda.

Jag lade ju in så att den hämtar dessa från formuläret.

 

Länk till kommentar
Dela på andra webbplatser

nej jag uttryckte mig lite dåligt där, jag menade att inte formuläret kan sändas iväg om man inte fyllt i de här två fälten. Som det är nu kan man bara klicka på "sändknappen" så går det iväg och det visas upp en tom rad.

 

Länk till kommentar
Dela på andra webbplatser

Ok. Lägg till följande javascript:

<script>
function CheckFields() 
{
name=document.getElementsByName('namn')[0].value;
mess=document.getElementsByName('kommentar')[0].value;
if(name=='' || mess=='')
	alert("Du måste ange både namn och kommentar!");
else
	return true;
return false;
}
</script>

 

samt lägg till följande i form-taggen

onsubmit="return(CheckFields());"

 

Länk till kommentar
Dela på andra webbplatser

Jag har en annan "onsubmit" som rensar bort snubbiga ord, kan man kombinera de två?

 

<script language="JavaScript"> 

var swear_words_arr=new Array("free","viagra","osv"); 
var swear_alert_arr=new Array(); 
var swear_alert_count=0; 

function reset_alert_count() 
{ 
swear_alert_count=0; 
} 

function wordFilter(form,fields) 
{ 
reset_alert_count(); 
var compare_text; 
var fieldErrArr=new Array(); 
var fieldErrIndex=0; 
for(var i=0; i<fields.length; i++) 
{ 
eval('compare_text=document.' + form + '.' + fields[i] + '.value;'); 
for(var j=0; j<swear_words_arr.length; j++) 
{ 
for(var k=0; k<(compare_text.length); k++) 
{ 
if(swear_words_arr[j]==compare_text.substring(k,(k+swear_words_arr[j].length)).toLowerCase()) 
{ 
swear_alert_arr[swear_alert_count]=compare_text.substring(k,(k+swear_words_arr[j].length)); 
swear_alert_count++; 
fieldErrArr[fieldErrIndex]=i; 
fieldErrIndex++; 
} 
} 
} 
} 
var alert_text=""; 
for(var k=1; k<=swear_alert_count; k++) 
{ 
eval('compare_text=document.' + form + '.' + fields[fieldErrArr[0]] + '.focus();'); 
eval('compare_text=document.' + form + '.' + fields[fieldErrArr[0]] + '.select();'); 
} 
if(swear_alert_count>0) 
{ 
alert("Tyvärr kan inlägget inte postas.\nOgiltiga ord hittades i meddelandet\n\n" + alert_text + "\n"); 
return false; 
} 
else 
{ 
return true; 
} 
} 
</script> 

 

Länk till kommentar
Dela på andra webbplatser

Ja det skulle man kunna göra - tar du testat själv? Det är rätt enkel logik.

[inlägget ändrat 2008-08-23 20:46:12 av Jonas_Bo]

Länk till kommentar
Dela på andra webbplatser

Det är få personer i Sverige som satsat på att sprida något worthwhile via nätet

Historiesajten är fantastisk (det har du ju redan fått höra från respekterad ort vet jag)

Varje gång jag är inne på din sida så imponeras jag...

 

Länk till kommentar
Dela på andra webbplatser

tack för det Anjuna Moon - och tack för all hjälp jag har fått av dig :-)

Allt verkar fungera som det skall nu, mycket tack var dig!

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...