webForumDet fria alternativet

formmail via flash på telias webbhotell?

Flash

26 svar · 985 visningar · startad av Klauz

Medlem sedan jan. 2005133 inlägg
Frågan#1

Jag försöker krångla ihop telias cgi-baserade formmail med ett formulär i flash. Jag skickar de nödvändiga variablerna med hjälp av loadVariables och POST-metoden. Nån som har lyckats med detta?

Jag får ett felmeddelande utan nån hjälpinformation. Jag har testat att göra ett likadant html-formulär och då funkar det. Kan inte cgi ta emot variabler från flash kanske?

Webbhotellet har tyvärr inte stöd för ASP/PHP.

Medlem sedan dec. 2002258 inlägg
#2

Klart att ett CGI skript ska kunna ta emot variabler via Flash. Eller de är ju som du säger med POST metoden som de skickas precis som via ett vanligt HTML-baserat formulär.

Vad är det för typ av felmeddelande du får?

Medlem sedan jan. 2005133 inlägg
#3

Följande felmeddelande dyker upp:

*Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, webmaster@web.internet.telia.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.*

Jag kommer inte åt loggfilen tyvärr.

Medlem sedan dec. 2002258 inlägg
#4

Det kan ju helt enkelt vara så att det är fel i CGI-filen. Oftast kräver webbhotellets färdiga CGI:er att man skickar med ytterligare inställningsparametrar utöver de som du vill posta från ditt formulär.

Har du gjort detta om så krävs, samt har du prövat att använda CGI-skriptet via ett vanligt HTML formulär?

Medlem sedan jan. 2005133 inlägg
#5

eftersom det är ett inbyggt formulär på webbhotellet kan jag inte själv komma åt det och se hur det är uppbyggt.

har gjort en liknande html-variant och den funkar klockrent!

ingen som har erfarenhet av telias formmail-komponent`?

Medlem sedan maj 2003750 inlägg
#6

Vilken version av Flash använder du? Samt kan du visa lite mer hur själva flash:en är uppbygd och hur variablerna skickas och så.

/Mirandir

Medlem sedan jan. 2005133 inlägg
#7

Det inbyggda scriptet kunde in ta emot variablerna från flash enligt supporten. Nu har jag installerat ett eget script som ligger på en annan domän. Allt funkar jättebra med getURL , men hur gör jag för att det ska funka med loadVariables?

jag vill ju inte att besökaren ska få upp en annan sida.

Medlem sedan maj 2003750 inlägg
#8

Hmm så vitt jag vet så är det ingen större skillnad på hur flash skickar variabler och hur vanliga html-formulär skickar dem. Bortsett från att Flash 6 och senare använder utf-8 som standard.

En rätt långsökt sak du kan testa(om du publicerar för player 6 eller senare) är att sätta följande kod på första bildrutan:

if(!System.useCodepage)
    System.useCodepage = true;

Fast du kanske har det redan?

Hur du får det att fungera med Loadvariables? Nja jag vet inte riktigt. Hur är det tänkt att fungera?

/Mirandir

Medlem sedan jan. 2005133 inlägg
#9

Jag har fått för mig att problemet är att scriptet som anropas ligger under en annan domän? Kan det vara så att getURL kan skicka med variabler till andra domäner, och att loadVariables inte kan skicka med variabler?

Sidan ligger under en icke ASP/PHP-server så jag är tvingad att skicka variablerna till en server utanför själva flashfilen..

Medlem sedan feb. 20034 441 inlägg
#10

Klauz skrev:

Kan det vara så att getURL kan skicka med variabler till andra domäner, och att loadVariables inte kan skicka med variabler?

Skillnaden är att när du använder getURL(); så skickas variablerna med som querystrings:

http://dittdomän.com?var1=värde1&var2=värde2

Det borde te sig likadant om du använder loadVariables och GET som metod, då det kommer se ut på samma sätt.

Klauz skrev:

Sidan ligger under en icke ASP/PHP-server så jag är tvingad att skicka variablerna till en server utanför själva flashfilen..

Varför kan du inte lägga Flashfilen på samma server då?`

Det ska inte vara några problem att anropa ett script på en annan server, vare sig du använder getURL el. loadVariables eller vare sig du använder GET resp. POST.

Kan du inte klistra in lite kod från Flashfilen, det känns som om felet ligger där, om du nu får samma script att funka från ett HTML Formulär.

Medlem sedan jan. 2005133 inlägg
#11

här kommer lite kod:

function sendmail(to,from) {
	email = from
	path = "http://tiw-pro.web.internet.telia.com/~301448/sendmail.php"
	loadVariablesNum(path, this, "GET");
	this.loadVariablesNum(path, "GET");
	loadVariablesNum(path, 0, "GET");
	this.loadVariablesNum(path, this, "GET");
	getURL(path, 0, "GET") //denna funkar kanon, men öppnar ju ett nytt fönster

}

