Forum Pplware
Formulário no site - Versão de Impressão

+- Forum Pplware (http://forum.pplware.com)
+-- Fórum: Mais Tech (/forumdisplay.php?fid=11)
+--- Fórum: Programação e Web (/forumdisplay.php?fid=16)
+--- Tópico: Formulário no site (/showthread.php?tid=10690)



Formulário no site - cvcosta - 31-01-2012 11:53

Olá a todos,

Gostaria de colocar uma questão relativamente aos form mails.

Eu já construí formulários de contacto em sites. mas agora estou encalhado numa situação.

no HTML tenho:

<form action="contact.php" method="post" name="contact" target="_self" id="contact">
<p>
<input type="hidden" name="to" value="mail_de_destino@site.pt" />
<input type="hidden" name="subject" value="Mensagem Via Site" />
<input type="hidden" name="redirect" value="http://www.site.pt/contact_ok.html" />
<input type="hidden" name="required" value="nome,telefone,email,assunto,mensagem" />
</p>
<p>
<label>Nome
<input type="text" name="nome" id="nome" />
</label>
</p>
<p>
<label>Telefone:
<input type="text" name="telefone" id="telefone" />
</label>
</p>
<p>
<label>E-mail:
<input type="text" name="email" id="email" />
</label>
</p>
<p>
<label>Assunto:
<input type="text" name="assunto" id="assunto" />
</label>
</p>
<p>
<label>Mensagem:<br />
<textarea name="mensagem" id="mensagem" cols="45" rows="5"></textarea>
</label>
</p>
<p>
<input name="enviar" type="submit" class="extra" id="enviar" value="Enviar" />
<input name="reset" type="reset" class="extra" id="reset" value="Reset" />


- no código contact.php tenho:

<?php

$msg = array($nome, $telefone, $email, $assunto, $mensagem);
$nome = 'nome';
$telefone = 'telefone';
$email = 'email';
$assunto = 'assunto';
$mensagem = 'mensagem';


$mailheaders = "From: mail_de_destino@site.pt";

mail($to, $subject, join("\n", $msg), $mailheaders);
Header( "Location: contact_ok.html");

?>



Não está a funcionar e não estou a ver as causas....

É que num outro site tenho isto a trabalhar sem problemas.

Alguém tem alguma ideia??

Desde já agradeço pela vossa atenção


RE: Formulário no site - Bruno Bernardino - 31-01-2012 12:17

Assim de repente, para além de algumas graves falhas de segurança (posso enviar qualquer conteúdo para qualquer email e irá sempre parecer que são vocês os spammers), deverá ser diferentes configurações de servidor.

Não tens referência nenhuma a $_POST, pelo que deduzo teres register_globals activo no site onde funciona, e inactivo no site onde não funciona.

O register_globals é uma directiva MUITO ANTIGA e deve estar SEMPRE DESLIGADA, como tal, recomendo que antes do $msg = array(... faças o seguinte:

Código:
//-- Isto é muito simples, idealmente deverias validar estas variáveis
$to = $_POST['to'];
$subject = $_POST['subject'];
//-- E repetir para as outras variáveis.



RE: Formulário no site - cvcosta - 31-01-2012 12:22

(31-01-2012 12:17)Bruno Bernardino Escreveu:  Assim de repente, para além de algumas graves falhas de segurança (posso enviar qualquer conteúdo para qualquer email e irá sempre parecer que são vocês os spammers), deverá ser diferentes configurações de servidor.

Não tens referência nenhuma a $_POST, pelo que deduzo teres register_globals activo no site onde funciona, e inactivo no site onde não funciona.

O register_globals é uma directiva MUITO ANTIGA e deve estar SEMPRE DESLIGADA, como tal, recomendo que antes do $msg = array(... faças o seguinte:

Código:
//-- Isto é muito simples, idealmente deverias validar estas variáveis
$to = $_POST['to'];
$subject = $_POST['subject'];
//-- E repetir para as outras variáveis.

Obrigado pela rápida resposta!!!


rrr.. falhas graves.. como posso corrigir isso?


RE: Formulário no site - Bruno Bernardino - 31-01-2012 15:30

Para já, e muito simplesmente, podes tirar o "to", "subject" e "redirect" do formulário e deixá-los só em código PHP quando estás para enviar o email.

Depois, convém validar o que recebes do formulário (pelo menos ver se não está vazio e depois validar o tipo de dados, como, por exemplo, o email).

Depois, implementar um captcha ou nonce (pesquisa no google) irá tornar submissões automáticas mais difíceis.


RE: Formulário no site - cvcosta - 31-01-2012 15:35

(31-01-2012 15:30)Bruno Bernardino Escreveu:  Para já, e muito simplesmente, podes tirar o "to", "subject" e "redirect" do formulário e deixá-los só em código PHP quando estás para enviar o email.

Depois, convém validar o que recebes do formulário (pelo menos ver se não está vazio e depois validar o tipo de dados, como, por exemplo, o email).

Depois, implementar um captcha ou nonce (pesquisa no google) irá tornar submissões automáticas mais difíceis.

Mais uma vez grato pela colaboração.

mais logo à noite vou fazer essas alterações. Vamos ver se consigo dar a volta à situação.