jun
05
2009
0

Minicurso 6ª Parte: funções para tratamento de arrays em PHP

Olá Pessoal,

Conforme prometido vamos ver como funcionam as funções fornecidas pelo PHP para tratamento de arrays.

array_push()

Essa função adiciona um valor como última posição do array. Admite dois parâmetros: o array ao qual adicionaremos um valor, e o valor a ser adicionado ao fim do array. Sua sintaxe é a seguinte: array_push(array, valor). Veja um exemplo da função em funcionamento:

1
2
3
4
5
6
7
8
<?php
//Declaro um array
$nomes = array("Diego", "Marcelo", "Maria", "João", "Mário", "José", "Juliana", "Fernanda");
//Adiciono um elemento ao fim do array
array_push($nomes, "Marcela");
//Imprimo o array
print_r($nomes);
?>

array_pop()

A função array_pop() retira um valor do fim de um array. Admite como parâmetro o nome do array a ser retirado um elemento. Sua sintaxe é: array_pop(array). Veja um exemplo de array_pop() em funcionamento:

1
2
3
4
5
6
7
8
<?php
//Declaro um array
$nomes = array("Diego", "Marcelo", "Maria", "João", "Mário", "José", "Juliana", "Fernanda");
//Retiro um elemento ao fim do array
array_pop($nomes);
//Imprimo o array
print_r($nomes);
?>

array_shift()

Essa função retira um elemento do início de um array. Admite como parâmetro o nome do array do qual retiraremos o primeiro elemento. Sua sintaxe é a seguinte: array_shift(array). Veja um exemplo da função em funcionamento:

1
2
3
4
5
6
7
8
<?php
//Declaro um array
$nomes = array("Diego", "Marcelo", "Maria", "João", "Mário", "José", "Juliana", "Fernanda");
//Retiro um elemento do começo desse array
array_shift($nomes);
//Imprimo o array
print_r($nomes);
?>

array_unshift()

Essa função insere um elemento do início de um array. Admite como parâmetros: o nome do array e o valor a ser inserido. Sua sintaxe é a seguinte: array_shift(array, valor). Veja um exemplo da função em funcionamento:

1
2
3
4
5
6
7
8
<?php
//Declaro um array
$nomes = array("Diego", "Marcelo", "Maria", "João", "Mário", "José", "Juliana", "Fernanda");
//Adiciono um elemento no começo desse array
array_unshift($nomes, "Marcela");
//Imprimo o array
print_r($nomes);
?>

array_pad()

Essa função faz com que um array seja preenchido com um determinado valor, em um dado número de posições. Admite como parâmetros: o nome do array, a quantidade posições e o valor que usaremos para preenchimento. Sua sintaxe é a seguinte: array_pad(array, quantidade_posições, valor). Veja um exemplo da função em funcionamento:

1
2
3
4
5
6
7
8
<?php
//Declaro um array
$nomes = array("Diego", "Marcelo", "Maria", "João", "Mário", "José", "Juliana", "Fernanda");
//Preencho esse array com um certo valor, um dado número de vezes
array_pad($nomes, 10, "Sem Nome");
//Imprimo o array
print_r($nomes);
?>

array_reverse()

Essa função retorna um array com seus elementos na ordem inversa. Admite dois parâmetros: o nome do array, e um valor lógico indicando se os elementos continuarão associados aos seus índices. Sua sintaxe é a seguinte: array_reverse(array, valor_lógico). Veja um exemplo da função em funcionamento:

1
2
3
4
5
6
7
8
<?php
//Declaro um array
$nomes = array("Diego", "Marcelo", "Maria", "João", "Mário", "José", "Juliana", "Fernanda");
//Inverto a posição dos elementos desse array
array_reverse($nomes, true);
//Imprimo o array
print_r($nomes);
?>

array_merge()

Essa função gera um array a partir da mesclagem dos valores de outros dois arrays, de forma que um seja adicionado ao final do outro, gerando esse novo array. Se houverem índices com o mesmo nome em ambos os arrays, o conteúdo do segundo irá se sobrepor ao primeiro. Admite como parâmetros: os dois arrays que serão mesclados. Sua sintaxe é a seguinte: array_merge(array1, array2). Veja um exemplo da função em funcionamento:

1
2
3
4
5
6
7
8
9
<?php
//Declaro os arrays
$nomes = array("Diego", "Marcelo", "Maria", "João", "Mário", "José", "Juliana", "Fernanda");
$nomes2 = array("Henrique", "Fernando");
//Gero um terceiro array com a mesclagem de outros dois
array_merge($nomes, $nomes2);
//Imprimo o array
print_r($nomes);
?>

array_keys()

Essa função retorna os índices de um array. Admite como parâmetros: o nome do array, e um dado que fará a função retornar apenas os índices cujo valor corresponda ao parâmetro. Sua sintaxe é a seguinte: array_keys(array, valor_para_busca). Veja um exemplo da função em funcionamento:

1
2
3
4
5
6
7
8
<?php
//Declaro um array
$nomes = array("Diego", "Marcelo", "Maria", "João", "Mário", "José", "Juliana", "Fernanda");
//Gero um segundo array somente com os índices do primeiro array
$chaves = array_keys($nomes);
//Imprimo o array
print_r($chaves);
?>

array_values()

Essa função retorna os valores de um array em um outro array. Admite como parâmetro o nome do array. Sua sintaxe é a seguinte: array_values(array). Veja um exemplo da função em funcionamento:

1
2
3
4
5
6
7
8
<?php
//Declaro um array
$nomes = array("Diego", "Marcelo", "Maria", "João", "Mário", "José", "Juliana", "Fernanda");
//Gero um segundo array somente com os valores do primeiro array
$values = array_values($nomes);
//Imprimo o array
print_r($values);
?>

strong>count()

Essa função retorna o tamanho de um array, ou seja a quantidade de posições que ele possui. Admite como parâmetro o nome do array. Sua sintaxe é a seguinte: count(array). Veja um exemplo da função em funcionamento:

1
2
3
4
5
6
<?php
//Declaro um array
$nomes = array("Diego", "Marcelo", "Maria", "João", "Mário", "José", "Juliana", "Fernanda");
//Conto o número de posições desse array
echo count($nomes);
?>

array_in()

Essa função busca por um dado valor dentro do array. Admite como parâmetros: conteúdo a ser buscado, nome do array. Sua sintaxe é a seguinte: array_in(valor_busca, array). Ela retorna um valor lógico TRUE em caso de sucesso, e FALSE em caso de erro. Veja um exemplo da função em funcionamento:

1
2
3
4
5
6
7
8
9
10
11
<?php
//Declaro um array
$nomes = array("Diego", "Marcelo", "Maria", "João", "Mário", "José", "Juliana", "Fernanda");
//Verifico se existe um dado valor dentro do array
if (array_in("Diego", $nomes)) {
echo "Encontramos o nome";
}
else {
echo "Não encontramos o nome";
}
?>

