Jump to content

Dúvida - "Mail Bomber"


Reap3r
 Share

Recommended Posts

Bons dias,

Vim aqui postar uma dúvida acerca de um programa que tenho vindo a precisar. Passa-se o seguinte, tenho uma base dados com informações de clientes ( email, nome, numero ), e o objectivo do tal "Mail Bomber" seria enviar ( em código php ) para os email de todos os clientes que tenho na base de dados um link. O próximo seria fazer um script do tal link, para que os clientes que estiverem interessados possam notificar que querem ser contactados, o que me leva à minha próxima dúvida que será registar numa base dados o cliente que clicou no link para que possa ser notificado.

Cumps, Reap3r

Link to comment
Share on other sites

Não devem faltar na internet exemplo de envios de mail em PHP, por isso, passando à frente: para registares o clique de uma pessoa, em principio deve ser suficiente a pessoa aceder a essa página.

Começa por adicionar à base de dados uma coluna na tabela de clientes. Nessa coluna vamos ter 0, o cliente nunca clicou no link, condição inicial; ou 1 se o cliente acedeu à página pretendida. Nessa página, tens de obter, pelo menos, o id do cliente por GET, por exemplo:

click.php?idcliente=1234

Nessa página o que tens a fazer é apenas isto:

- Obter o id do cliente, e verificar se está na base de dados

- mudar o campo de click para 1 (se quiseres registar quantas vezes acedeu, basta obter o valor anterior e incrementar em vez de substituir por 1)

- redireccionar para a página final

Isto funciona apenas para uma campanha/página.

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

Noob question: como é que eu saco o id do cliente?, só se cada link fosse com um id especifico ( não sei exactamente o que escrevi aqui mas pronto ), de maneira a poder identificar o cliente, só por dizer que são cerca de 4.000, e a ideia não seria contar os clicks, mas pensando melhor, com o tal script que vem do link, seria mais fácil apenas criar um form para que o cliente pudesse inserir o email se quisesse ser contactado "á posteriori", e dessa forma fazer select da base dados do email recebido.

Opinions please.

Cumps, Reap3r

Link to comment
Share on other sites

Se percebi bem a tua última sugestão, pretendes mandar a mesma página para todos os clientes, com um formulário em que estes podem deixar um email para "confirmar" o seu contacto. Também o podes fazer.

Por outro lado, em vez de no link colocares o id de cliente, podes colocar no link o email (que até pode ser isso que identifica o cliente unicamente), para ficar automaticamente preenchido, e depois apenas fazer a pergunta de quer se contactado com o mail x ou não: é o tal link com o id especifico.

É fácil gerar um link desses, por exemplo:

$sql = mysql_query("SELECT email FROM cliente");

while ($registo = mysql_fetch_row($sql)) {
   // obter o email do cliente e adicioná-lo ao url
  echo "http://site.com/click.php?idcliente=".$registo[0];
  echo "<br>"; // apenas para gerar uma quebra de linha, para veres todos os links por linha
}

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

Bem, obrigado pela ajuda, já acabei 🙂 .

Acabou por ficar assim:

mailbomber.php:

/* $from='';
$headers = "From: $from"; */
$subject = 'Testing Mail Bomber';
$i=0;
$sql = mysql_query("SELECT * FROM Clientes WHERE Enviado='0'");
while($row = mysql_fetch_array($sql))
{
     if($row['Enviado']==0 && $i < 2)
     {
           //echo $i;
           $message = 'http://grupofabrica.com/newsletter/emailscript.php?Email='.$row['Email'].'&Nome='.$row['Nome'].'&Num='.$row['Num'];
   $to=$row['Email'];
    mail($to,$subject,$message);
   $row['Enviado']=1;
   $i++;
   $ID=$row['ID'];
   $a=1;
   $query = mysql_query("UPDATE Clientes SET Enviado='$a' WHERE ID='$ID'");
   mysql_query($query);
     }
     else
    {
   echo "<script>document.location.href='mailbomber.php';</script>\n";
    }
     //$i = 0;
}
echo "E-Mails were successfully Sent.";

Script Confirmação.php:

mysql_select_db("test", $con);
$Email = $_GET['Email'];
$Nome = $_GET['Nome'];
$Num=$_GET['Num'];
$Data=date('Y-m-d');
$query = "INSERT INTO Confirmation(Email,Nome,Num,Data) VALUES('$Email','$Nome','$Num','$Data')";
if (mysql_query($query,$con))
{
	mysql_close($con);
}
else
{
	echo "Error creating database: " . mysql_error();
}

Por mim podem fechar tópico ( não como funciona aqui (= )

Cumps, Reap3r

Link to comment
Share on other sites

Não se fecham tópicos.

Quanto à tua solução, só tenho a acrescentar para teres cuidado com SQL injection:

http://wiki.portugal-a-programar.org/revistaprogramar_arquivo:11_edicao:vulnerabilidades_em_aplicacoes_web#falhas_de_injeccao_e_insecure_direct_object_reference

Que se resolve trocando

        $Email = $_GET['Email'];
        $Nome = $_GET['Nome'];
        $Num=$_GET['Num'];

por

        $Email = mysql_real_escape_string($_GET['Email']);
        $Nome = mysql_real_escape_string($_GET['Nome']);
        $Num= mysql_real_escape_string($_GET['Num']);  // ou se isto for um número, basta intval($_GET['Num']

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.