Ir para conteúdo

POWERED BY:

Arquivado

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

samamao

PHP email

Recommended Posts

Ola pessoal sou novo aqui no forum então desculpe se estiver postando no lugar errado, estou com um pequeno problema em php, tenho um metodo simples que pega o nome email e mensagem da pessoa de um form e envia para um email da pessoa a mensagem.

O problema é o seguinte se eu nao fizer algum esquema de segurança, permite que a pessoa envie 100 , 200 , 1000 mensagens para minha caixa de entrada atraves do formulario de contato, precisava fazer alguma validação para que a pessoa só consiga mandar no maximo 5 emails por dia.

Qqr dúvida sera bem vindo e obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

comece usando cookies, e talvez um captcha para evitar robos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o cookie fica na pasta temporária de cada navegador.

 

você não tem como "direcionar" para onde você quiser.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo gerei um cookie e queria ir na pasta raiz do google chrome e ver se realmente o cookie esta lá, porém fui na pasta do chrome e n achei nada de Temp la e nas opcoes de cookies do Chrome n tem o cookie do site que fiz, nesta lista de cookies armazenados do chrome ele aparece como nome o site ou é definido em algum parametro o nome do cookie que sera salvo?

Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

e se o navegador estive me modo privado/---o? como fica os cookies?

Compartilhar este post


Link para o post
Compartilhar em outros sites

$ip = $_SERVER['REMOTE_ADDR'];

 

veja só tenho o ip da pessoa que visitou meu site e preciso setar o cookie com o nome do ip

 

setcookie($ip, $ip, $dataExpiracao);
echo "O valor do cookie e :" . $_COOKIE[$ip];

 

porem nao funciona! ele nao seta com numero de ip? tentei setar pelo email da pessoa e tambem nao deu certo ele retorna vazio o echo :(.

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://php.net/setcookie

 

o "correto", seria o cookie se chamar "ip", e o valor do cookie ser o IP(numerico) do cara.

 

assim como qualquer variavel em muitas linguagens de programação, você deve começar ela com um caracter não numerico(a-z_), provavelmente por isso o seu erro.

 

 

 

pelo funcionamento do cookie, ele só estará disponível no proximo acesso a página.

Por esse motivo, você não vai conseguir recuperar ele, logo depois de setar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parse error: syntax error, unexpected T_VARIABLE in 

e a linha que está o erro é esta e n tem erro nenhum veja que sinistro.

$dataExpiracao = (time() + 86400);

tentei com e sem os parenteses. do time

Compartilhar este post


Link para o post
Compartilhar em outros sites

sempre que você ver um erro, você deve olhar tb para a linha de cima.

 

oq tem acima disso ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Era realmente na linha de cima o problema e ja resolvi obrigado.

 

$dataExpiracao = (time() + 86400);
setcookie('ip', $ip, $dataExpiracao);

if (isset($_COOKIE['ip'])) {
echo "O valor do cookie e :" . $_COOKIE['ip'];
}

 

tipo fiz o cookies ele já esta gerando e verificando se ele existe qual próximo passo agora para resolver meu problema?

Lembrando que preciso que a pessoa só consiga enviar 5 vezes a mensagem no Email no período de 86400 que no caso é 24h!

Compartilhar este post


Link para o post
Compartilhar em outros sites

cria um cookie na maquina da pessoa:

 

"vezesEnviado". Cada vez q ela enviar você soma + 1 nesse cookie. (o ip é completamente desnecessário).

 

 

antes de deixar ela enviar, você verificar o valor desse cookie: "vezesEnviado"

Se vezesEnviado for maior ou igual a 5, você não deixa enviar. Se for menor, você deixa, e incrementa + 1 nele.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala meu rei, segui teus passos e aqui estou

 

if (isset($_COOKIE['vezesenviado'])) {
echo "<p align=center> Entrou aqui. </p>";

   //echo "O valor do cookie e :" . $_COOKIE['vezesenviado'];
   $vezes = $vezes + 1;
echo "<p align=center>$vezes</p>";
   while ($vezes >= 5) {
       $podeenviar = false;
       echo "<p align=center>$vezesenviado Não pode mais enviar!</p>";
   } 
}

 

o problema é que ele esta retornando o

echo "<p align=center>$vezes</p>";

1 ou 2, ele nao esta incrementando o

$vezes = $vezes + 1;

sabe o porque disso?

Vlw.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pq você tem que guardar esse valor no cookie.

 

Da forma que você fez, você não está atualizando o cookie.

Compartilhar este post


Link para o post
Compartilhar em outros sites

e como incrementa um valor em um cookie recebido?

 

tentei isso mas n da tambem

 


echo "O valor do cookie e :" . $_COOKIE['vezesenviado'];

if (isset($_COOKIE['vezesenviado'])) {
//echo "<p align=center> Entrou aqui. </p>";
   //echo "O valor do cookie e :" . $_COOKIE['vezesenviado'];

   //$vezes++;
setcookie('vezesenviado', $vezes=$vezes+1, $dataExpiracao);
echo "<p align=center>$vezes</p>";
   while ($vezes >= 5) {
       $podeenviar = false;
       echo "<p align=center>$vezesenviado Não pode mais enviar!</p>";
   } 
} else {
$vezes = 1;
setcookie('vezesenviado', $vezes, $dataExpiracao);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

adapte a suas necessidades

 

<?php

if(isset($_COOKIE['teste']))
{
$n = $_COOKIE['teste'];

$n = $n+1;

setcookie('teste',$n);

echo $_COOKIE['teste'];

}
else
{

setcookie('teste',1);

}

?>

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.