array_slice()

Essa função retorna um array com uma porção dos valores extraídos de um array maior, em suma ela extrai um pedaço de um array gerando um array menor. Admite como parâmetros: o nome do array, a posição inicial da porção a ser extraída, e o tamanho (quantidade de posições) da porção a ser extraída. Sua sintaxe é a seguinte: array_slice(array, posição_inicial, tamanho). Veja um exemplo da função em funcionamento:

1
2
3
4
5
6
7
8
<?php
//Declaro um array
$nomes = array("Diego", "Marcelo", "Maria", "João", "Mário", "José", "Juliana", "Fernanda");
//Gero um segundo array a partir de uma porção do primeiro
$porcao = array_slice($nomes, 3, 4);
//Imprimo o array
print_r($porcao);
?>

sort()

Essa função ordena os valores de um array, sem manter a associação de índices. Admite como parâmetro o nome do array. Sua sintaxe é a seguinte: sort(array). Veja um exemplo da função em funcionamento:

1
2
3
4
5
6
7
8
<?php
//Declaro um array
$nomes = array("Diego", "Marcelo", "Maria", "João", "Mário", "José", "Juliana", "Fernanda");
//Ordeno o array por seus valores
sort($nomes);
//Imprimo o array
print_r($nomes);
?>

rsort()

Essa função ordena de forma reversa os valores de um array, sem manter a associação de índices. Admite como parâmetro o nome do array. Sua sintaxe é a seguinte: rsort(array). Veja um exemplo da função em funcionamento:

1
2
3
4
5
6
7
8
<?php
//Declaro um array
$nomes = array("Diego", "Marcelo", "Maria", "João", "Mário", "José", "Juliana", "Fernanda");
//Ordeno em ordem reversa o array por seus valores
rsort($nomes);
//Imprimo o array
print_r($nomes);
?>

asort() e arsort()

Essas funções ordenam um array por seus valores (seja na ordem reversa ou não), porém mantém a associação de índices. Admite como parâmetro o nome do array. Sua sintaxe é a seguinte: asort(array) / arsort(array). Veja um exemplo da função em funcionamento:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
//Declaro um array
$nomes = array("Diego", "Marcelo", "Maria", "João", "Mário", "José", "Juliana", "Fernanda");
//Ordeno o array por seus valores
asort($nomes);
//Imprimo o array
print_r($nomes);
//Ordeno de forma reversa
arsort($nomes);
//Imprimo
print_r($nomes);
?>

explode()

Essa função gera um array a partir de uma string, usando um caracter como separador dos elementos. Admite como parâmetros: o caracter separador, a string. Sua sintaxe é a seguinte: explode(caracter_separador, string). Veja um exemplo da função em funcionamento:

1
2
3
4
5
6
<?php
//Gero um array a partir dessa string
$data = explode("/", "09/08/1986");
//Imprimo o array
print_r($data);
?>

implode()

Essa função gera uma string a partir de um array, usando um caracter como separador dos elementos. Admite como parâmetros: o caracter separador, a string. Sua sintaxe é a seguinte: implode(caracter_separador, string). Veja um exemplo da função em funcionamento:

1
2
3
4
5
6
7
8
<?php
//Declaro um array
$data = array("09", "08", "1986");
//Gero uma string a partir desse array
$date = implode("/", $data);
//Imprimo o array
print_r($date);
?>

Bem, agora acabamos os tópicos sobre arrays em PHP. O próximo tema de nosso minicurso é gerenciamento de datas, é um assunto bem legal e útil para todos nós. Então, até lá!

Abraços,
Diego.

jun
01
2009
0

Minicurso 6ª Parte: percorrendo arrays e matrizes com loops em PHP

Olá Pessoal,

Hoje iremos aprender a percorrer arrays e matrizes usando loops, dessa forma podemos acessar automaticamente todas as posições de um array ou matriz. Bem, vejamos o array abaixo:

1
2
3
4
5
6
7
8
9
10
<?php
//Declaramos o array
$nomes = array("Diego", "Marcelo", "Maria", "João", "Mário", "José", "Juliana", "Fernanda");
//Utilizamos o loop while para percorrer o array
$i = 0;
while ($nomes) {
echo $nomes[$i]."<br />";
$i++;
}
?>

Com certeza essa não é a forma mais indicada para percorrer um array. Porém, iremos utilizar o loop WHILE para percorrer arrays com informações obtidas em uma consulta ao banco de dados. Ao menos vocês viram o loop em funcionamento, e não estranharão quando o usarmos no futuro. Podemos também utilizar o loop FOR para alcançar dados de um array:

1
2
3
4
5
6
7
8
9
10
<?php
//Declaramos o array
$nomes = array("Diego", "Marcelo", "Maria", "João", "Mário", "José", "Juliana", "Fernanda");
//Utilizo a função count() para contar o número de posições que esse array possui
$limite = count($nomes);
//Utilizamos o loop for para percorrer o array
for ($i = 0; $i < $limite; $i++) {
echo $nomes[$i]."<br />";
}
?>

Bem, o uso do loop FOR também não é muito convencional. Na grande maioria dos casos, utilizamos um loop especialmente projetado para percorrer arrays: o FOREACH. O FOREACH é uma estrutura de repetição específica para arrays. Sua sintaxe é uma versão simplificada do FOR. Na prática, ele desmembra um array em seus itens, tratando cada índice e valor de forma isolada, por meio da cláusula AS. O FOREACH possui duas formas de aplicação, uma simplificada e outra mais completa. Apresentaremos ambas, porém a versão completa é mais usual. Veja o FOREACH na prática:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$nomes = array("Diego", "Marcelo", "Maria", "João", "Mário", "José", "Juliana", "Fernanda");
 
//Exemplo 1: Versão compacta - Não trabalha com a chave do elemento
foreach ($nomes as $valor) {
echo "$valor - ";
}
 
//Exemplo 2: Versão completa - Trabalha com a chave e valor do elemento
foreach ($nomes as $chave => $valor) {
echo "$chave => $valor;<br />";
}
?>

Reparem que “$chave” corresponde ao índice do elemento, e valor é o conteúdo desse elemento. Com essa estrutura podemos fazer inúmeras coisas interessantes no PHP. O FOREACH é um loop para percorrer ESPECIFICAMENTE arrays e objetos (a partir da versão 5 do PHP), ou seja se você tentar usá-lo em qualquer outra situação, o PHP retornará uma mensagem de erro. Em resumo: você pode usar outros loops para percorrer arrays, mas não pode usar o FOREACH para percorrer nada além de arrays e objetos.

Já vimos como percorrer arrays simples ou unidimensionais. Mas se precisarmos percorrer matrizes ou arrays multidimensionais? Simples: utilizando loops de vários níveis! Veja o exemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$alunos = array(0 => array("nome" => "Diego",
     "idade" => 23,
      "escolaridade" => "Superior Completo"),
      1 => array("nome" => "João",
     "idade" => 30,
     "escolaridade" => "Ensino Médio Completo")
      );
foreach ($alunos as $key => $val) {
echo "Aluno $key<br />";
foreach ($val as $indice => $dado) {
echo "$indice => $dado<br />";
}
}
?>

Por hoje é só pessoal! :-P

Os próximos dois posts falarão sobre as funções para tratamento de arrays! Não percam e até lá!

Abraços,
Diego.

mai
25
2009
0

Minicurso 6ª Parte: declarando arrays e matrizes em PHP

Olá Pessoal,

Vamos entrar num assunto novo e muito importante: arrays em PHP. Com eles podemos armazenar inúmeros dados de diferentes tipos, o que aumenta bastante a nossa produtividade. O PHP fornece uma série de funções para gerenciamento de arrays, e é importante conhecer bem o funcionamento dessa estrutura.

Declarando arrays

Em PHP temos duas formas de declarar arrays:

Usando a função array():

1
2
3
4
5
6
<?php
//Declarando um array sem manusear os índices
$nomes = array("Diego", "Marcelo", "Mauro", "João", "José");
//Declarando um array manuseando os índices
$nomes = array(0 => "Diego", 1 => "Marcelo", 2 => "Mauro", 3 => "João", 4 => "José");
?>

Adicionando valor diretamente:

1
2
3
4
5
6
7
<?php
$nomes[] = "Diego";
$nomes[] = "Marcelo";
$nomes[] = "Mauro";
$nomes[] = "João";
$nomes[] = "José";
?>

Para imprimir os valores de um array, basta referenciar o índice respectivo dentro dos colchetes:

1
2
3
4
5
6
7
<?php
echo $nomes[0];
echo $nomes[1];
echo $nomes[2];
echo $nomes[3];
echo $nomes[4];
?>

Lembrando que em PHP os índices de arrays podem ser inteiros (positivos) ou strings, e os valores podem ser de qualquer tipo, inclusive um outro array.

Arrays multidimensionais ou matrizes

Um array pode ter qualquer tipo de dados em seus valores, inclusive um outro array. Arrays que contém, em suas posições, outros arrays são chamados de arrays muldimensionais ou matrizes. Veja o exemplo de um array multidimensional:

1
2
3
4
5
6
7
8
9
10
<?php
$alunos = array(0 => array("nome" => "Diego",
     "idade" => 23,
      "escolaridade" => "Superior Completo"),
      1 => array("nome" => "João",
     "idade" => 30,
     "escolaridade" => "Ensino Médio Completo")
      );
echo $alunos[0]["nome"]; //Irá imprimir o nome Diego - nome do aluno de índice 0
?>

Por hoje é só pessoal. Consolidem o conceito de arrays simples e multidimensional, e amanhã falaremos sobre como percorrer arrays usando loops. Até lá.

Abraços,
Diego.

mai
19
2009
1

Minicurso 5ª Parte: Validação de formulário em PHP (simples) – aplicação das funções para tratamento de string

Olá Pessoal,

Hoje vamos aplicar algumas das funções para tratamento de string em um exercício simples de validação de formulários. Lembrando que o foco aqui é aplicar e compreender as funções listadas anteriormente. Não vamos atentar aos pormenores da validação de formulário (faremos isso posteriormente, quando estudarmos um pouquinho de segurança). O exercício será composto de um código comentado linha à linha, portanto leiam com atenção e aproveitem:

FORM.PHP

1
2
3
4
5
6
7
8
<form action="validaForm.php" method="post">
        <label for="nome">Nome: <input type="text" name="nome" id="nome" /></label>
        <label for="email">E-mail: <input type="text" name="email" id="email" /></label>
        <label for="telefone">Telefone: <input type="text" name="telefone" id="telefone" maxlength="13" /></label>
        <label for="assunto">Assunto: <input type="text" name="assunto" id="assunto" /></label>
        <label for="mensagem">Mensagem: <textarea name="mensagem" id="mensagem"></textarea></label>
        <button type="submit">ENVIAR</button>
</form>

VALIDAFORM.PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
//Trato os campos que o usuário digitou: retiro as tags com stripslashes(), e converto os caracteres especiais para um formato HTML com htmlentities()
$nome = htmlentities(strip_tags($_POST["nome"]), ENT_QUOTES);
$email = htmlentities(strip_tags($_POST["email"]), ENT_QUOTES);
$telefone = htmlentities(strip_tags($_POST["telefone"]), ENT_QUOTES);
$assunto = htmlentities(strip_tags($_POST["assunto"]), ENT_QUOTES);
$mensagem = strip_tags(htmlentities($_POST["mensagem"], ENT_QUOTES), "<a><p><h1><h2><h3><h4><h5><h6>");
 
//Monto a mensagem do email - Os campos a serem preenchidos e enviados pela função mail()
$msg = "<h1>Formulário de Contato</h1><p>O usuário $nome, enviou a seguinte mensagem:</p><p>$mensagem</p>Telefone: $telefone<br />Email: $email";
$headers = "From: 3dm.digital@gmail.com \n";
$headers .= "Cc: utibrasil@ig.com.br \n";
$headers .= "Bcc: luizcf2001@hotmail.com \n";
$headers .= "Reply-To: diego@diegomarques.com \n";
$headers .= "Content-type: text/html; charset=UTF-8";
 
//Edito o email - Verifico se existe o caractere @ no email digitado pelo usuário, com a função strpos(), lembrem-se que ela me retornará a posição de @ dentro da string maior
$posicao = strpos($email, "@");
//Monto uma substring a partir do email digitado pelo usuário com todo o conteúdo após @ (obti a posição de @ na linha acima)
$emailPeq = substr($email, $posicao, strlen($email) - $posicao);
 
//Edito o telefone - Pego o tamanho da string
$foneLen = strlen($telefone);
 
//Vejo se algum campo está
if (($nome == "") || ($email == "") || ($telefone == "") || ($assunto == "") || ($mensagem == "")) {
      header("Location: form.php?msg=vazio");
}
else {
    //Verifico se o usuário inseriu @ no email, e se a substring com o resto do email possui o caracter "."
    if ($posicao == false || strpos($emailPeq, ".") == false) {
           header("Location: form.php?msg=email");
     }
     //Verifico se o usuário digitou 13 caracteres no campo telefone, e se existem os caracteres (, ) e - nas posições correspondentes ao formato (XX)XXXX-XXXX
     else if ($foneLen <> 13 || strpos($telefone, "(") <> 0 || strpos($telefone, ")") <> 3 || strpos($telefone, "-") <> 8) {
        header("Location: form.php?msg=fone");
     }
     else {
         //Envio o email caso os dados estejam todos Ok
         $mail = mail("teste@rj.senac.br", $assunto, $msg, $headers);
          if ($mail == true) {
              echo "Email enviado com sucesso";
          }
          else {
              echo "Email não enviado";
          }
      }
}
?>

