Ir para conteúdo
maurohpg

Recuperar Array Formulario

Recommended Posts

Boa Tarde Srs. estou com uma duvida que parece ser muito simples mais como nunca usei estou empacado nisso, vejam se podem me ajudar. Eu tenho um formulário com campos dinâmicos que o usuário pode ir adicionando conforme deseja, é uma listagem de compras de um supermercado.
 

<label>Preencha os campos abaixo com os produtos que deseja comprar:</label>
<br />
<table border="0" cellpadding="5" id="listas">
	<tr>
		<th style="color:#000;" align="center">Produto/Descrição</th>
		<th style="color:#000;" align="center">Marca</th>
		<th style="color:#000;" align="center">Quantidade</th>
	</tr>
	<tr>
		<td align="center"><input type="text" name="produto[]" id="produto" maxlength="150"></td>
		<td align="center"><input type="text" name="marca[]" id="marca" maxlength="150"></td>
        <td align="center"><input type="text" name="quantidade[]" id="quantidade" maxlength="10"></td>
	</tr>
</table>
<br />
  <input type="button" id="add_field" value="Adicionar">

Quando a pessoa envia o formulário os dados que a pessoa preenche Marca, Produto e Quantidade não vem junto com o form. Fiz de algumas formas para recuperar esse array, mais não estou conseguindo. Vejam como estou fazendo no momento.

 

<?php
if(strpos($_SERVER['HTTP_REFERER'],'super.com.br')) {
session_start();

// chamada da classe phpmailer
require_once('mailer/class.phpmailer.php');
require_once('mailer/class.smtp.php');

// resgatando os dados passados pelo form
$assunto = "Compras Online";
$nome=$_POST["nome"];
$email=$_POST["email"];
$telefone=$_POST["telefone"];
$celular=$_POST["celular"];
$endereco=$_POST["endereco"];
$horario=$_POST["horario"];
$pagamento=$_POST["pagamento"];
$produto=$_POST["produto"];
$marca=$_POST["marca"];
$quantidade=$_POST["quantidade"];
$cartao=$_POST["cartao"];
$cpf=$_POST["cpf"];
$data      = date("d/m/y");  //hidden
$hora      = date("H:i");  //hidden
$ip        = $_SERVER['REMOTE_ADDR'];  //hidden
$navegador = $_SERVER['HTTP_USER_AGENT']; //hidden

// faço a chamada da classe
$Email = new PHPMailer();

$Email->IsSMTP();            // set mailer to use SMTP
$Email->SMTPAuth = true;     // turn on SMTP authentication
$Email->Port = 587; 
$Email->Host     = "smtp";
$Email->Username = "site@";
$Email->Password = "senha";
$Email->IsMail();                        // ativa o envio de e-mails em HTML, se false, desativa.
$Email->Mailer = "smtp";

$Email->SetLanguage("br");
// esta chamada diz que o envio será feito através da funçao mail do php. Voce mudar para sendmail, qmail, etc
// se quiser utilizar o programa de email do seu unix/linux para enviar o email
//$Email->IsMail(); // ativa o envio de e-mails em HTML, se false, desativa.
$Email->IsHTML(true); 
// email do remetente da mensagem
$Email->From = "site@super.com.br";
// nome do remetente do email
$Email->FromName = $nome;
// Endereço de destino do emaail, ou seja, pra onde voce quer que a mensagem do formulário vá?
$Email->AddAddress("aqui vai o e-mail que recebe","Compras Online");
// informando no email, o assunto da mensagem
$Email->Subject = $assunto; 
// Define o texto da mensagem (aceita HTML)
$Email->Body .= "

$amount=6; //amount shows the number of data I want to repeat
for( $i = 0; $i < $amount; $i++ ) {

<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' />
</head>
<body bgcolor='#ffffff'>
<table width='100%' border='0' cellspacing='0' cellpadding='5'>
<tr>
<td height='50' colspan='3' bgcolor='#ffffff'><font face='Arial, Helvetica, sans-serif' size='3' color='#8f211e'><img src='http://www.super.com.br/img/logo-topo.png'></font></td>
</tr>
<tr>
<td colspan='3'>&nbsp;</td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Nome: $nome</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>E-mail: $email </font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Telefone: $telefone</font></td>
</tr>
<tr>
  <td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Telefone: $celular</font></td>
</tr>
<tr>
  <td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Endere&ccedil;o de entrega: $endereco</font></td>
</tr>
<tr>
  <td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Hor&aacute;rio de entrega: $horario</font></td>
</tr>
<tr>
  <td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Forma de pagamento: $pagamento</font></td>
</tr>
<tr>
  <td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Cart&atilde;o Coperclube: $cartao</font></td>
</tr>
<tr>
  <td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>CPF: cpf</font></td>
</tr>
<tr>
  <td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Data: $data</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>IP: $ip</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Navegador: $navegador</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Hora: $hora</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'>&nbsp;</td>
</tr>
<tr>
  <td width='43%' bgcolor='#3A6014'><font face='Arial, Helvetica, sans-serif' size='2' color='#FFFFFF'>Produto/Descri&ccedil;&atilde;o</font></td>
  <td width='28%' bgcolor='#3A6014'><font face='Arial, Helvetica, sans-serif' size='2' color='#FFFFFF'>Marca</font></td>
  <td width='29%' bgcolor='#3A6014'><font face='Arial, Helvetica, sans-serif' size='2' color='#FFFFFF'>Quantidade</font></td>
</tr>
<tr>
  <td bgcolor='#ffffff'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>'.$produto[$i].'</font></td>
  <td bgcolor='#ffffff'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>'.$marca[$i].'</font></td>
  <td bgcolor='#ffffff'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>'.$quantidade[$i].'</font></td>
</tr>
 <tr>
  <td colspan='3' bgcolor='#FFFFFF'>&nbsp;</td>
</tr>
<tr>
<td colspan='3' bgcolor='#3A6014'><font face='Arial, Helvetica, sans-serif' size='2' color='#FFFFFF'>www.super.com.br</font></td>
</tr>
</table>
</body>
</html>
 }
"
;

if(!$Email->Send())   {

        echo "<h2>A mensagem nao foi enviada. </h2><p><br>";
        echo "Erro: " . $Email->ErrorInfo;
}else{
    	echo "
	<META HTTP-EQUIV=REFRESH CONTENT='0; URL=../obrigado.php'>
	";
 }
 }
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente recuperar os dados do formulário utilizando o filter_input_array, com ele não é necessário você fazer um Post[] para cada name do seu form, ele já vai pegar todos os dados como um array, depois se quiser pode usar o foreach para listar dados do array.