ingen av loadVariables funkar... jag förstår inte varför?

Medlem sedan feb. 20034 441 inlägg
#12

Okej.
Då har jag några frågor:
- Var ligger koden? (På root, i ett mc..?)
- Med vad triggar du funktionen? (koden som ligger på skickaknappen.?)
- Hur ser sendmail.php ut?

Svara på ovanstående, så ska du få en bra lösning ;)

Medlem sedan jan. 2005133 inlägg
#13

Här kommer svar :)

1. själva swf:en ligger på level1 och koden ligger i ett mc!

2. funktionen startar när man klickar på "skicka"-knappen

on (release) {
	to = "martin@bittersweet.se"
	formmailer.email = from
	formmailer.sendmail(to, from)
}

3. php-koden:

<?php
//Initialize PHP

//Checks if an email pattern is okay
function emailOK($str) {
//Check empty
if(empty($str)) return false;

//Check for @
if(!ereg("@",$str)) return false;

//Check for at least 1 dot
if(!ereg("\.",$str)) return false;

//Get a user and a host
list($user, $host) = explode("@", $str);

//Make sure we have a user and host
if((empty($user)) || (empty($host))) return false;

//These characters are not allowed in email addresses
$badChars = "[ ]+| |\+|=|[|]|{|}|`|\(|\)|,|;|:|!|<|>|%|\*|/|'|\"|~|\?|#|\\$|\\&|\\^|www[.]";
return !eregi($badChars, $str);
}//End Function

//This function reads any file and spits out its contents in the return
function readTextFile($file){
if(!($fp=@fopen($file,"r"))) return false;

//Read the file
$fileContent="";
while (!feof($fp)) {
$fileContent.= fgets($fp, 1024);
}//End while loop

//Close the file
if(!fclose($fp)) return false;

return($fileContent);
}//End function

//Plain text email sending function
function sendMsg($to, $toEmail, $sub, $msg, $from, $fromEmail) {
//Compose headers for plain text email
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";
$headers .= "X-Mailer: PHP/".phpversion()."\r\n"; //The mailer name
$headers .= "From: ".$from."<".$fromEmail.">\r\n";
$headers .= "Reply-to: ".$from."<".$fromEmail.">\r\n";

//Compose recipient
$recipient = empty($to) ? $toEmail : $to."<".$toEmail.">";
return mail($recipient, $sub, $msg, $headers);
}//End function

//Cleans up a string by trimming it
//if magic_quotes are on.. then stripslashes as well
function cleanUpData($data){
$data=trim($data);
if(get_magic_quotes_gpc()){
$data=stripslashes($data);
}//End if
return($data);
}//End function

//Sends email from Flash Data
function flashEmail($postVars){

//These variables in $postVars came from Flash
//They are urlencoded for safe transfers
//So we have urldecode them and then we trim them
$email = cleanUpData(urldecode($postVars["email"]));
[B]$email = $_GET['email'];[/B]

/*ERROR CHECKING*/

//Email is required
if (empty($email)) {
$status = "E-postadressen var tom och din anmälan har misslyckats.";
die("status=".urlencode($status)."&sent=0&");
}//End if

//Check if email is okay..
if (!emailOK($email)) {
$status = "Felaktig e-postadress. Meddelandet kunde inte skickas!";
die("status=".urlencode($status)."&sent=0&");
}//End if

/*###########################*/

//Everything looks good.. we are still alive!

//Deal with flash carriage return and convert to new lines
$message = str_replace("\r", "\n", $message);

//The subject line
$subject = "Anmälan till Häringe Slotts nyhetsbrev";

//Change this to your information
$ourName = "Häringe Slott";
$ourEmail = "martin@bittersweet.se";

//Open the template files
//$toSenderMsg = readTextFile("senderThanks.txt");
//Replace in-built variables in the senderThanks.txt file
//$toSenderMsg = str_replace("{greetings}", empty($name) ? "Hello" : "Dear ".$name.",", $toSenderMsg);
//$toSenderMsg = str_replace("{date}", date("m/d/Y"), $toSenderMsg);
//$toSenderMsg = str_replace("{message}", $message, $toSenderMsg);
$toSenderMsg = "Hej! \nVälkommen som prenumerant på vårt nyhetsbrev.\n\nMvh\nHäringe Slott";

//$ourVersion = readTextFile("websiteMail.txt");
//$ourVersion = str_replace("{greetings}", "Hi,", $ourVersion);
//$ourVersion = str_replace("{date}", date("m/d/Y"), $ourVersion);
//$ourVersion = str_replace("{name}", empty($name) ? "none" : $name, $ourVersion);
//$ourVersion = str_replace("{email}", $email, $ourVersion);
//$ourVersion = str_replace("{message}", $message, $ourVersion);
$ourVersion = "Hej! \nFöljande person önskar få ett nyhetsbrev från Häringe Slott. \n\n$email \n\nDetta är ett automatiskt mail som har skickats från Häringe Slotts hemsida.\n\nMvh\nMartin webmaster";

//Done with all formatting.. let's send our messages
$tTasks = 1;
$tDone = 0;

//sendMsg function arguments?
//sendMsg($to, $toEmail, $subject, $message, $from, $fromEmail)

//Send a copy the website user
//if (sendMsg($email, $email, $subject, $toSenderMsg, $ourName, $ourEmail)) $tDone++;

[B]
//Send a copy to ourselves
if (sendMsg($ourName, $ourEmail, $subject, $ourVersion, empty($name) ? $ourEmail : $name, $ouremail)) $tDone++;
[/B]

if ($tDone == $tTasks) {
$status = "Tack för din anmälan!";
print $status;
return true;
} else {
$status = "Internt fel! Var god kontakta oss för att göra en manuell anmälan.";
die("status=".urlencode($status)."&sent=0&");
}//End if
}//End function