E aí? Que tal fazer você também uma pequena validação e melhorar esse código? É um bom desafio.

mai
18
2009
1

Minicurso 5ª Parte: Funções para Tratamento de Strings (Parte 2)

Olá Pessoal,

Vamos continuar com o assunto do post passado: principais funções para tratamento de strings.

Em muitas situações precisamos substituir caracteres ou pedaços de uma string, seja para evitar o uso de palavras proibidas, envio de emails etc. Para esses casos usamos a função str_replace(). Ela admite três parâmetros: texto a ser substituído, texto de substituição e string onde será feita a busca. Veja um exemplo dela abaixo:

STR_REPLACE.PHP

1
2
3
4
5
6
<?php
//Declaro a string maior
 $email = "teste@teste.com.br, teste2@teste.com.br, teste3@teste.com.br";
 //Mando imprimir a string, substituindo o @ por um espaço vazio
 echo str_replace("@", "", $email);
?>

Outra funcionalidade importante é poder buscar uma substring dentro de uma string maior. Por exemplo: preciso descobrir quais usuários possuem o sobrenome Silva; para isso basta buscar dentro da string nome a substring “Silva”. A função strpos() faz o trabalho sujo pra gente (rs). Essa função admite dois parâmetros: a string maior, e a substring a ser buscada. Veja strpos() em funcionamento:

STRPOS.PHP

1
2
3
4
5
6
<?php
//Declaro a string maior
 $nome = "João Paulo Rodrigues da Silva Mendes";
 //Mando imprimir a string, substituindo o @ por um espaço vazio
 echo strpos($nome, "Silva");
?>

A função strpos() retorna a posição inicial (um valor numérico) da substring dentro da string maior (falamos sobre posição da substring acima, ao estudar a função substr()) caso encontre o valor buscado, em caso de erro, a função retorna FALSE ou um valor correspondente (0 ou “” – string vazia). Uma outra função importantíssima é htmlentities(), ela converte todos os caracteres especiais para o padrão HTML (ex: ã seria convertido para ã). Ela admite três parâmetros: a própria string, uma constante para codificação de aspas (ENT_COMPAT – converte apenas as aspas duplas; ENT_QUOTES – converte ambas as aspas; ENT_NOQUOTES – não converterá nenhum dos tipos de aspas), e o charset (o padrão é ISO-8859-1, mas você pode converter conforme o padrão de codificação da sua página). Veja função htmlentities() em funcionamento:

HTMLENTITIES.PHP

1
2
3
4
<?php
$texto = "<a href='#'>Essa declaração será bombástica para o seu avô.</a>";
echo htmlentities($texto, ENT_QUOTES, "UTF-8");
?>

A função html_entity_decode() faz o trabalho inverso de htmlentities, ou seja, ela converte caracteres especiais no formato HTML para o formato de string. Os parâmetros admitidos por essa função são os mesmos de htmlentities(). Veja a função html_entity_decode() em ação:

HTML_ENTITY_DECODE.PHP

1
2
3
4
<?php
$texto = "&lt;a href=&#039;#&#039;&gt;Essa declara&ccedil;&atilde;o ser&aacute; bomb&aacute;stica para o seu av&ocirc;.&lt;/a&gt;";
echo html_entity_decode($texto, ENT_QUOTES, "UTF-8");
?>

Existem situações onde precisamos escapar caracteres como \, ‘ ou “. A função addslashes() coloca uma barra (\) antes desses caracteres, fazendo com que os caracteres citados anteriormente sejam interpretados como parte do texto. Por muito tempo usaram addslashes() como forma de validar dados antes de inserí-los no banco. Esse uso para função é ultrapassado, sendo aconselhável usar a função mysql_real_escape_string(). Veja addslashes() em funcionamento:

ADDSLASHES.PHP

1
2
3
4
<?php
$texto = "Baba O'Riley do The Who é uma das melhores músicas para se viajar, tão boa quanto 'Back in Black' do AC\DC";
echo addslashes($texto);
?>

A função stripslashes() desfaz o trabalho de addslashes(), ou seja, retira as barras (\) de escape dentro de uma string. Veja a função em ação:

STRIPSLASHES.PHP

1
2
3
4
<?php
$texto = "Baba O\'Riley do The Who é uma das melhores músicas para se viajar, tão boa quanto \'Back in Black\' do AC\\DC";
        echo stripslashes($texto);
?>

Uma outra função muito útil para o nosso trabalho é a strip_tags(). Ela retira todos os caracteres HTML e PHP de uma string. Digamos que o usuário tenha inserido código dentro de um campo de formulário, essa função retiraria todo o HTML e PHP, deixando apenas as tags que você permitir. Legal, né? Ela admite dois parâmetros: a string tratada, e os parâmetros a serem permitidos. Veja strip_tags() em ação:

STRIP_TAGS.PHP

1
2
3
4
5
6
7
8
<?php
$texto = "<div style='background-color:red; color:white;'><a href='#'>Link</a></div>";
//Retiro todas as tags da string $texto
echo strip_tags($texto);
echo "<br/>";
//Retiro todas as tags da string $texto, permitindo apenas a tag <a>
echo strip_tags($texto, "<a>");
 ?>

Bem, essas são as principais funções para tratamento de strings. No próximo tutorial usaremos essas funções para realizar uma validação de formulário simples. Até lá!

mai
15
2009
2

Minicurso 5ª Parte: Funções para Tratamento de Strings

Olá Pessoal,

Estou meio sumido, eu sei… A vida tá uma correria só, e foi extremamente complicado atualizar o blog e manter minhas newsletters. Mas vamos retomar nosso curso online de PHP (e vamos até o fim, que eu já comecei a escrever os minicursos de WebStandards e SQL). A partir de agora eu vou dar um foco maior para o blog e buscar aproveitá-lo melhor, afinal, mesmo sem postar há um mês, o número de visitas aumentou consideravelmente (visitantes únicos), tenho recebido comentários e emails pedindo para voltar a ativa. Então, vamos que vamos!!!! :D

O assunto de hoje é tratamento de strings. O PHP possui uma série de funções para trabalhar com texto, e não pretendo esgotar o tema. Iremos abordar as principais funções que a linguagem nos fornece, e você pode consultar a documentação oficial do PHP sempre que precisar.

O PHP é uma linguagem case sensitive, ou seja, faz distinção entre letras maiúsculas e minúsculas. O que pode ser um problema quando precisamos comparar duas strings. Por exemplo, em um formulário de login é necessário comparar o usuário e senhas digitados com os valores correspondentes armazenados em um banco de dados. Digamos agora que o usuário tenha ativado o CAPS LOCK, em PHP o valor “TESTE123″ é diferente de “teste123″, por mais que a sintaxe seja a mesma. Ou seja, teremos um erro no login. Para evitar isso, temos duas funções que colocam uma string inteira para caixa baixa ou caixa alta: strtolower() e strtoupper(). Iremos utilizar o exercício de login e senha feito anteriormente:

LOGIN.PHP

1
2
3
4
5
<form action="validaLogin.php" method="post" id="form" name="form">
<label for="login">Login: <input type="text" name="login" id="login" /></label>
<label for="senha">Senha: <input type="password" name="senha" id="senha" /></label>
<button type="submit">LOGIN</button>
</form>

VALIDALOGIN.PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$login = array("user01", "user02", "user03", "user04", "user05");
$senha = array("senha01", "senha02", "senha03", "senha04", "senha05");
//Calculo o tamanho do array $login
$tamArray = count($login);
//Crio uma variável auxiliar
$msg = FALSE;
//Uso um loop para percorrer o array - escolherei o FOR, mas você pode usar qualquer outro
for ($i = 0; $i < $tamArray; $i++) {
if ($_POST["login"] == $login[$i] && $_POST["senha"] == $senha[$i]) {
$msg = TRUE;
break;
}
}
//Verifico se a variável auxiliar $msg saiu do loop com o valor TRUE (indicando login efetuado com sucesso)
if ($msg) {
echo "ok";
}
else {
echo "erro";
}
?>

Pelo código acima se eu digitar USER01, ainda que a senha esteja correta, será retornada uma mensagem de erro. Isso não é bom, afinal não importa se o usuário digita em caixa alta ou baixa, o importante é o valor digitado conferir com o armazenado no banco – array no nosso caso (principalmente para buscas). Para isso usamos as funções strtolower() ou strtoupper(), afinal elas convertem todos os caracteres de uma string para caixa baixa e caixa alta, respectivamente. Veja como ficaria o código:

VALIDALOGIN.PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$login = array("user01", "user02", "user03", "user04", "user05");
$senha = array("senha01", "senha02", "senha03", "senha04", "senha05");
//Calculo o tamanho do array $login
$tamArray = count($login);
//Crio uma variável auxiliar
$msg = FALSE;
//Uso um loop para percorrer o array - escolherei o FOR, mas você pode usar qualquer outro
for ($i = 0; $i < $tamArray; $i++) {
//Converto ambas as strings para caixa baixa 
if (strtolower($_POST["login"]) == strtolower($login[$i]) && strtolower($_POST["senha"]) == strtolower($senha[$i])) {
$msg = TRUE;
break;
}
}
//Verifico se a variável auxiliar $msg saiu do loop com o valor TRUE (indicando login efetuado com sucesso)
if ($msg) {
echo "ok";
}
else {
echo "erro";
}
?>

Em muitas ocasiões necessitamos de apenas um pedaço da string, sendo necessário retirar essa parte do texto completo. Para isso usamos a função substr() que admite os seguintes parâmetros: string a ser trabalhada, posição inicial da substring dentro da string maior, tamanho da substring. Agora vocês devem se perguntar: que raios é posição inicial da substring? Explicando: uma string é também conhecida como cadeia de caracteres, ou seja, dentro de um texto cada caractere corresponde a uma posição. Sim, como vocês devem estar visualizando, um texto acaba sendo entendido como um array de caracteres. Veja o exemplo a seguir: imaginem a string “Paulo Silva”. Dizemos que 0 (zero) é a posição inicial da string, correspondente a letra P; na posição 2 temos a letra u; na posição 4 temos a letra o. Uma substring que se inicie na posição 0 e tenha um comprimento de 5 caracteres irá retornar o nome Paulo. Ficou mais claro agora, né? Legal! Outra coisa importante: dentro de uma string, o espaço vazio é contado como um caracter válido, ou seja ocupa uma posição. Ao trabalhar com substrings devemos levar em consideração os espaços vazios, evitando erros desnecessários. Vejamos a função substr() em ação:

SUBSTR.PHP

1
2
3
4
5
6
7
8
<?php
//Declaro a string maior
$string = "João Paulo Rodrigues da Silva Mendes";
//Mando imprimir uma substring de 4 caracteres, iniciando a partir da posição 0
echo substr($string, 0, 4);
//Mando imprimir uma substring de 5 caracteres, iniciando a partir da posição 5
 echo substr($string, 5, 5);
?>

Para praticar, tentem imprimir todas partes do nome acima isoladamente, usando a função substring (será necessário extrair cinco substrings). Uma outra função útil para tratar strings, é a strlen() que retorna o tamanho de uma string. Por tamanho de uma string, nos referimos a quantidade de caracteres que ela possui. Se vamos tratar strings cujo tamanho nos é desconhecido, essa função é fundamental para evitarmos erros em nosso programa. Veja o código abaixo:

STRLEN.PHP

1
2
3
4
5
6
<?php
//Declaro a string maior
 $string = "João Paulo Rodrigues da Silva Mendes";
 //Mando imprimir o tamanho da string
echo strlen($string);
?>
abr
13
2009
2

Minicurso PHP: 4ª Parte – Formulários Web: Enviando email com PHP

Olá Pessoal,

Aproveitaram bem o feriadão? Espero que sim. Vamos retomar a vida normal!!! :-D

Conforme prometido, vamos ver como disparar emails a partir do PHP. Na verdade é bem simples, basta usar a função mail. Uma vez instalado e configurado um serviço de SMTP (seu servidor de hospedagem, provavelmente, já tem isso pronto para você), basta usar a função, passar alguns parâmetros e pronto! Temos um email enviado. A função mail funciona da seguinte forma: mail(destinatário, mensagem, cabeçalhos), onde cabeçalhos são informações como remetente, cópia, cópia oculta e formato do email (texto normal ou html). Veja a função mail em funcionamento.

CONTATO.PHP

1
2
3
4
5
6
7
8
<form action="valida.php" method="post" id="form" name="form">
<label for="nome">Nome: <input type="text" name="nome" id="nome" /></label>
<label for="email">Email: <input type="text" name="email" id="email" /></label>
<label for="telefone">Telefone: <input type="text" name="telefone" id="telefone" /></label>
<label for="assunto">Assunto: <input type="text" name="assunto" id="assunto" /></label>
<label for="mensagem">Mensagem: <textarea name="mensagem" id="mensagem"></textarea></label>
<button type="submit">ENVIAR</button>
</form>

VALIDA.PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
//Vamos receber os dados do formulário, armazená-los em variáveis e imprimí-los na tela
$nome = $_POST["nome"];
$email = $_POST["email"];
$telefone = $_POST["telefone"];
$assunto = $_POST["assunto"];
$mensagem = $_POST["mensagem"];
 
//Declaro os cabeçalhos do email - From indica o remetente da mensagem
$headers = "From: "$email \n";
//Cc: São os emails que receberão uma cópia da mensagem
$headers .= "Cc: teste2@teste.com.br \n";
//Bcc: São os endereços que receberão uma cópia da mensagem
$headers .= "Bcc: teste3@teste.com.br, teste4@teste.com.br \n";
//Content-type define o tipo do documento - text/plain indica texto comum, já text/html indica texto no formato HTML / charset é o padrão de codificação do conteúdo
$headers .= "Content-type: text/html; charset=iso-8859-1";
 
//Uso a função mail
if (mail("teste@teste.com.br", $mensagem, $headers)) {
echo "Ok";
}
else {
echo "Erro";
}
?>

A função mail() retorna um valor lógico TRUE ou FALSE. Bem, isso é o necessário para se enviar emails com PHP… Nada complicado, né? É provável que você não consiga disparar emails a partir do seu servidor local (localhost), devido a falta de um serviço de SMTP instalado. Recomendo testar direto em sua hospedagem, onde tudo já está devidamente configurado. :-)

Até amanhã, quando falaremos sobre funções para tratamento de strings (adentrando no tema validação de dados com PHP).

Forte abraço e até lá.
Diego.

abr
10
2009
3

Minicurso PHP: 4ª Parte – Formulários Web: Passagem de Parâmetros e Método GET

Olá,

Antes de tratarmos do método GET, vamos resolver o exercício passado na primeira parte desse tutorial sobre passagem de parâmetros e formulários PHP. O exercício era: “vamos montar uma página com o formulário de login. Os dados digitados pelo usuário serão comparados com valores armazenados em dois arrays. Caso o login e senha batam com os valores do array, imprima uma mensagem de sucesso, caso contrário, imprimo uma mensagem de erro”. Abaixo segue a resolução:

LOGIN.PHP

1
2
3
4
5
<form action="validaLogin.php" method="post" id="form" name="form">
<label for="login">Login: <input type="text" name="login" id="login" /></label>
<label for="senha">Senha: <input type="password" name="senha" id="senha" /></label>
<button type="submit">LOGIN</button>
</form>

VALIDALOGIN.PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$login = array("user01", "user02", "user03", "user04", "user05");
$senha = array("senha01", "senha02", "senha03", "senha04", "senha05");
//Calculo o tamanho do array $login
$tamArray = count($login);
//Crio uma variável auxiliar
$msg = FALSE;
//Uso um loop para percorrer o array - escolherei o FOR, mas você pode usar qualquer outro
for ($i = 0; $i < $tamArray; $i++) {
if ($_POST["login"] == $login[$i] && $_POST["senha"] == $senha[$i]) {
$msg = TRUE;
break;
}
}
//Verifico se a variável auxiliar $msg saiu do loop com o valor TRUE (indicando login efetuado com sucesso)
if ($msg) {
echo "ok";
}
else {
echo "erro";
}
?>

Bem, vamos ao GET!!!! :-D

MÉTODO GET: FORMULÁRIOS

Vimos que com o método POST os dados de um formulário são enviados ao servidor por uma conexão paralela, de forma oculta. O método GET envia os valores pela URL, de forma aberta, onde todos enxergam os parâmetros passados. Se o formulário acima for enviado pelo método GET, a URL de requisição ao servidor ficará assim: “validaLogin.php?login=user01&senha=senha01″, onde “?” divide o caminho da página dos parâmetros enviados pela requisição; “&” permite o envio de vários parâmetros encadeados, sempre que for necessário enviar um parâmetro novo, precisamos concatená-lo aos demias parâmetros com “&”. Para resgatar parâmetros enviados pelo método GET, usamos o array associativo $_GET, onde os índices equivalem aos atributos NAME dos campos do formulário (assim como o $_POST).

Bem, além da forma de envio de parâmetros, qual a diferença entre POST e GET? O método GET possui limites quanto a capacidade envio de dados (2KB apenas), e não pode ser usado para envio de dados confidenciais, uma vez que todas as informações são passadas abertamente pela URL. Usamos GET para envio de palavras-chave de busca e outros parâmetros curtos que não prejudiquem a segurança do usuário (ou você quer a senha dele passeando por URL’s a fora?). Veja o nosso exemplo anterior reescrito com o método GET:

FORM.PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!-- Nesse formulário irei cadastrar vários campos de diferentes tipos -->
<form action="recebeForm.php" method="get" id="form" name="form">
<label for="nome">Nome: <input type="text" name="nome" id="nome" /></label>
<label for="email">Email: <input type="text" name="email" id="email" /></label>
<label for="telefone">Telefone: <input type="text" name="telefone" id="telefone" /></label>
<label for="assunto">Assunto:
<select name="assunto" id="assunto">
<option value="elogios">Elogios</option>
<option value="sugestoes">Sugestões</option>
<option value="reclamacoes">Reclamações</option>
<option value="outros">Outros</option>
</select>
</label>
<label for="mensagem">Mensagem: <textarea name="assunto" id="assunto"></textarea></label>
<button type="submit">ENVIAR</button>
</form>

RECEBEFORM.PHP

1
2
3
4
5
6
7
8
9
10
11
<?php
//Vamos receber os dados do formulário, armazená-los em variáveis e imprimí-los na tela
$nome = $_GET["nome"];
$email = $_GET["email"];
$telefone = $_GET["telefone"];
//Recebo o valor enviado pelo SELECT assunto. Reparem que o valor resgatado corresponde ao VALUE do option selecionado pelo usuário
$assunto = $_GET["assunto"];
$mensagem = $_GET["mensagem"];
 
echo "Nome: $nome <br /> Email: $email <br /> Telefone: $telefone <br /> Assunto: $assunto <br /> Mensagem: $mensagem";
?>

MÉTODO GET: LINKS

Uma das vantagens do método GET é que com ele não ficamos atrelados a formulários. Uma vez que os parâmetros são passados todos pela URL, é bem fácil enviar parâmetros a partir de links diretamente no atributo HREF da tag <a>. Veja o exemplo abaixo:

MENU.PHP

1
2
3
4
5
6
7
<ul id="menu">
<li><a href="conteudo.php?id=0">Item 1</a></li>
<li><a href="conteudo.php?id=1">Item 2</a></li>
<li><a href="conteudo.php?id=2">Item 3</a></li>
<li><a href="conteudo.php?id=3">Item 4</a></li>
<li><a href="conteudo.php?id=4">Item 5</a></li>
</ul>

CONTEUDO.PHP

1
2
3
4
5
6
7
8
<?php
//Monto um array com todos os conteúdos
$conteudo = array("Conteúdo 0...", "Conteúdo 1...", "Conteúdo 2...", "Conteúdo 3...", "Conteúdo 4...");
//Resgato o ID do conteúdo
$id = $_GET["id;"];
//Imprimo o conteúdo referente ao ID passado pelo usuário
echo $conteudo[$id];
?>

E aí? Gostaram? Esse é o princípio para se trabalhar com consultas a banco de dados (aliás, boa parte desses exercícios que fazemos com arrays são preparatórios para quando trabalharmos com MySQL). Então para encerrar, vou deixar um exercício: tentem construir um sistema de menu e conteúdo parecido com esse último exemplo, usando APENAS UMA PÁGINA. Ou seja, você vai criar uma página chamada “index.php” e apontar todos os links para ela mesma. E o conteúdo da página muda conforme o link de menu que o usuário clique. Para fechar esse quarto ciclo de tutoriais, falaremos sobre como enviar emails a partir do PHP. Até amanhã.

Abraços,
Diego.

abr
09
2009
0

Minicurso PHP: 4ª Parte – Formulários Web: Passagem de Parâmetros e Método POST (ParteII) – Resgatando múltiplos valores de um select e checkboxes

Olá Pessoal,

Para compensar o dia de ontem, o post de hoje será duplo. Assim não temos perdas. Fecharemos a passagem de parâmetros pelo método POST e veremos o método GET. Mãos à obra!

No tutorial passado vimos como passar parâmetros de uma página para outra usando um formulário, pelo método POST. Até agora sabemos que os campos do formulário devem possuir um atributo NAME, e o valor desse atributo será usado pelo array $_POST para resgatar o conteúdo digitado pelo usuário nesse campo. Exemplo:

LOGIN.PHP

1
2
3
4
5
<form action="validaLogin.php" method="post" id="form" name="form">
<label for="login">Login: <input type="text" name="login" id="login" /></label>
<label for="senha">Senha: <input type="password" name="senha" id="senha" /></label>
<button type="submit">LOGIN</button>
</form>

VALIDALOGIN.PHP

1
2
3
4
<?php
//Imprimo os valores digitados pelo usuário nos campos LOGIN e SENHA
echo $_POST["login"]." - ".$_POST["senha"];
?>

Ou seja, cada campo do formulário possui um valor associado a ser resgatado pelo array associativo $_POST. Mas… e se eu precisar resgatar vários valores em um único campo? Como assim? Imaginem a seguinte situação: eu quero me cadastrar para receber newsletters de um site, e tenho uma lista de assuntos para escolher um ou vários. Como vocês fariam para resgatar esses valores? Vamos começar a testar:

NEWS.PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<form action="valida.php" method="post" id="form" name="form">
<label for="assunto">Escolha os assuntos:
<select name="assunto" id="assunto">
<option value="design">WebDesign</option>
<option value="desenvolvimento">Desenvolvimento</option>
<option value="banco">Banco de Dados</option>
<option value="marketing">Marketing Digital</option>
<option value="direito">Direito Digital</option>
<option value="padroes">Padrões Web</option>
<option value="redacao">WebWritting</option>
</select>
</label>
<button type="submit">ENVIAR</button>
</form>

VALIDA.PHP

1
2
3
<?php
echo $_POST["assunto"];
?>

Como vocês podem perceber, só conseguimos selecionar uma opção e resgatar o valor apenas da opção selecionada. Não é o que queremos. A nossa necessidade é selecionar vários itens simultaneamente. Bem, no exemplo acima usamos um SELECT, permitindo a escolha de apenas um assunto. Se adicionarmos o atributo multiple=”multiple” no SELECT, ele nos permitirá selecionar vários itens (basta manter a tecla CTRL pressionada enquanto clica nos itens). Veja como ficaria o código:

NEWS.PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<form action="valida.php" method="post" id="form" name="form">
<label for="assunto">Escolha os assuntos:
<select name="assunto" id="assunto" multiple="multiple">
<option value="design">WebDesign</option>
<option value="desenvolvimento">Desenvolvimento</option>
<option value="banco">Banco de Dados</option>
<option value="marketing">Marketing Digital</option>
<option value="direito">Direito Digital</option>
<option value="padroes">Padrões Web</option>
<option value="redacao">WebWritting</option>
</select>
</label>
<button type="submit">ENVIAR</button>
</form>

VALIDA.PHP

1
2
3
<?php
echo $_POST["assunto"];
?>

Legal! Agora podemos selecionar vários itens e tudo mais!!! Porém… não conseguimos resgatar todos os valores selecionados… Veja que na página “valida.php” imprimimos apenas um assunto… Pois bem, quando trabalhamos com um SELECT MULTIPLE, passamos como parâmetro um array com todas as opções selecionadas e, é preciso informar a página que receberá os dados do FORM que estamos passando um array, ao invés de um valor único. Para fazer isso é bem simples: basta adicionar [] ao fim do NAME do campo. Veja como fica o código:

NEWS.PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<form action="valida.php" method="post" id="form" name="form">
<label for="assunto">Escolha os assuntos:
<!-- Adiciono [] ao fim do NAME do meu select -->
<select name="assunto[]" id="assunto" multiple="multiple">
<option value="design">WebDesign</option>
<option value="desenvolvimento">Desenvolvimento</option>
<option value="banco">Banco de Dados</option>
<option value="marketing">Marketing Digital</option>
<option value="direito">Direito Digital</option>
<option value="padroes">Padrões Web</option>
<option value="redacao">WebWritting</option>
</select>
</label>
<button type="submit">ENVIAR</button>
</form>

VALIDA.PHP

1
2
3
4
5
6
7
8
<?php
//Recebo o array $_POST["assunto"] a o atribuo a uma variável 
$assunto = $_POST["assunto"];
//Por se tratar de um array montarei um loop para percorrê-lo
foreach($assunto as $indice => $valor) {
echo $valor.";<br />";
}
?>

Legal, né? E a lógica é a mesma para qualquer outro tipo de campo de formulário. Por exemplo, ao invés de usar um SELECT MULTIPLE, usaremos vários CHECKBOX para o usuário marcar quais assuntos deseja receber uma newsletter. Veja o código abaixo:

NEWS.PHP

1
2
3
4
5
6
7
8
9
10
11
12
<form action="valida.php" method="post" id="form" name="form">
<label for="assunto">Escolha os assuntos:
<input type="checkbox" name="assunto[]" value="design">WebDesign
<input type="checkbox" name="assunto[]" value="desenvolvimento">Desenvolvimento
<input type="checkbox" name="assunto[]" value="banco">Banco de Dados
<input type="checkbox" name="assunto[]" value="marketing">Marketing Digital
<input type="checkbox" name="assunto[]" value="direito">Direito Digital
<input type="checkbox" name="assunto[]" value="padroes">Padrões Web
<input type="checkbox" name="assunto[]" value="redacao">WebWritting
</label>
<button type="submit">ENVIAR</button>
</form>

VALIDA.PHP

1
2
3
4
5
6
7
8
<?php
//Recebo o array $_POST["assunto"] a o atribuo a uma variável 
$assunto = $_POST["assunto"];
//Por se tratar de um array montarei um loop para percorrê-lo
foreach($assunto as $indice => $valor) {
echo $valor.";<br />";
}
?>

Viram como é fácil? No próximo tutorial – que postaria um pouco mais tarde – entraremos no outro método para passagem de parâmetros via PHP: o método GET. Até daqui a pouco.

Abraços,
Diego.

abr
07
2009
0

Minicurso PHP: 4ª Parte – Formulários Web: Passagem de Parâmetros e Método POST (ParteI)

