Sending email. php does not redirect page

Asked

Viewed 79 times

0

This script is intended to take the data of an Actionscript and send via email, however, it is not returning a message of success (or error) to the user. Even the email being sent... I need it to send a Pop-up warning about the success of sending or redirecting to a . html

<?php
/*if(!isset($_POST[Submit])) die("N&atilde;o recebi nenhum par&acitc;metro. Por favor volte ao formulario.html antes");
/* Medida preventiva para evitar que outros domínios sejam remetente da sua mensagem. */

@extract($_POST);

if (preg_match('tempsite.ws$|locaweb.com.br$|hospedagemdesites.ws$|websiteseguro.com$', $_SERVER[HTTP_HOST])) {
        $emailsender='[email protected]';
} else {
        $emailsender = "webmaster@" . $_SERVER[HTTP_HOST];
        //    Na linha acima estamos forçando que o remetente seja 'webmaster@seudominio',
        // você pode alterar para que o remetente seja, por exemplo, 'contato@seudominio'.
}

/* Verifica qual é o sistema operacional do servidor para ajustar o cabeçalho de forma correta. Não alterar */
if(PHP_OS == "Linux") $quebra_linha = "\n"; //Se for Linux
elseif(PHP_OS == "WINNT") $quebra_linha = "\r\n"; // Se for Windows
else die("Este script nao esta preparado para funcionar com o sistema operacional de seu servidor");

// Passando os dados obtidos pelo formulário para as variáveis abaixo
/*
$nomeremetente          = $_POST["nome"];
$emailremetente         = trim($_POST["email"]);
$telefoneremetente      = trim($_POST["telefone"]);
$cidaderemetente        = trim($_POST["cidade"]);
$cepremetente           = trim($_POST["cep"]);
$observacaoremetente    = trim($_POST["observacoes"]);

$comcopia               = trim($_POST["comcopia"]);
$comcopiaoculta         = trim($_POST["comcopiaoculta"]);

$referencia             = $_POST["referencia"];
$gola1                  = $_POST["gola1"];
$pato                   = $_POST["pato"];
$manga                  = $_POST["manga"];
$mangaesquerda          = $_POST["mangaesquerda"];
$manga2                 = $_POST["manga2"];
$recort1                = $_POST["recort1"];
$recort2                = $_POST["recort2"];
$recort3                = $_POST["recort3"];
$punho                  = $_POST["punho"];
$galao1                 = $_POST["galao1"];
$galao2                 = $_POST["galao2"];
$logo1                  = $_POST["logo1"];
*/


$nomeremetente          = $_POST["nome"];
$emaildestinatario      = "[email protected]";

/* Montando a mensagem a ser enviada no corpo do e-mail. */
$mensagemHTML= "<P>MENSAGEM DE E-MAIL ENVIADO POR FENYT UNIFORMES - PERSONALIZAÇÃO</P>";
$mensagemHTML.= "<P><hr></P>";
$mensagemHTML.= "Nome: $nome\n";
$mensagemHTML.= "E-Mail: $email\n";
$mensagemHTML.= "Telefone: $telefone\n";
$mensagemHTML.= "Cidade: $cidade\n";
$mensagemHTML.= "Cep: $cep\n";
$mensagemHTML.= "Observações: $observacoes\n";
$mensagemHTML.= "<P><hr></P>";
$mensagemHTML.= "<P><hr></P>";
$mensagemHTML.= "<P>PERSONALIZAÇÃO</P>";
$mensagemHTML.= "<P><hr></P>";
$mensagemHTML.= "Referencia: $referencia\n <br>";
$mensagemHTML.= "Gola: $gola1\n <br>";
$mensagemHTML.= "Corpo: $pato\n <br>";
$mensagemHTML.= "Mangas: $manga\n <br>";
$mensagemHTML.= "Manga Esquerda: $mangaesquerda\n <br>";
$mensagemHTML.= "Manga Direita: $manga2\n <br>";
$mensagemHTML.= "Recorte 1: $recort1\n <br>";
$mensagemHTML.= "Recorte 2: $recort2\n <br>";
$mensagemHTML.= "Recorte 3: $recort3\n <br>";
$mensagemHTML.= "Punho: $punho\n <br>";
$mensagemHTML.= "Galão 1: $galao1\n <br>";
$mensagemHTML.= "Galão 2: $galao2\n <br>";
$mensagemHTML.= "Logo: $logo1\n <br>";
$mensagemHTML.= "<P><hr></P>";
$mensagemHTML.= "<P>Avental</P>";
$mensagemHTML.= "Bolso: $bolso\n";


