Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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çaOlá, 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'";](http://www.flavalencaba.com/new/newlestter/index.php)
}
else{
echo "<script>alert('E-mail não encontrado no banco de dados.');";
echo "location.href='[http://www.flavalencaba.com/new/newlestter/index.php'";](http://www.flavalencaba.com/new/newlestter/index.php)
}
}
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'";](http://www.flavalencaba.com/new/newlestter/index.php)
}
else{
echo "<script>alert('E-mail não encontrado no banco de dados.');";
echo "location.href='[http://www.flavalencaba.com/new/newlestter/index.php'";](http://www.flavalencaba.com/new/newlestter/index.php)
}
}
else{
echo "location.href='[http://www.flavalencaba.com/new/newlestter/index.php'";](http://www.flavalencaba.com/new/newlestter/index.php)
}
?>
Abraços,
Cadê você, webruno? rsrsrs
wendel nao precisa floodar o forum
o outro usuario nao entrou hoje, provavelemente por ser um domingo
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.
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
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.
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
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.
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
hahahaha, beleza, faz parte... qualquer coisa diz aí.
Falou.
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?
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
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
Oi, Leandro
Eu não tenho esses arquivos do seu. O meu é diferente.
Se você quiser, te envio o "meu".
Abraços
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
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.