Olá Pessoal,

Segue o post de hoje, com algum atraso, mas foi por uma boa causa: eu quis incrementar um pouco mais com exemplos e outras explicações.

Finalmente entramos na parte IV do nosso minicurso. Daqui até o fim da semana falaremos sobre passagem de parâmetros entre páginas e formulários em PHP. É um assunto muito importante, e espero que o conteúdo seja assimilado por todos. Bem, até o presente momento a única coisa que fizemos foi utilizar variáveis e arrays declarados em um documento. Com o conhecimento que temos, é impossível passar valores de uma página para outra. O que não faz muito sentido, uma vez que a idéia de hyperlink é interligar vários documentos, construindo o que entendemos por web. O PHP nos permite passar parâmetros de duas formas distintas: usando a URL ou enviando dados em uma conexão paralela. A passagem de parâmetros pela URL é conhecida como método GET. Já a passagem de parâmetros por uma conexão paralela é conhecida como método POST. Em ambos os casos passamos informações de uma página para outra. Com isso seremos capazes de criar mecanismos de busca, login, cadastro de usuários, manipulação de dados no banco, upload de arquivo, envio de emails etc. Acho que com isso deu pra entender o quanto é importante estudar o assunto com atenção. Vamos ver cada um desses métodos com detalhes!

MÉTODO POST: FORMULÁRIOS

Ao criar um formulário web etiquetamos vários elementos de entrada de dados com as tags

. Dentro da tag

usamos alguns atributos importantes para o nosso estudo:

Name: Define o nome do formulário (pode ser usado como referência em funções JavaScript).
Action: Define o caminho do arquivo que receberá os dados do formulários.
Method: Define o método de envio dos dados do formulário. Admite os seguintes valores: POST e GET.
Enctype: Define o formato de como os dados serão enviados ao servidor. É obrigatório quando desejamos enviar arquivos a partir do formulário. Esse atributo só funciona com método POST.

O método POST não possui limite de tamanho para envio de dados. Outra coisa importante, os dados do formulário são enviados ocultos junto com a mensagem a ser enviada para o servidor. É o método mais usado, por questões de segurança e capacidade para envio de dados. Só usamos o método GET para troca de informações pequenas que não geram problemas de segurança. Veja a página abaixo:

FORM.PHP

1
2
3
4
5
<form action="recebeForm.php" method="post" id="form" name="form">
<label for="login">Login: <input type="text" name="login" id="login" /></label>
<label for="senha">Senha: <input type="password" name="senha" id="senha" /></label>
<button type="submit">LOGIN</button>
</form>

Nessa página criamos um formulário simples, com dois campos input e um botão para disparar o envio do formulário. Enviar para onde? Para o caminho declarado no atributo “action” da tag
!!!! E de qual forma? POST ou GET? Será enviado pelo método declarado no atributo “method”. No nosso caso, declaramos o método como POST. Toda vez que clicarmos no botão LOGIN, os dados digitados no campo do formulário serão enviados para a página “recebeForm.php”, usando o método POST. Ok! Enviar dados nós já sabemos mas… E como vamos receber esses dados na página “recebeForm.php”??? De uma forma tão simples quanto a tabuada de cinco. Para resgatar valores com PHP usaremos o array associativo $_POST. Ao enviar um formulário pelo método POST, seus dados são recebidos como um array e atribuídos a variável superglobal $_POST. Sendo $_POST um array, precisaremos de índices para referenciar cada posição. Lembrando que cada posição corresponde a um elemento do formulário. Os índices do array $_POST são os valores do atributo “NAME” de cada campo do formulário. Por exemplo, os dois campos de formulário da página FORM.PHP possuem os seguintes names: login e senha. Assim sendo, resgataremos os valores com $_POST["login"] e $_POST["senha"]. Veja o código abaixo:

RECEBEFORM.PHP

1
2
3
<?php
echo $_POST["login"]." - ".$_POST["senha"];
?>

Viram como é simples? Vamos brincar um pouco mais:

FORM.PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!-- Nesse formulário irei cadastrar vários campos de diferentes tipos -->
<form action="recebeForm.php" method="post" id="form" name="form">
<label for="nome">Nome: <input type="text" name="nome" id="nome" /></label>
<label for="email">Email: <input type="text" name="email" id="email" /></label>
<label for="telefone">Telefone: <input type="text" name="telefone" id="telefone" /></label>
<label for="assunto">Assunto:
<select name="assunto" id="assunto">
<option value="elogios">Elogios</option>
<option value="sugestoes">Sugestões</option>
<option value="reclamacoes">Reclamações</option>
<option value="outros">Outros</option>
</select>
</label>
<label for="mensagem">Mensagem: <textarea name="assunto" id="assunto"></textarea></label>
<button type="submit">ENVIAR</button>
</form>

RECEBEFORM.PHP

1
2
3
4
5
6
7
8
9
10
11
<?php
//Vamos receber os dados do formulário, armazená-los em variáveis e imprimí-los na tela
$nome = $_POST["nome"];
$email = $_POST["email"];
$telefone = $_POST["telefone"];
//Recebo o valor enviado pelo SELECT assunto. Reparem que o valor resgatado corresponde ao VALUE do option selecionado pelo usuário
$assunto = $_POST["assunto"];
$mensagem = $_POST["mensagem"];
 
echo "Nome: $nome <br /> Email: $email <br /> Telefone: $telefone <br /> Assunto: $assunto <br /> Mensagem: $mensagem";
?>

Experimentem um pouco mais da passagem de parâmetros. Criem alguns formulários, resgatem valores, imprimam na tela, concatenem com strings (como fiz nos exemplos acima) e testem diferentes formatações. Amanhã falaremos sobre como trabalhar com checkbox, radiobuttons e select multiple. Dessa forma poderemos selecionar várias informações em um formulário e mandá-las agrupadas. É algo bem útil.

Enquanto isso, deixo um exercício para vocês praticarem: vamos montar uma página com o formulário de login. Os dados digitados pelo usuário serão comparados com valores armazenados em dois arrays. Caso o login e senha batam com os valores do array, imprima uma mensagem de sucesso, caso contrário, imprimo uma mensagem de erro. Seguem os códigos abaixo:

LOGIN.PHP

1
2
3
4
5
<form action="validaLogin.php" method="post" id="form" name="form">
<label for="login">Login: <input type="text" name="login" id="login" /></label>
<label for="senha">Senha: <input type="password" name="senha" id="senha" /></label>
<button type="submit">LOGIN</button>
</form>

VALIDALOGIN.PHP

1
2
3
4
<?php
$login = array("user01", "user02", "user03", "user04", "user05");
$senha = array("senha01", "senha02", "senha03", "senha04", "senha05");
?>

Mãos a obra e bons estudos! Até amanhã.

Abraços,
Diego.

Powered by WordPress | Theme: Aeros 2.0 by TheBuckmaker.com