Ir ao conteúdo
  • Cadastre-se
Bruna Siqueira

PHP problema com envio de formulário

Posts recomendados

Bom dia,

Tinha um formulario em um site e estou replicando em outro (inclusive de outra hospedagem, esse novo é da saninternet)

tenho a pagina do formulario, que acredito estar correto, e a pagina enviar que não consigo achar o erro, acredito que seja na linha 4, mas não sei como alterar

<?php
/*
Template Name: Orcamento
*/

get_header(); ?>

			<div class="row">
				<div class="col-sm-8">
 
					<div class="posting clearfix">
						<?php
							// Start the Loop.
							while ( have_posts() ) : the_post();

								/*
								 * Include the post format-specific template for the content. If you want to
								 * use this in a child theme, then include a file called called content-___.php
								 * (where ___ is the post format) and that will be used instead.
								 */
                        
                       
                        
								get_template_part( 'content', get_post_format() );
                        

								// Previous/next post navigation.
								//twentyfourteen_post_nav();

					
							endwhile;
						?>
                        
                        
                        
                        
                         <section class="post-main" role="main" id="content">                        
                            <article class="page type-page" role="article">
                               <!--o action é p o endereço onde o arquivo envia.php está. No caso, dentro do tema-->
                               
                                <div class="col-sm-6">
                                <br>
                                <form action="<?php bloginfo('template_url'); ?>/enviar.php" method="post">
                                    <label>Nome ( obrigat&oacute;rio )</label><br>
                                    <input name="nome" type="text" required="required" size="30">
                                    <br><br><label>E-mail ( obrigat&oacute;rio )</label><br>
                                    <input name="email" type="email" id="email" required="required" size="30">
                                    <br><br><label>Tipo de Evento</label><br>
                                    <select name="tipo" id="tipo">
                                                                <option value="Casamento" >Casamento</option>
                                                                <option value="Anivers&aacute;rio" >Anivers&aacute;rio</option>
                                                                <option value="Batizado" >Batizado</option>
                                                                <option value="Corporativo" >Corporativo</option>
                                                                <option value="Outros" >Outros</option>
                                                          </select>
                                    <br><br>
                                    <label>Quantidade de Pessoas</label><br>
                                    <input type="radio" name="valor" value="50" checked> 20 a 25
                                    <input type="radio" name="valor" value="100"> 51 a 150
                                    <input type="radio" name="valor" value="200"> 150 a 200
                                    
                                    </div>
                                    <div class="col-sm-6">
                                    <label>Data</label><br>
                                    <input name="data" type="date" size="20">
                                    <br><br>
                                    <label>Mensagem:</label>
                                    <br>
                                    <textarea name="mensagem" cols="30" rows="5" id="textarea"></textarea>
                                    <br><br>
                                    <input class="btn btn-primary" type="submit" name="Submit" value="Enviar">
                                    <input class="btn btn-primary" type="reset" name="limpar" value="Limpar">
                                </form><br><br>
                                </div>
                            </article>
                            
                            
                            <div class="post-attributes"></div>
                        </section>
                  
					</div>

				</div>
				<img src="imagens/pimenta.png" class="img-responsive visible-xs" />
				<div class="col-sm-4">
					<div class="contato clearfix">
						<?php dynamic_sidebar( 'sidebar1' ); ?>	
					</div>
				</div>
			</div>

 

segue abaixo o conteudo do enviar.php, inclusive estou testando com email do gmail atualmente, porque no site antigo o e-mail da empresa era gmail e funcionava

 