http://php.net/manual/pt_BR/function.filter-input-array.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, ao invés de você fazer isso para resgatar o dados:

$assunto = "Compras Online";
$nome=$_POST["nome"];
$email=$_POST["email"];
$telefone=$_POST["telefone"];
$celular=$_POST["celular"];
$endereco=$_POST["endereco"];
$horario=$_POST["horario"];
$pagamento=$_POST["pagamento"];
$produto=$_POST["produto"];
$marca=$_POST["marca"];
$quantidade=$_POST["quantidade"];
$cartao=$_POST["cartao"];
$cpf=$_POST["cpf"];
$data      = date("d/m/y");  //hidden
$hora      = date("H:i");  //hidden
$ip        = $_SERVER['REMOTE_ADDR'];  //hidden
$navegador = $_SERVER['HTTP_USER_AGENT']; //hidden

 

 

você vai fazer isso:

 

//PEGA DADOS DE FORMULÁRIO E ARMAZENA EM UM ARRAY
$dados = filter_input_array(INPUT_POST, FILTER_DEFAULT);

Onde a variável "$dados" será um array onde irá conter todas a informações vindo do formulário, fazendo assim com que você não tenha mais uma variável para cada dados que vem do seu form.

 

FILTER_DEFAULT = recebe qualquer tipo de dados (inteiro, string ...).

 

Depois se você quiser listar os dados pode fazer assim:

//PERCOREE OS DADOS DE UM ARRAY e IMPRIME OS INDICES
    foreach ($dados as $value) {
        
            print_r($value) . "<br>";
        
    }

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 minuto atrás, Fábio.info7 disse:

