Jump to content


Photo

Problema Relativamente Estranho Com Form. Em Php


  • Faça o login para participar
4 replies to this topic

#1 carlos_ys

carlos_ys

    Turista

  • Usuários
  • 25 posts
  • Sexo:Não informado

Posted 20/08/2007, 18:55

Eu estou com um problema que achei muito estranho, mas acho que alguém já deve ter passado por isso, ou ter alguma idéia deste problema...

Esses dias um cliente me pediu para atulizar a versão do php dele do 4 para a versão 5 (a última) e tudo certo nenhum sistema deu erro, com excessão de um formulário de indicação.

É um formulário extremamente simples:
<?phpif( isset( $_POST['validar']) ){$assunto = "Um amigo lhe recomendou o site xxx";$mensagem = "Mensagem de indicação";//Verificaçõesif ( $nome == "" ) {$errors .= "Você não digitou seu nome.<br>";}if ( $email == "" ) {$errors .= "O campo e-mail deve ser preenchido para que possamos entrar em contato.<br>";}if ( $nomeamigo == "" ) {$errors .= "Digite o nome de seu amigo.<br>";}if ( $emailamigo == "" ) {$errors .= "O campo e-mail do amigo deve ser preenchido para que possamos entrar em contato.<br>";}if ( $errors == "" ) {//Se não tiver erros, enviar mensagem$headers = "From: mymail@myserver.com \nContent-type: text/html";	mail ($emailamigo, $assunto, $mensagem, $headers);	echo		"Mensagem enviada";}else{echo "Ocorreu os seguintes erros ao tentar enviar o formulário:<br><br>$errors";}}else{//Exibir formulário simplesprint "<form action='" . $_SERVER['PHP_SELF'] . "' method='post' name='indika'>";print('Seu nome:<br> <input type="text" name="nome" id="nome" size="30"><br>Seu e-mail:<br> <input type="text" name="email" size="30"><br>Nome do amigo:<br> <input type="text" name="nomeamigo" size="30"><br>Email do Amigo(a):<br> <input type="text" name="emailamigo" size="30"><br><br><br><input type="submit" name="validar" value="Enviar" /><input class="reset" type="reset" name="reset" value="Limpar"></form>');}?>
Agora não sei se foi exatamente por causa da alteração da versão do php ou se o próprio cliente foi editar alguma coisa no código, acabou errando, não tinha a outra versão salva e não quis dizer.

Sempre que preenche todos os dados no form, clica em enviar, ele exibe as mensagens de erro, como se não tivesse preenchido nenhum campo:

Ocorreu os seguintes erros ao tentar enviar o formulário:

Você não digitou seu nome.
O campo e-mail deve ser preenchido para que possamos entrar em contato.
Digite o nome de seu amigo.
O campo e-mail do amigo deve ser preenchido para que possamos entrar em contato.

E pelo que eu sei, para pegar um campo de formulário, é só definir o "name" como uma variável, ou seja:
<input type="text" name="nome" id="nome" size="30">
Para pegar esse campo, usar: $nome.

Ou é isso o erro, que não identifica o que é preenchido no campo dos formulários?

Alguém percebeu algum erro? Ou também achou tudo muito estranho? :assobio:

#2 savior

savior

    Campanha [codebox], use ou morra :D

  • Usuários
  • 1229 posts
  • Sexo:Masculino
  • Localidade:Curitiba, PR - Brasil
  • Interesses:Na vida ;P

Posted 20/08/2007, 20:24

Isso ae que você fez é costume de má programação... Se chama variaveis globais, tem que ativar elas no .ini do php.

register_globals = On

Algo assim ... deve resolver o problema

(y)

[lastfm] [blog]

Campanha codebox: use-a ou morra!
bfmaster_duran[at]yahoo.com.br


#3 carlos_ys

carlos_ys

    Turista

  • Usuários
  • 25 posts
  • Sexo:Não informado

Posted 21/08/2007, 15:03

Isso ae que você fez é costume de má programação... Se chama variaveis globais, tem que ativar elas no .ini do php.

register_globals = On

Algo assim ... deve resolver o problema

(y)


Ah certo, foi bom você avisar. ;)

Como seria o certo então para chamar os campos preenchidos no formulário? Sem precisar mecher com essa parte que pode prejudicar a segurança.

Se já tiver posts falando sobre isso, poderia me passar os links, pois tive dificuldades para encontra-los.

Obrigado.

#4 savior

savior

    Campanha [codebox], use ou morra :D

  • Usuários
  • 1229 posts
  • Sexo:Masculino
  • Localidade:Curitiba, PR - Brasil
  • Interesses:Na vida ;P

Posted 21/08/2007, 15:06

Eu costumo usar assim
$arrValores = count($_POST) > 0 ?  $_POST : null;
dae chamo tudo por $arrValores['campo']

Você pode estudar a possibilidade do extract() ou o list()

[lastfm] [blog]

Campanha codebox: use-a ou morra!
bfmaster_duran[at]yahoo.com.br


#5 carlos_ys

carlos_ys

    Turista

  • Usuários
  • 25 posts
  • Sexo:Não informado

Posted 23/08/2007, 16:49

Muito obrigado savior, era isso mesmo, agora ele está enviando as indicações corretamente.

Eu só tive um problema, ao aplicar variáveis na mensagem que é enviada, pois antes eu colocava na $mensagem = "Mensagem de indicação";

$mensagem = "
Olá $nomeamigo,<br>
Seu amigo $nome ($email) visitou o site X e recomendou...<br>
";

Agora eu tentei seguir a lógica das alterações mas não funcionou:

$arrValores['mensagem'] = "
Olá $arrValores['nomeamigo'],<br>
Seu amigo $arrValores['nome'] visitou o site X...<br>
";

Tentei também definir assim:
$arrValores['nomeamigo'] == $nomeamigos;
E na mensagem eu coloquei a $nomeamigos, mas ele não reconhece.




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq