PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de...

30
PHP Tratando Formulários Prof. Gláucya Boechat [email protected]

Transcript of PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de...

Page 1: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

PHP Tratando Formulários

Prof. Gláucya [email protected]

Page 2: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

2

Tratando FormuláriosTratando Formulários● Quando um formulário é submetido para um

script PHP– Qualquer variável do formulário será

automaticamente disponível para o script PHP<html>

<body>

 <form action="recebe_dados.php">

   Nome: <input type="text" name="nome"/>

  Idade: <input type="text" name="idade"/>

  <input type="submit" value=”Enviar” name=”enviar”/>

<input type="reset" name="limpar" value="Limpar"/>

 </form>

</body>

</html>

Page 3: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

3

Enviando as informações para um programa PHP

Enviando as informações para um programa PHP

● Existem dois métodos de passagem de parâmetros:– Get

– Post

● Parâmetro da tag form– method

<form action="recebe_dados.php" method="POST">

Page 4: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

4

Método GetMétodo Get● Método padrão para o envio de dados

– O método utilizado se nenhum método for especificado no parâmetro method da tag form.

● Os dados serão enviados juntamente com a URL.

● O método Get não deve ser usado para enviar senhas ou informações confidenciais.

● Não é adequado para variáveis com valores superiores a 2000 caracteres

http://www.seusite.com.br/recebe_dados.php?nome=Aluno&idade=19

Page 5: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

5

Método GetMétodo Get

● Caractere ? – Representa o início de uma cadeia

● Símbolo &– Identifica o início de uma nova variável

● Caracter =– Separa as variáveis de seus repectivos valores

http://www.seusite.com.br/recebe_dados.php?nome=Aluno&idade=19

Page 6: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

6

Exemplo arquivo.htmlExemplo arquivo.html

<form action="recebe_dados.php" method="get">

 Nome: <input type="text" name="nome" />

 Idade: <input type="text" name="idade"/>

 <input type="submit" value=”Enviar” name=”enviar”>

 <input type="reset" name="limpar" value="Limpar"/>

</form>

Page 7: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

7

Variável $_GETVariável $_GET● Ao clicar no botão submit do formulário da

página HTML.– Os dados do formulário são enviados para o

arquivo PHP

● Utiliza da variavel $_GET para recolher os dados

<html>

<body>

Olá <?php echo $_GET["nome"]; ?><br>

você tem<?php echo $_GET["idade"]; ?> anos.

</body>

</html>

Saída

Olá Aluno.

Você tem 19 anos.

Page 8: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

8

ExemploExemplo<html>

 <body>

  <form method="get" action="cor.php">

   <p>Informe seu nome:</p>

   <input type="text" name="nome"></p>

   <p>Escolha uma cor:</p>

   <input type="radio" name="cor" value="r" /> Vermelho 

   <input type="radio" name="cor" value="g" /> Verde 

   <input type="radio" name="cor" value="b" /> Azul        </p>

   <input type="submit" value="Enviar" />

  </form>

 </body>

</html>

Page 9: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

9

Exemplo (cor.php)Exemplo (cor.php)<?php

 switch ($_GET["cor"]) {

  case "r": $background = "rgb(255,0,0)"; break;

  case "g": $background = "rgb(0,255,0)"; break;

  case "b": $background = "rgb(0,0,255)"; break;

  default: $background = "rgb(255,255,255)"; break;

 }

?>

<html>

<body style="background: <?php echo $background;?>;">

  <? echo "<h1>Olá " . $_GET["nome"] . "</h1>"; ?>

</body>

</html>

Page 10: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

10

Método POSTMétodo POST

● O método POST é utilizado no parâmetro method da tag form.

● Os dados do formulário são enviados no próprio corpo da mensagem encaminhada ao servidor.– O usuário não verá em sua barra de endereços a

cadeia de variáveis

– Apenas o endereço do programa ativado será mostrado.

http://www.seusite.com.br/recebe_dados.php

Page 11: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

11

Método POSTMétodo POST

● Não há limitação de tamanho dos dados a serem enviados.– Ao contrário do GET, que envia os dados por uma

cadeia de variáveis de tamanho limitado.

– O método é utilizado para formulários que possuem muitas informações a serem enviadas.

● Podem ser enviados – Imagens

– Ou outros arquivos● É preciso utilizar o valor file no parâmetro type da tag input

 <input name="nome_arquivo" type="file" />

