Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

wendel

[Resolvido] Newsletter não confirma cadastro

Recommended Posts

Boa noite, amigos

Coloquei no meu site um newsletter. A pessoa coloca o e-mail e recebe um e-mail com o link para confirmação do cadastro.

Só que o link que ele recebe, ao ser clicado dá erro.

Na página da administração o e-mail cadastrado aparece com a informação de aguardando confimação e essa confirmação não acontece nunca.

favor acessar a página www.flavalencaba.com, esta do lado esquerdo, em baixo.

 

o código é esse (eu acho):

 

<?php
include("config.php");
$email  = $_POST["e-mail"];
$opcao  = $_POST["opcao"];
$codigo = md5($email);
if($email == ""){
echo "<script>alert('Preencha corretamente o campo de e-mail!');";
echo "location.href='index.php'</script>";
}
else{
if($opcao == "assinar"){
$sql = mysql_query("SELECT * FROM n_emails WHERE email = '$email'");
 if(mysql_num_rows($sql)==1){
 echo "<font face=Geneva, Arial, Helvetica, sans-serif size=2 color=#ffffff>";
 echo "<b>Erro:</b>";
 echo " Este e-mail já¡ está cadastrado!";
 echo "</font>";
 }
 else{
 $codigo = sha1($codigo);
 mysql_query("INSERT INTO n_emails(id,email,codigo,ativo) VALUES
 ('','$email','$codigo','n')") or die(mysql_error());
 $cabecalho  = "From: $a_nome <$a_email>";
 $cabecalho .= "\nReply-To: $a_nome <$a_email>";
 $cabecalho .= "\nContent-Type: Text/HTML";
 $msg = "<font face=Geneva, Arial, Helvetica, sans-serif size=2>";
 $msg .= "Olá <b>$email</b>,";
 $msg .= "<br>";
 $msg .= "Você está recebendo esta mensagem porque você ou alguém adicionou esse e-mail";
 $msg .= " na lista do site <a href='$url' target=_blank><b>$titulo</b></a><br><br>";
 $msg .= "Para confirmar, clique no link abaixo:<br>";
 $msg .= "<a href='$url_sist/confirmar.php?tipo=adiciona&codigo=$codigo' target=_blank>";
 $msg .= "$url_sist/confirmar.php?tipo=adiciona&codigo=$codigo></a>";
 $msg .= "<br><br>Se não foi você, simplesmente ignore este e-mail. <br>Obrigado(a).";
 $msg .= "</font>";
 mail($email,$confirm_assunto,$msg,$cabecalho);
 echo "<font face=Geneva, Arial, Helvetica, sans-serif size=2 color=ffffff>";
 echo "O e-mail <b>$email</b> foi cadastrado com sucesso!";
 echo "<br>";
 echo "Um e-mail de confirmação agora foi enviado para você.";
 echo "</font>";
 }
}
elseif($opcao == "remover"){
$sql = mysql_query("SELECT * FROM n_emails WHERE email = '$email'");
 if(mysql_num_rows($sql)==0){
 echo "<font face=Geneva, Arial, Helvetica, sans-serif size=2 color=ffffff>";
 echo "<b>Erro:</b>";
 echo " E-mail não cadastrado em nosso sistema!";
 echo "</font>";
 }
 else{
 $codigo = sha1($codigo);
 $cabecalho  = "From: $a_nome <$a_email>";
 $cabecalho .= "\nReply-To: $a_nome <$a_email>";
 $cabecalho .= "\nContent-Type: Text/HTML";
 $msg = "<font face=Arial size=2>";
 $msg .= "Olá <b>$email</b>,";
 $msg .= "<br>";
 $msg .= "Você está recebendo esta mensagem porque você ou alguém tentou remover esse e-mail ";
 $msg .= "da lista do site <a href='$url' target=_blank><b>$titulo</b></a><br><br>";
 $msg .= "Para confirmar, clique no link abaixo:<br>";
 $msg .= "<a href='$url_sist/confirmar.php?tipo=remove&codigo=$codigo' target=_blank>";
 $msg .= "$url_sist/confirmar.php?tipo=remove&codigo=$codigo></a>";
 $msg .= "<br><br>Se não foi você, ou se deseja continuar recebendo e-mails, simplesmente ignore este e-mail. <br>Obrigado(a).";
 $msg .= "</font>";
 mail($email,$confirm_assunto,$msg,$cabecalho);
 echo "<font face=Geneva, Arial, Helvetica, sans-serif size=2 color=ffffff>";
 echo "Um e-mail de confirmação foi enviado para <b>$email</b>.";
 echo "</font>";
 }
}
else{
echo "<script>alert('Por favor, selecione se quer ASSINAR ou REMOVER o e-mail.');";
echo "location.href='index.html'</script>";
}
}
?>

Valeu a força

Compartilhar este post


Link para o post
Compartilhar em outros sites

E aí Wendel... esse código que tu postou não tem nada a ver com a confirmação mano... esse código envia o e-mail para clicar no link, e isso você falou que está ok...

 

O problema deve estar no código da página confirmar.php?tipo=adiciona. Posta ele aí...

 

Se você notar, nesse script que postasse não tem o if(tipo=="adiciona")... Sacou?

 

Qualquer coisa posta aí.

 

Falou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, webruno

Obrigado pela força.

 

o código da página confirmar.php é este:

 

 

<?php

include("config.php");

$tipo = $_GET["tipo"];

$codigo = $_GET["codigo"];

if($tipo == "adiciona"){

$sql = mysql_query("SELECT * FROM n_emails WHERE codigo = '$codigo'");

if(mysql_num_rows($sql)==1){

mysql_query("UPDATE n_emails SET ativo = 's' WHERE codigo = '$codigo'");

echo "<script>alert('E-mail cadastrado com sucesso! Agora você já faz parte de nossa lista e ficará sabendo de todas as novidades da FlaValença-Ba - www.flavalencaba.com');";

echo "location.href='http://www.flavalencaba.com/new/newlestter/index.php'</script>";

}

else{

echo "<script>alert('E-mail não encontrado no banco de dados.');";

echo "location.href='http://www.flavalencaba.com/new/newlestter/index.php'</script>";

}

}

elseif($tipo == "remove"){

$sql = mysql_query("SELECT * FROM n_emails WHERE codigo = '$codigo'");

if(mysql_num_rows($sql)==1){

mysql_query("DELETE FROM n_emails WHERE codigo = '$codigo'");

echo "<script>alert('E-mail apagado com sucesso!');";

echo "location.href='http://www.flavalencaba.com/new/newlestter/index.php'</script>";

}

else{

echo "<script>alert('E-mail não encontrado no banco de dados.');";

echo "location.href='http://www.flavalencaba.com/new/newlestter/index.php'</script>";

}

}

else{

echo "location.href='http://www.flavalencaba.com/new/newlestter/index.php'</script>";

}

?>

 

 

Abraços,

Compartilhar este post


Link para o post
Compartilhar em outros sites

wendel nao precisa floodar o forum

 

o outro usuario nao entrou hoje, provavelemente por ser um domingo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Wendel, esqueci de você rapaz, hahaha... eu esqueci de marcar a assinatura do tópico pra receber a atualização no e-mail.

 

Mas enfim... cara, aparentemente a lógica do seu script está OK... você precisa passar o erro que está acontecendo... aparece algum erro na tela? Ou simplesmente não faz o update?

 

Tenta depurar para saber onde está acontecendo o erro. Por exemplo, no bloco do "if($tipo == "adiciona")" você pode colocar alguns echos para saber por qual caminho o script ta indo e assim você vê onde está o erro. Tipo:

 

if($tipo == "adiciona")

{

$sql = mysql_query("SELECT * FROM n_emails WHERE codigo = '$codigo'");

 

if(mysql_num_rows($sql)==1)

{

 

echo "Chegou até aqui. Já é um bom sinal."

 

mysql_query("UPDATE n_emails SET ativo = 's' WHERE codigo = '$codigo'");

}

else

{

echo "Hummm... o problema deve estar no SELECT."

}

}

 

Beleza? Qualquer coisa pergunta aí que dessa vez respondo mais rapido, hehehe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, meu velho

Rapaz, o problema é que não saco muito de php.

Você se cadastra e recebe um e-mail para comvirmar a inscrição. Até aí funciona beleza.

O problema é quando você clica no link da confirmação (que foi pro seu e-mail) que a página da erro. Ele não chega a confirmar sua assinatura.

Quando acesso administração aparece seu e-mail com a informação aguardando confirmação.

Qual é seu e-mail? Tirei ele do site devido o erro e te passo o link dele e a senha

 

Abração

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Wendel... a gente pode resolver isso pelo fórum mesmo, assim você já aprende um pouco mais de PHP...

 

Você fez o que eu lhe disse? Para depurar o código?

 

Você precisa saber em qual parte do script dá erro... quando você clica no link de confirmação que é enviado para o e-mail, ele abre a página "confirmar.php?tipo=adiciona&codigo=$codigo" certo? Acontece algum erro nessa página?

 

 

 

Vai postando aí que a gente chega lá.

Falou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi,

 

Cadastrei um outro e-mail meu e recebi esse texto:

 

Olá wendel.lobao@yahoo.com.br,

Você está recebendo esta mensagem porque você ou alguém adicionou esse e-mail na lista do site FlaValença-Ba

 

Para confirmar, clique no link abaixo:

http://www.flavalencaba.com/new/newlestter...ee630687fea>

 

Se não foi você, simplesmente ignore este e-mail.

Obrigado(a).

 

Acho que achei esse negócio. Será que este sinal ">" no final do código que gera o erro?

Só vou mexer nele depois que você analisar.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

humm, acho que não é isso cara... eu cliquei no link e deu um erro 404, ou seja, página não encontrada... é bem provável que o arquivo não exista nesse caminho: "new/newlestter/confirmar.php"... pra falar a verdade, nem a pasta "newsletter" existe no servidor. Você precisa fazer o upload desses arquivos.

 

Tenta aí, qualquer coisa pergunta.

 

Falou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi,

Rapaz, se você não toca neste assunto eu não descobriria nunca.

O prior é que o arquivo estava funcionando todo certinho, apenas essa hora da confirmação é que não vai.

No servidor o diretório estava escrito newsletter e apenas nesse link da confirmação estava newlestter. Uma zorra de "s" no lugar errado.

O que me deixa mais puto que eu mesmo conferir linha por linha de todo o sistema antes de postar e não achei este erro. Levei quase uma manhã verificando.

Valeu mesmo, desculpa tomar seu tempo em minha falta de atenção na digitação.

 

Abração

Compartilhar este post


Link para o post
Compartilhar em outros sites

WENDEL, ME DE UM HELP!

 

Seguinte, acho que tenho esse mesmo código que você está usando para um sistema de newsletter...

É esse aqui não é?

 

http://www.mxstudio.com.br/dreamweaver/sis...tter___parte_1/

http://www.mxstudio.com.br/dreamweaver/sis...tter___parte_2/

http://www.mxstudio.com.br/dreamweaver/sis...tter___parte_3/

http://www.mxstudio.com.br/dreamweaver/sis...letter___final/

 

Bem, meu problema é o seguinte. Eu fiz até a parte 2 até agora. Depois disso, o tutorial diz que já dá pra testar o cadastro de emails. Só que não consigo testar porque dá erro na página do IE... erro 500 e 404. Será que o sistema não funciona com servidor testes (uso o apache) e só roda no ar mesmo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi, Leandro

O meu não é esse, não...

Não sou a pessoa mais certa para te ajudar, pois não saco muito do PHP (quebro o galho. rsrsrsrs)

O sistema deve rodar no Apache, sim.

Termine a três e quatro, deve ser em função disso que ele esta dando esse erro.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Wendel.

 

Bem, de qualquer maneira agradeço. Agora, será que você não poderia postar ou me enviar por e-mail os códigos das páginas que compõe o sistema de newsletter para que eu posso comparar com o meu, a fim de tentar solucionar o problema?

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi, Leandro

Eu não tenho esses arquivos do seu. O meu é diferente.

Se você quiser, te envio o "meu".

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Wenderl!

 

Ficaria muito grato se pudesse me enviar o seu.

Mandei para este e-mail, por gentileza: leandro_nigre@yahoo.com.br

 

Valew!

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.