Certo, ao invés de você fazer isso para resgatar o dados:


$assunto = "Compras Online";
$nome=$_POST["nome"];
$email=$_POST["email"];
$telefone=$_POST["telefone"];
$celular=$_POST["celular"];
$endereco=$_POST["endereco"];
$horario=$_POST["horario"];
$pagamento=$_POST["pagamento"];
$produto=$_POST["produto"];
$marca=$_POST["marca"];
$quantidade=$_POST["quantidade"];
$cartao=$_POST["cartao"];
$cpf=$_POST["cpf"];
$data      = date("d/m/y");  //hidden
$hora      = date("H:i");  //hidden
$ip        = $_SERVER['REMOTE_ADDR'];  //hidden
$navegador = $_SERVER['HTTP_USER_AGENT']; //hidden

 

 

você vai fazer isso:

 


//PEGA DADOS DE FORMULÁRIO E ARMAZENA EM UM ARRAY
$dados = filter_input_array(INPUT_POST, FILTER_DEFAULT);

Onde a variável "$dados" será um array onde irá conter todas a informações vindo do formulário, fazendo assim com que você não tenha mais uma variável para cada dados que vem do seu form.

 

FILTER_DEFAULT = recebe qualquer tipo de dados (inteiro, string ...).

 

Depois se você quiser listar os dados pode fazer assim:


//PERCOREE OS DADOS DE UM ARRAY e IMPRIME OS INDICES
    foreach ($dados as $value) {
        
            print_r($value) . "<br>";
        
    }

 

 

 

Maurohpg, também sou iniciante em php, não sei se era isso que você estava precisando, tinha a mesma dúvida que você aprendi isso a pouco e foi muito útil pra mim, se eu estiver errado e alguém com mais experiência puder me corrigir eu agradeço, mas isso que eu te passei funcionou perfeitamente pra mim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fabio, obrigado ja havia visto na documentação do php e entendi como fazer, agora tem uma coisa que não estou entendendo como fazer, pois eu consegui recuperar os dados array, mais só consigo recuperar os primeiros campos dinâmicos, fiz dessa forma. Agora minha dúvida é como fazer um while dentro do 

$Email->Body para recuperar todos os dados da tabela abaixo:

<tr>
  <td bgcolor='#ffffff'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>$produto[$i]</font></td>
  <td bgcolor='#ffffff'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>$marca[$i]</font></td>
  <td bgcolor='#ffffff'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>$quantidade[$i]</font></td>
</tr>

 

<?php
// chamada da classe phpmailer
require_once('mailer/class.phpmailer.php');
require_once('mailer/class.smtp.php');