/* Montando o cabeçalho da mensagem */
$headers = "MIME-Version: 1.1".$quebra_linha;
$headers .= "Content-type: text/html; charset=iso-8859-1".$quebra_linha;
// Perceba que a linha acima contém "text/html", sem essa linha, a mensagem não chegará formatada.
$headers .= "From: ".$emailsender.$quebra_linha;
$headers .= "Return-Path: " . $emailsender . $quebra_linha;
// Esses dois "if's" abaixo são porque o Postfix obriga que se um cabeçalho for especificado, deverá haver um valor.
// Se não houver um valor, o item não deverá ser especificado.
if(strlen($comcopia) > 0) $headers .= "Cc: ".$comcopia.$quebra_linha;
if(strlen($comcopiaoculta) > 0) $headers .= "Bcc: ".$comcopiaoculta.$quebra_linha;
$headers .= "Reply-To: ".$emailremetente.$quebra_linha;
// Note que o e-mail do remetente será usado no campo Reply-To (Responder Para)

/* Enviando a mensagem */
$envio = mail($emaildestinatario, $nomeremetente, $mensagemHTML, $headers, "-r". $emailsender);

/* Mostrando na tela as informações enviadas por e-mail */
if($envio){
    include("enviosucesso.html");
}
else{
 include("envioerro.html");
}
?>

1 answer

0

Actionscript does not interpret HTML, at least not with URLLoader directly (by default), therefore enviosucesso.html or envioerro.html won’t work.

The most you’ll get to make Actionscript interpret HTML is to use something like https://github.com/talltyler/HTMLWrapper, of course the form part you will have to reimplement (if you are using Adobe AIR and not Adobe Flash you can implement a webView, but then I believe the story is another).

To solve it depends a lot on how you used Actionscript, if it was really URLLoader it will only interpret server response strings in a format similar to querystrings, for example:

foo=1&bar=true

Supposing you did something like this:

function enviarFormulario(event:MouseEvent):void
{
  var urlreq:URLRequest = new URLRequest ("http://[site]/envia.php");
  urlreq.method = URLRequestMethod.POST; 

  var urlvars:URLVariables = new URLVariables(); 
  urlvars.nome = camponome.text;
  urlvars.email = campoemail.text;
  urlvars.score = campomensagem.text;

  urlreq.data = urlvars;

  var loader:URLLoader = new URLLoader(urlreq); 
  loader.addEventListener(Event.COMPLETE, completed); 
  loader.dataFormat = URLLoaderDataFormat.VARIABLES; 
  loader.load(urlreq); 
}

function completed(event:Event):void
{
    var variables:URLVariables = new URLVariables(event.target.data);
    camporesposta.text = variables.resposta;
}

botaosubmit.addEventListener(MouseEvent.CLICK, enviarFormulario);

See that variables.resposta contains the .resposta, means that in php you will have to have something like this:

if($envio){
     echo 'resposta=sucesso';
} else{
     echo 'resposta=erro+ao+enviar';
}

Other details:

  • The camporesposta.text refers to some label you must have or create to receive the variable’s response text

  • camponome.text, campoemail.text and campomensagem.text are hypothetical fields that refer to your form

  • botaosubmit.addEventListener refers to the same movieclip or button you have on the form.

  • Do not use the variable in PHP like this $_SERVER[HTTP_HOST], use like this $_SERVER['HTTP_HOST'], without quotation marks PHP will first search for a constant calling for HTTP_HOST of course it does not exist, then it will issue a Warning, output or log file and only then it will convert HTTP_HOST for a string and so get it working, that is your error log will contain a series of repeated errors about it, it should look like this:

    if (preg_match('tempsite.ws$|locaweb.com.br$|hospedagemdesites.ws$|websiteseguro.com$', $_SERVER['HTTP_HOST'])) {
            $emailsender='[email protected]';
    } else {
            $emailsender = "webmaster@" . $_SERVER['HTTP_HOST'];
            //    Na linha acima estamos forçando que o remetente seja 'webmaster@seudominio',
            // você pode alterar para que o remetente seja, por exemplo, 'contato@seudominio'.
    }
    

Browser other questions tagged

You are not signed in. Login or sign up in order to post.