<?php
if(!isset($_POST[Submit])) die("N&atilde;o recebi nenhum par&acitc;metro. Por favor volte ao orcamento.html antes");
/* Medida preventiva para evitar que outros domínios sejam remetente da sua mensagem. */
if (eregi('tempsite.ws$|locaweb.com.br$|hospedagemdesites.ws$|websiteseguro.com$', $_SERVER[HTTP_HOST])) {
        $emailsender='bruniinhass@gmail.com';
} else {
        $emailsender = "bruniinhass@gmail.com";
        //    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
$nome     = $_POST['nome'];
$email = trim($_POST['email']);
$tipo     = $_POST['tipo'];
$valor     = $_POST['valor'];
$data     = $_POST['data'];
$mensagem          = $_POST['mensagem'];
$titulo = "Orçamento Estação Marupiara";                  //titulo da mensagem enviada para o visitante
 
 
$html = "<b>Nome:</b> $nome <br />";
$html .= "<b>E-mail:</b> $email <br />";
$html .= "<b>Tipo de Evento:</b> $tipo <br />";
$html .= "<b>Quantidade de Pessoas:</b> $valor <br />";
$html .= "<b>Data:</b> $data <br />";
$html .= "<b>Mensagem:</b> $mensagem <br />";


/* 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;
$headers .= "Reply-To: ".$email.$quebra_linha;
// Note que o e-mail do remetente será usado no campo Reply-To (Responder Para)
 
/* Enviando a mensagem */
mail($emailsender, $titulo, $html, $headers, "-r". $emailsender);

/* aqui você escreve a mensagem para o cliente */
$msg    = "$nome, mensagem para de 1 a 50 pessoas <br />
Prezado cliente <br />
Agradecemos pelo interesse em realizar seu evento conosco <br />
obrigada";
$nova    = "$nome, mensagem para de 51 a 100 pessoas";
$outra    = "$nome, mensagem para de 101 a 200 pessoas";


if ($valor == "50") {
    mail($email, $titulo, $msg, $headers, "-r". $emailsender);
} else {
    if ($valor == "100") {
    mail($email, $titulo, $nova, $headers, "-r". $emailsender);
} else {
    mail($email, $titulo, $outra, $headers, "-r". $emailsender);
    }
}


 
/* redirecionando para tela de agradecimento. Mudar para o url do cliente */
header('Location: http://estacaomarupiara.com.br/obrigado/');
exit;
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha isso não vai funcionar, e se isso funciona em algum site com o Wordpress significa que houve uma modificação dos arquivo de arquitetura do Wordpress.

 

O WordPress é baseado em uma arquitetura orientada a eventos. Isso significa internamente que o núcleo do WordPress é preenchido com várias ações e filtros para modificar a execução do programa ou para alterar o conteúdo durante o tempo de execução.

 

A requisição "POST" do formulário está tentando passar pela arquitetura do Wordpress e enviando a solicitação para o arquivo dentro do tema do Wordpress, e isso pode até funcionar porém, não recomendo e não é recorreto.

A requisição deve ser enviada para o arquivo "admin-post"

Esse arquivo vai manipular o pedido e enviar ele para uma ação pre-definida

 

Exemplo utilizando o método POST

Dentro do form você deve especificar o valor da action(ação)

<form action="<?php echo esc_url(admin_url('admin-post.php') ); ?>" method="post">
	<input type="hidden" name="action" value="enviar_email">
</form>

Exemplo utilizando o método GET

<a href="<?php echo esc_url(admin_url('admin-post.php') ); ?>?action=ação">Requisição utilizando o método GET</a>

 

Corrigindo o action do form e adicionando o action(ação pre-definida) você deve registra a ação pre-definida no arquivo de Functions do tema.

add_action('admin_post_{nome da ação pre-definida}', 'nome da função callback' ); // Caso seu sistema queira alterna a function callback, caso tenha um usuario logado.
add_action('admin_post_nopriv_{nome da ação pre-definida}', 'nome da função callback' ); // Caso não haja um usuario conectado

function nome da função callback() {
    status_header(200);
    var_dump($_POST);
    die();
}

Registrando a action(ação pre-definida) e definindo uma Callback Function, você pode trabalhar e manipular a requisição do Formulário na Callback function.

Dentro da Callback function você pode inserir o código de envio de email.

 

Você também pode usar algum plugin para facilitar o seu trabalho.

Você também pode usar o WordPress internal AJAX API.

 

Aqui tem um artigo falando sobre https://www.sitepoint.com/handling-post-requests-the-wordpress-way/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!