// resgatando os dados passados pelo form
if ($_POST){
$assunto = "Compras Online";
$nome=$_POST["nome"];
$email=$_POST["email"];
$telefone=$_POST["telefone"];
$celular=$_POST["celular"];
$endereco=$_POST["endereco"];
$horario=$_POST["horario"];
$pagamento=$_POST["pagamento"];
$cpf=$_POST["cpf"];
$produto=$_POST["produto"];
$marca=$_POST["marca"];
$quantidade=$_POST["quantidade"];
$cartao=$_POST["cartao"];
$cpf=$_POST["cpf"];
$data      = date("d/m/y");  //hidden
$hora      = date("H:i");  //hidden
$ip        = $_SERVER['REMOTE_ADDR'];  //hidden
$navegador = $_SERVER['HTTP_USER_AGENT']; //hidden

   // exibindo os dados
   	for ($i=0; $i<$quant_linhas; $i++) {
	echo  "Produto: ".$produto[$i]."<br />";
	echo  "Marca: ".$marca[$i]."<br />";
	echo  "Quantidade: ".$quantidade[$i]."<br />";
   }

// chamada da classe
$Email = new PHPMailer();

$Email->IsSMTP();            // set mailer to use SMTP
$Email->SMTPAuth = true;     // turn on SMTP authentication
$Email->Port = 587; 
$Email->Host     = "";
$Email->Username = "";
$Email->Password = "";
$Email->IsMail();                        // ativa o envio de e-mails em HTML, se false, desativa.
$Email->Mailer = "smtp";

$Email->SetLanguage("br");
// esta chamada diz que o envio será feito através da funçao mail do php. Voce mudar para sendmail, qmail, etc
// se quiser utilizar o programa de email do seu unix/linux para enviar o email
//$Email->IsMail(); // ativa o envio de e-mails em HTML, se false, desativa.
$Email->IsHTML(true); 
// email do remetente da mensagem
$Email->From = "";
// nome do remetente do email
$Email->FromName = $nome;
// Endereço de destino do emaail, ou seja, pra onde voce quer que a mensagem do formulário vá?
$Email->AddAddress("","Compras Online");
// informando no email, o assunto da mensagem
$Email->Subject = $assunto; 
// Define o texto da mensagem (aceita HTML)
$Email->Body = "

<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' />
</head>
<body bgcolor='#ffffff'>
<table width='100%' border='0' cellspacing='0' cellpadding='5'>
<tr>
<td height='50' colspan='3' bgcolor='#ffffff'><font face='Arial, Helvetica, sans-serif' size='3' color='#8f211e'></font></td>
</tr>
<tr>
<td colspan='3'>&nbsp;</td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Nome: $nome</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>E-mail: $email </font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Telefone: $telefone</font></td>
</tr>
<tr>
  <td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Telefone: $celular</font></td>
</tr>
<tr>
  <td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Endere&ccedil;o de entrega: $endereco</font></td>
</tr>
<tr>
  <td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Hor&aacute;rio de entrega: $horario</font></td>
</tr>
<tr>
  <td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Forma de pagamento: $pagamento</font></td>
</tr>
<tr>
  <td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Cart&atilde;o Coperclube: $cartao</font></td>
</tr>
<tr>
  <td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>CPF: cpf</font></td>
</tr>
<tr>
  <td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Data: $data</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>IP: $ip</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Navegador: $navegador</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>Hora: $hora</font></td>
</tr>
<tr>
<td colspan='3' bgcolor='#FFFFFF'>&nbsp;</td>
</tr>
<tr>
  <td width='43%' bgcolor='#3A6014'><font face='Arial, Helvetica, sans-serif' size='2' color='#FFFFFF'>Produto/Descri&ccedil;&atilde;o</font></td>
  <td width='28%' bgcolor='#3A6014'><font face='Arial, Helvetica, sans-serif' size='2' color='#FFFFFF'>Marca</font></td>
  <td width='29%' bgcolor='#3A6014'><font face='Arial, Helvetica, sans-serif' size='2' color='#FFFFFF'>Quantidade</font></td>
</tr>
<tr>
  <td bgcolor='#ffffff'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>$produto[$i]</font></td>
  <td bgcolor='#ffffff'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>$marca[$i]</font></td>
  <td bgcolor='#ffffff'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>$quantidade[$i]</font></td>
</tr>
 <tr>
  <td colspan='3' bgcolor='#FFFFFF'>&nbsp;</td>
</tr>
<tr>
<td colspan='3' bgcolor='#3A6014'><font face='Arial, Helvetica, sans-serif' size='2' color='#FFFFFF'></font></td>
</tr>
</table>
</body>
</html>
";

if(!$Email->Send())   {

        echo "<h2>A mensagem nao foi enviada. </h2><p><br>";
        echo "Erro: " . $Email->ErrorInfo;
}else{
    	echo "
	<META HTTP-EQUIV=REFRESH CONTENT='0; URL=../obrigado.php'>
	";
 }
 }
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela ajuda, problema resolvido, bem simples.
 

