Forum Pplware

Versão Completa: Formulário no site
Está de momento a ver uma versão reduzida do nosso conteúdo. Ver versão completa com o formato adequado.
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
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.
(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?
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.
(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.
URL's de Referência