← Desenvolvimento

php mail form validator!

Lida 8362 vezes

Offline

cenourinha 
Elite
Mensagens 4094 Gostos 21
Troféus totais: 34
Trófeus: (Ver todos)
Mobile User Apple User Level 6 Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4

Citação de: "OFFICER"
Claro, tens a função mail assim um bocado esquisita :?

Citação de: "cenourinha"
$pedir_convite=mail($para,$assunto,$mensagem,$header);


O que faz ali o $pedir_convite=?

Experimenta lá substituir assim:

Código: [Seleccione]
mail($para,$assunto,$mensagem,$header);


Nada mesmo assim:

Código: [Seleccione]
<?php

$nome 
$_POST['nome'&#93;;
$mail $_POST['mail'&#93;;
$assunto $_POST['assunto'&#93;;
$msg $_POST['msg'&#93;;

if &#40;$nome == null and $mail == null and $assunto == null and $msg == null&#41;
&#123;
echo&#40;"Não foram inseridos nenhuns dados nos campos"&#41;;
&#125;
elseif &#40;$nome == null&#41;
&#123;
echo&#40;"Não foi inserido o nome"&#41;;
&#125;
elseif &#40;$mail == null&#41;
&#123;
echo&#40;"Não foi inserido o e-mail!"&#41;;
&#125;
elseif &#40;$assunto == null&#41;
&#123;
echo&#40;"Não foi inserido o assunto!"&#41;;
&#125;
elseif &#40;$msg == null&#41;
&#123;
echo&#40;"Não foi inserida a mensagem!"&#41;;
&#125;
else

&
#123;
  
function checkemail&#40;$email&#41; &#123;
    
if&#40;eregi&#40;"^[0-9a-z&#93;&#40;[-_.&#93;?[0-9a-z&#93;&#41;*@[0-9a-z&#93;&#40;[-.&#93;?[0-9a-z&#93;&#41;*\\.[a-z&#93;&#123;2,4&#125;$",$email&#41;&#41;  &#123;
$dia date&#40;d&#41;;
$mes date&#40;m&#41;;
$ano date&#40;y&#41;;
$ip getenv&#40;"REMOTE_ADDR"&#41;;

$mensagem="$msg \n \n \n Enviado por $nome cujo o e-mail é $mail \n Dia&#58; $dia Mês&#58; $mes Ano&#58; $ano \n IP&#58; $ip ";

$header="from&#58; $nome <$mail>";

$para ='webtuga@gmail.com';

mail&#40;$para,$assunto,$mensagem,$header&#41;;

echo "Recebe-mos o seu e-mail com sucesso! Quando possivel iremos tentar responder-lhe!\n";
&
#125;

    
else &#123;
    
echo&#40;"O e-mail é invalido!"&#41;;
    
&#125;
    
&#125;
&#125;
?>
Offline

OFFICER 
Membro
Mensagens 2076 Gostos 0
Troféus totais: 29
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

Porque não colocas antes as verificações em javascript? Ficas com um código muito mais limpo e fica sofisticado na mesma lol
Offline

cenourinha 
Elite
Mensagens 4094 Gostos 21
Troféus totais: 34
Trófeus: (Ver todos)
Mobile User Apple User Level 6 Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4

mas eu quero ver quais é o erro!
 :)
Offline

OFFICER 
Membro
Mensagens 2076 Gostos 0
Troféus totais: 29
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

Experimenta lá tirar aquela verificação de e-mail..lol
Offline

cenourinha 
Elite
Mensagens 4094 Gostos 21
Troféus totais: 34
Trófeus: (Ver todos)
Mobile User Apple User Level 6 Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4

Citação de: "OFFICER"
Experimenta lá tirar aquela verificação de e-mail..lol


Sem a verificação dava na boa!
Offline

OFFICER 
Membro
Mensagens 2076 Gostos 0
Troféus totais: 29
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

Lá está, o problema está naquela verificação, que por acaso já tinha notado..
Offline

cenourinha 
Elite
Mensagens 4094 Gostos 21
Troféus totais: 34
Trófeus: (Ver todos)
Mobile User Apple User Level 6 Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4

Citação de: "OFFICER"
Lá está, o problema está naquela verificação, que por acaso já tinha notado..

E quais é?
 :P
Offline

OFFICER 
Membro
Mensagens 2076 Gostos 0
Troféus totais: 29
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

É mesmo no código de verificação, por isso é que não envia, porque o file php nem consegue chegar à função mail();
Offline

cenourinha 
Elite
Mensagens 4094 Gostos 21
Troféus totais: 34
Trófeus: (Ver todos)
Mobile User Apple User Level 6 Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4

Citação de: "OFFICER"
É mesmo no código de verificação, por isso é que não envia, porque o file php nem consegue chegar à função mail();


O pior é que eu editei aquilo e nem sei se era assim, o que eu preciso de saber é o que está errado!

Aprende-se sempre com os erros!  << lol
Offline

OFFICER 
Membro
Mensagens 2076 Gostos 0
Troféus totais: 29
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

Como não utilizo funções php para verificação de formulários, lamento mas não te posso ajudar lol
Offline

morpheus 
Membro
Mensagens 1199 Gostos 0
Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 1000 Posts

tenta lá trocar:

Código: [Seleccione]
if(eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$email))  {


por:

Código: [Seleccione]
if (!preg_match("/^( [a-zA-Z0-9] )+( [a-zA-Z0-9\._-] )*@( [a-zA-Z0-9_-] )+( [a-zA-Z0-9\._-] +)+$/" , $email)) {
Offline

cenourinha 
Elite
Mensagens 4094 Gostos 21
Troféus totais: 34
Trófeus: (Ver todos)
Mobile User Apple User Level 6 Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4

Código: [Seleccione]
<?php

$nome 
$_POST['nome'&#93;;
$mail $_POST['mail'&#93;;
$assunto $_POST['assunto'&#93;;
$msg $_POST['msg'&#93;;

if &#40;$nome == null and $mail == null and $assunto == null and $msg == null&#41;
&#123;
echo&#40;"Não foram inseridos nenhuns dados nos campos"&#41;;
&#125;
elseif &#40;$nome == null&#41;
&#123;
echo&#40;"Não foi inserido o nome"&#41;;
&#125;
elseif &#40;$mail == null&#41;
&#123;
echo&#40;"Não foi inserido o e-mail!"&#41;;
&#125;
elseif &#40;$assunto == null&#41;
&#123;
echo&#40;"Não foi inserido o assunto!"&#41;;
&#125;
elseif &#40;$msg == null&#41;
&#123;
echo&#40;"Não foi inserida a mensagem!"&#41;;
&#125;
else

&
#123;
  
function checkemail&#40;$email&#41; &#123;
    
if &#40;!preg_match&#40;"/^&#40; [a-zA-Z0-9&#93; &#41;+&#40; [a-zA-Z0-9\._-&#93; &#41;*@&#40; [a-zA-Z0-9_-&#93; &#41;+&#40; [a-zA-Z0-9\._-&#93; +&#41;+$/" , $email&#41;&#41; &#123;
$dia date&#40;d&#41;;
$mes date&#40;m&#41;;
$ano date&#40;y&#41;;
$ip getenv&#40;"REMOTE_ADDR"&#41;;

$mensagem="$msg \n \n \n Enviado por $nome cujo o e-mail é $mail \n Dia&#58; $dia Mês&#58; $mes Ano&#58; $ano \n IP&#58; $ip ";

$header="from&#58; $nome <$mail>";

$para ='webtuga@gmail.com';

mail&#40;$para,$assunto,$mensagem,$header&#41;;

echo "Recebe-mos o seu e-mail com sucesso! Quando possivel iremos tentar responder-lhe!\n";
&
#125;

    
else &#123;
    
echo&#40;"O e-mail é invalido!"&#41;;
    
&#125;
    
&#125;
&#125;
?>


e nada! http://cenourinha.gethost4you.com/index.php?p=contactos
Offline

morpheus 
Membro
Mensagens 1199 Gostos 0
Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 1000 Posts

olha lá! e o servidor é o mesmo do outro episódio? se sim, tens que pôr aquela coisa do:

Código: [Seleccione]
extract($_POST);
extract($_GET);


lembras-te disso?
Offline

morpheus 
Membro
Mensagens 1199 Gostos 0
Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 1000 Posts

toma a código correcto:

Código: [Seleccione]
<?php 

$nome 
$_POST['nome'&#93;; 
$mail $_POST['mail'&#93;; 
$assunto $_POST['assunto'&#93;; 
$msg $_POST['msg'&#93;;  

if &#40;$nome == null and $mail == null and $assunto == null and $msg == null&#41; 
&#123; 
echo&#40;"Não foram inseridos nenhuns dados nos campos"&#41;; 
&#125; 
elseif &#40;$nome == null&#41; 
&#123; 
echo&#40;"Não foi inserido o nome"&#41;; 
&#125; 
elseif &#40;$mail == null&#41; 
&#123; 
echo&#40;"Não foi inserido o e-mail!"&#41;; 
&#125; 
elseif &#40;$assunto == null&#41; 
&#123; 
echo&#40;"Não foi inserido o assunto!"&#41;; 
&#125; 
elseif &#40;$msg == null&#41; 
&#123; 
echo&#40;"Não foi inserida a mensagem!"&#41;; 
&#125; 
else 

&
#123; 
if &#40;!preg_match&#40;"/^&#40; [a-zA-Z0-9&#93; &#41;+&#40; [a-zA-Z0-9\._-&#93; &#41;*@&#40; [a-zA-Z0-9_-&#93; &#41;+&#40; [a-zA-Z0-9\._-&#93; +&#41;+$/" , $email&#41;&#41; &#123; 
$dia date&#40;d&#41;; 
$mes date&#40;m&#41;; 
$ano date&#40;y&#41;; 
$ip getenv&#40;"REMOTE_ADDR"&#41;; 

$mensagem="$msg \n \n \n Enviado por $nome cujo o e-mail é $mail \n Dia&#58; $dia Mês&#58; $mes Ano&#58; $ano \n IP&#58; $ip "

$header="from&#58; $nome <$mail>"

$para ='webtuga@gmail.com'

mail&#40;$para,$assunto,$mensagem,$header&#41;; 

echo "Recebe-mos o seu e-mail com sucesso! Quando possivel iremos tentar responder-lhe!\n"
&
#125; 

    
else &#123; 
    
echo&#40;"O e-mail é invalido!"&#41;; 
    
&#125; 
    
&#125; 
?>


no meu servidor caseiro funcionou. :wink:
Offline

cenourinha 
Elite
Mensagens 4094 Gostos 21
Troféus totais: 34
Trófeus: (Ver todos)
Mobile User Apple User Level 6 Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4

Ya deu! Talvez tenha sido o extract($_POST); e o extract($_GET); como eu tinha include no index nem me lembrei!

Mas tipo se eu escrever cenourinha no campo mail ele envia o e-mail!
Como é que previno isso?