Page 12: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

12

Exemplo arquivo.htmlExemplo arquivo.html

<form action="recebe_dados.php" method="post">

  Nome: <input type="text" name="nome" />

  Idade: <input type="text" name="idade" />

  <input type="submit" value=”Enviar” name=”enviar”>

  <input type="reset" name="limpar" value="Limpar"/>

</form>

Page 13: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

13

Variável $_POSTVariável $_POST

● A variável $_POST é usada para recolher os dados– Enviadas pelo método POST da tag form

<html>

<body>

Olá <?php echo $_POST["nome"]; ?><br>

você tem<?php echo $_POST["idade"]; ?> anos.

</body>

</html> Saída

Olá Aluno.

Você tem 19 anos.

Page 14: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

14

ExemploExemplo<p>Escolha um curso</p>

<form name="informacoes" method="POST" action="curso.php">

<select name="curso">

<option value="ADS" selected>Tecnologia em Análise e

Desenvolvimento de Sistemas</option>

<option value="Automação">Tecnologia em Automação

Industrial</option>

<option value="Matemática">Licenciatura em Matemática</option>

<option value="TMSI">Técnico de Manutenção e Suporte em

Informática</option>

<option value="TAI">Técnico em Automação Industrial</option>

</select> </p>

<input name="enviar" type="submit" value="Enviar">

</form>

</p>

Page 15: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

15

curso.phpcurso.php<html>

<body>

<h3>Resultado</h3>

<?php

echo "<p>Curso selecionado: " . $_POST['curso'] . "</p>\n";

?>

</body>

</html>

Page 16: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

16

Variável $HTTP_POST_VARS [deprecated]

Variável $HTTP_POST_VARS [deprecated]

● A variável $HTTP_POST_VARS é usada para recolher os dados– Enviadas pelo método POST da tag form

● Disponível se a diretiva register_globals = on.– Desde o PHP 4.2.0 o valor default de

register_globals é off

echo $HTTP_POST_VARS['nome'];

echo $HTTP_POST_VARS['idade'];

echo $nome;echo $idade;

Page 17: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

17

Variável $_REQUESTVariável $_REQUEST

● A variável predefinida $_REQUEST contém as variáveis – $_GET

– $_POST

– $_COOKIE

● A variável pode ser usada para recolher os dados enviados pelos métodos– GET e POST

Page 18: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

18

Variável $_REQUESTVariável $_REQUEST

<html>

<body>

Olá <?php echo $_REQUEST["nome"]; ?><br>

você tem<?php echo $_REQUEST["idade"]; ?> anos.

</body>

</html>

Saída

Olá Aluno.

Você tem 19 anos.

Page 19: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

19

ExemploExemplo<?php

if(isset($_REQUEST['enviar'])){

echo "</p><h2>Dados do formulário</h2> <hr> </p>";

echo "Nome : {$_REQUEST['nome']} </br>";

echo "Comentário : {$_REQUEST['comentario']}</p><hr>";

}else{

echo "<h2>Formulário</h2>

<form name='informacoes' method='POST' action=#>

Informe seu nome: <input name='nome' type='text'><br/><br/>

Escreva um comentário: </p>

<textarea name='comentario' rows='3' cols='25'></textarea> <br/><br/>

<input name='enviar' type='submit' value='Enviar'>

</form>";

}

?>

Page 20: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

20

ExemploExemplo

Page 21: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

21

Adicionando valores nos formulários

Adicionando valores nos formulários

<?php

if(isset($_POST['enviar'])){

echo "Dados enviado: </p> <pre>";

print_r($_POST); echo "</pre>";

} ?>

<h2>Login</h2>

<form name="LoginForm" method="POST" action="#">

Login : <input name="login" type="text" value="<?php echo $_POST['login']; ?>"><br/><br/>

Senha : <input name="senha" type="password" value="<?php echo $_POST['senha']; ?>"><br/><br/>

<input type="submit" name="enviar" value="Enviar">

<input type="reset" name="limpar" value="Limpar" />

</form>

Page 22: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

22

Adicionando valores nos formulários

Adicionando valores nos formulários

Page 23: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

23

Variáveis de formulários mais complexos

Variáveis de formulários mais complexos

<html><form action="dados.php" method="post"> Nome: <input type="text" name="Dados[nome]" /><br /> Idade: <input type="text" name="Dados[idade]" /><br /> Curso: <br /> <select multiple name="Curso[]"> <option value="ADS"> Tecnologia em Análise e Desenvolvimento de Sistemas</option> <option value="TAI">