//Send Flash Email
[B]
flashEmail($HTTP_POST_VARS);
[/B]

//Goodbye PHP
?>

Tack för hjälpen hittils :)

Medlem sedan feb. 20034 441 inlägg
#14

Ojdå, vad mycket kod det var ;)
Du har alltså fått det här att funka bra med ett HTML Formulär?

Ska prova lite, återkommer.

Medlem sedan jan. 2005133 inlägg
#15

php-koden borde väl vara okej eftersom allting funkar med getURL?

det är när jag byter ut getURL mot loadVariables som det skiter sig..

Medlem sedan feb. 20034 441 inlägg
#16

Ja just ja.
Det här har alltså bara med sökvägen att göra.

Du måste ju ladda in scripet på samma nivå som där textrutor och sånt finns.
Ovan säger du att formuläret finns på Nivå 1 och i koden ovan laddar du in scriptet till level 0.

Prova med:

loadVariables(path, _level1.ditt_mc, "GET");

Sen såg jag att det var några strängar där du missat att avsluta med ; (bla. "path")

Alltså, prova med ovanstående och återkom.

Medlem sedan jan. 2005133 inlägg
#17

hej

är ;-tecknet viktigt i koden? brukar slarva med det rätt ofta.. ;)

borde inte this fungera istället för _level1.ditt_mc?

ska testa med din kod nu!

Medlem sedan feb. 20034 441 inlägg
#18

Med this hamnar varaiblerna på samma ställe (tex. i samma mc) som där funktionen ligger, så jo, det "borde" funka.

Men eftersom koden funkar med getURL så MÅSTE det vara något fel på sökvägen.

Prova använda loadVariables istället för loadVariablesNum och anger hela sökvägen, tex.:

_level0 (_root)
_level1.filmklipp

Om ; är viktigt?
- Det funkar säkert utan, men rätt ska vara rätt och utan ; är det inte rätt ;)

Medlem sedan jan. 2005133 inlägg
#19

åh , jag blir galen!

har testat med nya sökvägar men inget nytt händer..
kan jag inte göra på nåt nytt sätt så att jag med total säkerhet vet att jag skickar en variabel åtminstone?

nu vet jag ju inte om nåt skickas iväg eftersom inget felmeddelande syns med loadVariables.

Medlem sedan feb. 20034 441 inlägg
#20

När du kör Flash tillsammans med script, måste scriptet tala om för Flash när det är klart.

Jag brukar alltid göra såhär:

// Frame1
loadVariables("script.php", _root "GET");

// Frame 2
if(loaded == "true"){
   delete loaded;
   gotoAndStop(4);
}

// Frame 3
gotoAndPlay(_currentframe-1);

// Frame 4
trace("Färdigladdat");

Längst ner i phpscripet, lägger du till:

print("&loaded=true");

När du sedan laddar scripet, initieras en loop, scriptet laddas och när Flash laddar in raden "&loaded=true", så vet Flash att scriptet är färdigläst.
Då hamnar man på Frame 4 och får ett meddelande.

Just nu känns det som om jag inte kan hjälpa dig mer, om jag inte får titta på Flashfilen.

Vill du inte publicera den här, skicka den till mig på Info@MickeA.com så ska jag lösa det här åt dig (och inte visa den för någon annan).
Börjar bli lite lack på att inget verkar fungera för dig ;)

/r stavfel...

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