Makone 0 Denunciar post Postado Março 19, 2009 Senhores boa noite. Como não sou nada intimo do nosso PHP, entao vir pedir ajuda de vocês. MEu problema é o seguinte. Estou fazendo aquele famoso PHP + Flash, e tive que alterar algumas coisas do meu AS, por conta do arquivo PHP, pois bem. Este arquivo ele é provido pelo provedor, onde hospedo o site. Em uma certa parte do código, ele diz assim: # Loop para enviar os campos por e-mail. Ate ai tudo bem... mas eu gostaria de deixar que o formulário buscasse todos os campos dinamicos que o arquivo flash tem e buscasse alguns específicos... que são: NOME, EMAIL, ASSUNTO e MENSAGEM. Segue o código: <?php # Verifica o método pelo qual a página foi chamada if(strtolower($_SERVER['REQUEST_METHOD']) == "post"){ # Faz o include do PEAR Mail e do Mime. include ("Mail.php"); include ("Mail/mime.php"); #E-mail de destino. Caso seja mais de um destino, crie um array de e-mails. $recipients = 'EmailDeDestino@dominio.x-br.com'; # Cabeçalho do e-mail. $headers = array ( 'From' => "MeuEmail@meudominio.x-br.com", # O 'From' é *OBRIGATÓRIO*. 'Reply-To' => $_POST['email'], # Responder e-mail para um determinado destinatário 'To' => $recipients, 'Subject' => 'TITULO DO E-MAIL' # Título do e-mail ); # Define o tipo de final de linha. $crlf = "\r\n"; # Inicio do corpo da Mensagem e texto e em HTML. $html = "<HTML><BODY><font color=blue>"; # Loop para enviar os campos por e-mail. foreach($_POST as $campo => $valor) { if (stristr($valor,"Content-Type")) { header("HTTP/1.0 403 Forbidden"); exit; } if($campo != 'redirect') { $html .= "<br>---------------------------<br>"; $html .= ucfirst($campo) . " = $valor"; } } # Fim do corpo da Mensagem e do texto em HTML. $html .= "<br>---------------------------"; $html .= "</font></BODY></HTML>"; # Instancia a classe Mail_mime. $mime = new Mail_mime($crlf); # Coloca o HTML no email $mime->setHTMLBody($html); # Procesa todas as informações. $body = $mime->get(); $headers = $mime->headers($headers); # Parâmetros para o SMTP. *OBRIGATÓRIO* $params = array ( 'auth' => true, # Define que o SMTP requer autenticação. 'host' => 'smtp.meudominio.x-br.com', # Servidor SMTP 'username' => 'email=meudominio.x-br.com', # Usuário do SMTP 'password' => 'SENHA DO EMAIL' # Senha do seu MailBox. ); # Define o método de envio $mail_object =& Mail::factory('smtp', $params); # Envia o email. Se não ocorrer erro, retorna TRUE caso contrário, retorna um # objeto PEAR_Error. Para ler a mensagem de erro, use o método 'getMessage()'. $result = $mail_object->send($recipients, $headers, $body); if (PEAR::IsError($result)) { # Caso apresente erro no envio do e-mail exibe a mensagem abaixo echo "ERRO ao tentar enviar o email. (" . $result->getMessage(). ")"; } else { # Caso o envio seja realizado com sucesso, o usuário será redirecionado para o valor da variável $redirect $redirect = $_POST['redirect']; header("Location: $redirect"); exit; } } else { echo "Não foi passado nenhum campo!"; exit; } ?> Pois bem, na linha 27, que é esta aqui: foreach($_POST as $campo => $valor), alterei para: $valor = "nome: $nome\n\nEmail: $email\n\nAssunto: $assunto\n\nMensagem: $mensagem;, mas nã0 funcionou... entao eu pergunto para voces! O que posso alterar no código acima para que ele pegue somente 4 campos específicos em vez de pegar todos os campos dinamicamente... Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Maykonn 6 Denunciar post Postado Março 19, 2009 Explica direitinho como você fez essa mudança no foreach cara! Não entendi a mudança... Você retirou o foreach? E você precisa somente dos quatro campos para enviar por email NOME EMAIL ASSUNTO e MENSAGEM ???? Se for isso você pode fazer algo como isso: foreach ( $_POST as $campo => $value ) { if ( $campo == 'NOME' || $campo == 'EMAIL' || $campo == 'ASSUNTO' || $campo == 'MENSAGEM' ) { //aqui é o que ja tinha dentro do foreach... if (stristr($valor,"Content-Type")) { header("HTTP/1.0 403 Forbidden"); exit; } if($campo != 'redirect') { $html .= "<br>---------------------------<br>"; $html .= ucfirst($campo) . " = $valor"; } } // Então como podemos ver, caso não seja um dos campos que você quer // ele não passará no foreach... } Veja se é isso que você precisa! Compartilhar este post Link para o post Compartilhar em outros sites
Makone 0 Denunciar post Postado Março 19, 2009 Maykonn, Obrigado pela resposta. Bom, eu como não entendo muita coisa de PHP, vi que o foreach é o responsável por dar o loop para carregar os dados que vem do flash (me corrija se eu estiver errado). Dai minha idéia, era retirar o foreach e armazenar em uma variável, só que não funcionou. Então, vir recorrer À vocês pedindo uma solução. Ficou mais claro agora? Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
Will Fernando 2 Denunciar post Postado Março 19, 2009 belo script ^^ todas as linhas alienadas e comentadas ... mas tambem nao intendi direito ... xP malz Compartilhar este post Link para o post Compartilhar em outros sites
Maykonn 6 Denunciar post Postado Março 19, 2009 Tenta fazer do jeito que te falei! Bom, se não funcionar talvez seja porque o nome dos campos no IF que eu fiz estão errados e então bastará que você pegue o nome correto dos campos dando um print_r($_POST) e então substituir o nome no IF! Veja se funciona ok! Compartilhar este post Link para o post Compartilhar em outros sites
Makone 0 Denunciar post Postado Março 20, 2009 Maykonn, Obrigado pela ajuda. Resolveu o meu problema. Vlw mesmo. Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Março 20, 2009 belo script ^^ todas as linhas alienadas "identadas" Compartilhar este post Link para o post Compartilhar em outros sites
Maykonn 6 Denunciar post Postado Março 20, 2009 hahiauhuaihauiha... Ta certo! Minhas linhas são alienadas mesmo! haihauihaiau Compartilhar este post Link para o post Compartilhar em outros sites