Tecnologia em Automação Industrial</option> <option value="LM">

Licenciatura em Matemática</option> </select><br /> <input type="submit" value="Enviar dados!" /></form></html>

Page 24: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

24

dados.phpdados.php<html>

<?php echo '<pre>'; echo htmlspecialchars(print_r($_POST, true)); echo '</pre>';

echo "<br> Nome : ". $_POST["Dados"]["nome"]; echo "<br> Idade : ". $_POST["Dados"]["idade"]; echo "<br> Curso : ". $_POST["Curso"][0];?></html>

Saída

Array(

[Dados] => Array (

[nome] => Aluno

[idade] => 19 )

[Curso] => Array (

[0] => ADS ))

Nome : Aluno

Idade : 19

Curso : ADS

Page 25: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

25

ExemploExemplo<?php

if (isset($_POST['enviar'])){

echo "Você gosta das linguagens:<br />";

foreach($_POST['linguagens'] AS $languagem) echo "$languagem<br />";

}

?>

<form action="linguagens.php" method="post">

Quais liguangens você conhece? </p>

<input type="checkbox" name="linguagens[]" value="php" />PHP<br />

<input type="checkbox" name="linguagens[]" value="C" />C<br />

<input type="checkbox" name="linguagens[]" value="Java" />Java<br />

<input type="checkbox" name="linguagens[]" value="Python" />Python </p>

<input type="submit" name="enviar" value="Enviar" />

</form>

Page 26: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

26

variáveis Adicionais (submit image)

variáveis Adicionais (submit image)

● Utilizando imagens ao invés do botão de submit

● Ao clicar em algum lugar da imagem, – Será enviado duas variáveis contendo as

coordenadas do clique do usuário na imagem● sub_x e sub_y.

<input type="image" src="image.gif" name="sub" />

Page 27: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

27

Função mail( )Função mail( )

● A função mail envia um e-mail

– Na mensagem a ser enviada, cada linha deve ser separada por (\n). E cada linha não deve ser maior que 70 caracteres.

– A função TRUE se o e-mail foi aceito com sucesso para entrega, e FALSE caso contrário

bool mail ( string $to , string $subject , string $message [, string $additional_headers [,

string $additional_parameters ]] )

Page 28: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

28

ExemploExemplo<form name='envia_email'   action ='email.php' method='POST'>

Nome: <input type='text' name='nome'><br>  Assunto: <input type='text' name='assunto'><br>

E­mail: <input type='text' name='email'><br>

  Messagem:<br/><textarea name="mensagem"     cols="65" rows="4"></textarea> </p> 

  <input type="submit" value="Enviar"      name=”enviar” />  <input type="reset" name="limpar"      value="Limpar" /></form>

Page 29: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

29

Exemplo (envia_email.php)Exemplo (envia_email.php)<?php  $nome     = $_POST['nome'];  $email    = $_POST['email'];  $mensagem = $_POST['mensagem'];

  $msg  = "Nome: ".$nome."<BR>\n";  $msg .= "Email: ".$email."<BR>\n";  $msg .= "Mensagem: ".$mensagem."<BR>\n";

  if(mail("[email protected]",     $_POST['assunto'],$msg)){      echo("E­mail enviado com sucesso!!!");  } else {      echo("Erro durante o envio do e­mail");  }?>

Page 30: PHP Tratando Formulários - dca.fee.unicamp.brglaucya/ifsp/LPI/PHP - Tratamento de Formulários.pdf · 4 Método Get Método padrão para o envio de dados – O método utilizado

30

Enviando e-mail pelo gmailEnviando e-mail pelo gmail<?php require_once('Mail.php'); // Incluindo a classe $to = $_POST['email']; $from = "[email protected]"; $subject = $_POST['assunto']; $body = $_POST['mensagem']; //corpo da msg

$host = "ssl://smtp.gmail.com"; // Servidor do Gmail.

$username = "[email protected]"; $password = "senha_do_google_apps"; $headers = array ('From' => $from,'To' => $to, 'Subject' => $subject);

$smtp = Mail::factory('smtp', array ('host' => $host, 'port' => 465, 'auth' => true, 'debug' => false, 'username' => $username, 'password' => $password) );

$mail = $smtp->send($to, $headers, $body); // Efetuando o envio ?>