for ($i=0; $i<$quant_linhas; $i++) {
$Email->Body .= "<tr>";
$Email->Body .= "<td bgcolor='#ffffff'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>$produto[$i]</font></td>";
$Email->Body .= "<td bgcolor='#ffffff'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>$marca[$i]</font></td>";
$Email->Body .= "<td bgcolor='#ffffff'><font face='Arial, Helvetica, sans-serif' size='2' color='#3A6014'>$quantidade[$i]</font></td>";
$Email->Body .= "</tr>";
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por gersonab
      há tempos utilizo para cadastrar data no BD a instrução :
      implode('-',array_reverse(explode('/',$data)))
      com isso no input posso colocar 09/02/2019 e no banco de dados grava 2019-02-09 , até ai sem problemas, porém ao atualizar um sistema para pdo, estou com problema no insert dinâmico, onde posso fazer 1 ou mais inserts, da forma abaixo cadastro quantos eu quiser :
      $sql = "INSERT INTO cantos ( id_t, id_c, data, ca, cant, po, des) VALUES (:id_t, :id_c, :data, :ca, :cant, :po, :des)";              $stmt = $pdo->prepare($sql);             foreach($_POST['idp'] as $indice => $valor) {             $stmt->bindParam(':id_t', $_POST['id_tor'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':id_c', $_POST['idp'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':data', $_POST['data'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':ca', $_POST["ca"][$indice], PDO::PARAM_STR);             $stmt->bindParam(':cant', $_POST['cant'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':po', $_POST['po'][$indice], PDO::PARAM_STR);             $stmt->bindParam(':des', $_POST['des'][$indice], PDO::PARAM_STR);                              if ($stmt->execute()){                     echo "Cadastrado com sucesso.";             }
      no entento a data vai no formato do input 09/02/2019.
      caso utilize :
      $stmt->bindParam(':data', implode('-',array_reverse(explode('/',$_POST['data'][$indice]))), PDO::PARAM_STR);
      tenho o erro Strict standards: "Only variables should be passed by reference in "que significa "Apenas as variáveis podem ser passadas por referência"
      qual a melhor forma de se fazer neste caso ?
    • Por giobr
      Olá pessoal, tudo bem?
       
      Possuo um formulário dentro de uma determinada pasta, por exemplo, dominio.com/formulario/, porém, vou usar este formulário dentro de uma outra página, por exemplo, dominio.com/sobre onde eu precisaria que quando o usuário preenchesse este formulário chegasse para mim o link dominio.com/sobre  que ele usou para acessar o formulário e não onde ele é processado.
       
      Tentei usar: $pagina_referencia = $_SERVER["HTTP_REFERER"]; mas ele sempre me retorna onde é processado..

      Existe alguma forma?
       
      Obrigado.
    • Por WictorP
      Olá, tudo bem? Eu espero que esteja!
       
      Estou com um pequeno problema em uma medida de segurança que estou fazendo, acho que vocês podem me ajudar.
       
      Estou tentando criar uma defesa global de todos os valores obtidos através de formulários, ao qual o usuário irá preencher, ou seja, uma pequena defesa contra SQLInjection.
      Sei que isto está longe de resolver o problema, mas acho que é só o que precisa para um projeto de pequeno porte.
      Para esta segurança eu pego tudo que vem por $_POST e passo na função addslashes e verifico se é uma string. Este método funciona, porém tem um defeito.
      Eu também trabalho com envio de Arrays no formulário, e para que a função addslashes funcione, todas as variáveis passadas pelo $_POST deve ser uma string (basicamente todo conteúdo não array de um formulário pode ser tratado como string, até as que contém só números).
       
      Tentei fazer uma verificação nesta função, que caso seja array, ele não faz essa adesão do addslashes e passa o array cru que será tratado mais pra frente na página que o requisitar, porém, não consigo fazer esta verificação com o is_array(), o IF passa como se fosse outra coisa e trata como se fosse string normal.
       
      Segue o código:

              $formulario = $_POST;         foreach($formulario AS $key => $valor) {             if(is_array($_POST[$key])) {                 $_POST[$key] = $_POST[$key];             }else {                 $_POST[$key] = filter_var(addslashes($_POST[$key]), FILTER_SANITIZE_STRING);             }         }
       
      Espero que possam me dar uma luz referente à isto.
      Grato, Wictor Pamplona.
    • Por leox182
      Bom dia!
      Pessoal estou tentando fazer um formulário de contato. Consegui fazer um teste mas a mensagem está chegando em branco, e só aparece o campo de mensagem, sem o resto.
      Chega assim: anonymous@www038.centralserver.com.br
          para leonardo Mensagem:  
       
      Segue meu HTML: 
      <!doctype html> <html> <head> <meta charset="utf-8"> <title>Documento sem título</title> </head> <body bgcolor="#FFFFFF" topmargin="0" leftmargin="0" marginheight="0" marginwidth="0" > <div align="center"> <center> <table width="100%" style="border-collapse: collapse" border="0" cellspacing="1"> <tbody> <tr> <td width="25%"><p align="center"><a href="http://www.musiaudio.com.br/images/MUSIAUDIO.jpg"><img src="MUSIAUDIO/MUSIAUDIO.jpg" width="319" height="97" alt=""/></a> <table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse; font-family: Segoe, 'Segoe UI', 'DejaVu Sans', 'Trebuchet MS', Verdana, sans-serif; font-size: 16px;" bordercolor="#111111" width="100%" id="AutoNumber2" background="/icons/cruzinha.gif"> <tr> <td width="50%"><p align="center">Novidades em breve!</p></td> <td width="50%"><form name="formulario_contato" method="post" action="contato.php"> <p> <label for="nome2">Nome:</label> <input name="nome2" type="text" required="required" id="nome2" size="40"> </p> <p> <label for="email">Email:</label> <input name="email2" type="email" required="required" id="email" size="40"> </p> <p> <label for="telefone">Telefone:</label> <input name="telefone2" type="tel" required="required" id="telefone" size="40"> </p> <p> <label for="mensagem">Mensagem:</label> <textarea name="mensagem2" cols="45" rows="10" required="required" id="mensagem"></textarea> </p> <p> <input name="submit2" type="submit" id="submit2" formmethod="POST" value="Enviar"> <input type="reset" name="reset2" id="reset2" value="Redefinir"> </p> <p>&nbsp;</p> </form></td> </tr> </table> <p align="center">  </tbody> </table> </center> </div> </body> </html> e meu PHP:
      <?php $nome = "Nome: ".$_POST['nome']."\n"; $email = "Email: ".$_POST['email']."\n"; $telefone = "Telefone: ".$_POST['telefone']."\n"; $mensagem = "Mensagem: ".$_POST['mensagem']."\n"; mail("leonardo@musiaudio.com.br", "email recebido", $mensagem); echo '<p><font face="Tahoma" color="##000000"><span style="font-size:11pt;"><b>Sua mensagem foi enviada com sucesso!</b></span></font></p>'; echo '<p><font face="Tahoma" color="##000000"><span style="font-size:11pt;"><b>Em breve entraremos em contato com você! Obrigado!</b></span></font></p>'; ?> Fiz esse exemplo vendo um vídeo no Youtube, não tenho muita experiência...
       
      Conseguem me ajudar?
       
    • Por maruanbredoff
      Boa tarde pessoal,
      Estou com quebrando a cabeça com uma situação no meu sistema.
      No sistema eu tenho uma tabela tratamento, clientes, dentista e procedimento. 
      Dentro do sistema tenho uma tela onde a pessoa vai cadastrar o tratamento para o paciente e nessa tela a pessoa escolhe quais os procedimento, e qual o dentista que vai realizar.
      O campo idprocedimento é um array pois o mesmo tratamento pode ter varios procedimentos.
       
      O meu problema está em apresentar esses dados do array na tabela. o Select é esse a seguir
       
      SELECT t.idtratamento,t.idprocedimento,c.idcliente,c.nome as cliente,d.iddentista,d.nome as dentista,p.descricao as procedimento,t.idtratamento,t.datainicio,t.obs,t.status_tratamento
      FROM tratamento t
      INNER JOIN clientes c ON t.idcliente = c.idcliente
      INNER JOIN dentista d ON d.iddentista = t.iddentista
      INNER JOIN procedimento p ON p.idprocedimento = t.idprocedimento
      where t.idcliente = 1 and p.idprocedimento in (t.idprocedimento)
       
      Com esse select o retorno é o seguinte:
      idtratamento idprocedimento cliente iddentista dentista procedimento   76 260 Paciente teste 1 Dentista Teste Aparelho extra-bucal 77 31,5,6 Paciente teste 1 Dentista Teste Alveoloplastia   
      Como podem ver, o campo idprocedimento está caindo junto no array, eu queria separar e em vez de 1 linha na tabela aparecesse 3 linhas com esses procedimentos separados. Alguem pode me ajudar?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.