Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Dae galera... Tem um site que os bots de spam estao atacando ehehe
Como o site é em ajax, eu nao consigo colocar o reCaptcha, e não vou mudar a estrutura do site...
O que estou usando é isso:
<?php
if (preg_match( "/bcc:|cc:|multipart|\[url|Content-Type:/i", implode($_POST))) {
$spam = true;
echo "<script> alert('Spam detectado. O recado não foi enviado.');</script>";
echo "<script> window.location='index.php';</script>";
}else{
if (preg_match_all("/<a|http:/i", implode($_POST['mensagem']), $out) > 0) {
$spam = true;
echo "<script> alert('Spam detectado. O recado não foi enviado.');</script>";
echo "<script> window.location='index.php';</script>";
}else{
$spamwords = "/(spam|uncomfortable|androgenic|female|male|studies|propecia|minoxidil|Pharmacy|finasteride|disposition|mutagenesis|alkaline|crystalline|Proscar|Merck|fertility|infections|treatments|spokeswoman|minoxidil|medication|specifically|follicles|alopecia|clinically|PROSCAR|impotence|Merck|symptoms|Minoxidil|immunological|pharmacokinetics|distance|proportion|amiando|cards|epididymis|spermatozoa|morphologically|instructables|weakened|lifecycle)/i";
if (preg_match($spamwords, implode($_POST))) {
$spam = true;
echo "<script> alert('Spam detectado. O recado não foi enviado.');</script>";
echo "<script> window.location='index.php';</script>";
}else{
include("conexao.php");
function anti_injection($sql){
$sql = preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"),"",$sql);
$sql = trim($sql);
$sql = strip_tags($sql);
$sql = addslashes($sql);
return $sql;
}
$nome = anti_injection($_POST['nome']);
$email = anti_injection($_POST['email']);
$mensagem = anti_injection($_POST['mensagem']);
$ip = $_SERVER['REMOTE_ADDR'];
$sql = "INSERT INTO mural_de_recados (nome, email, mensagem, ip, data) VALUES ('$nome', '$email', '$mensagem', '$ip', NOW())";
$res= mysql_query($sql,$con);
if(mysql_affected_rows()>0)
echo "<script> alert('Obrigado por enviar o seu recado!');</script>";
else
echo "<script> alert('ERRO: o recado não pode ser enviado. Tente novamente mais tarde!');</script>";
echo "<script> window.location='index.php';</script>";
}
}
}
?>
Queria saber se este jeito já dá uma ajuda para evitar, e também se existem outras funcoes para proteger o formulário com o uso de PHP
Obrigado
HASIUHSAIUSHAIASHAS
É mais fácil algum bot acertar a questao de matemática do que um humano! hahahahaha
Gostei dessa ideia que você postou, mas como eu implementaria isso?? :S
Valeu cara, abraços!
Essa forma que você está utilizando com keywords não é a melhor (está longe disso), pois pode acusar falso positivos.
Sobre o ReCaptcha você pode utilizar através de Ajax sim, uma simples pesquisa retorna inúmeros resultados à respeito: ReCaptcha Ajax
Mas se não quiser usar Captcha algum, existem várias outras formas, uma delas é colocar dois inputs hidden no teu form, um vazio, e outro com uma hash do timestamp que a página foi carregada, no momento que o formulário for enviado, verifique se a timestamp atual é maior que ao menos 60 segundos que a contida na hash enviada pelo input, e também se o valor do input vazio, continua vazio, se ele tiver qualquer conteúdo, certamente é SPAM.
Ou então, use uma simples pergunta de matemática como esta:
/applications/core/interface/imageproxy/imageproxy.php?img=http://farm4.static.flickr.com/3202/2674227920_32e5f692d3.jpg?v=0&key=f43404b66f5d48e4dbdc8580144f0e9f19b9a4f0a66c1237267b39fe7de28013" alt="2674227920_32e5f692d3.jpg?v=0" />
:lol: