INTEGRANDO PHP COM MYSQL - PDF
Download "INTEGRANDO PHP COM MYSQL"
Iasmin da Silva Bicalho
2 SUMÁRIO PHP SITES ESTÁTICOS 3 SITES DINÂMICOS 3 CARACTERÍSTICAS 3 HISTÓRIA 3 RECURSOS NECESSÁRIOS 4 SITES PARA DOWNLOAD 4 COMO FUNCIONA 4 CLIENT SIDE X SERVER SIDE 5 ESTRUTURA DE PÁGINAS HTML 5 PÁGINAS HTML COM SCRIPTS PHP INCORPORADOS 5 DELIMITADORES 5 ENDEREÇO PARA EXECUTAR PHP (na máquina local) 5 PROGRAMA TESTE USANDO phpinfo() 5 COMENTÁRIOS 6 SEPARADOR DE INSTRUÇÕES 6 COMANDO DE IMPRESSÃO 6 CONSTANTES 6 VARIÁVEIS 7 CARACTERES DE ESCAPE 8 ARRAYS 9 OPERADORES 10 ESTRUTURAS DE CONTROLE 13 FUNÇÕES 16 TRABALHANDO COM ARQUIVOS 19 FORMULÁRIOS 21 COOKIES 23 SESSIONS 25 MYSQL INTRODUÇÃO 27 PRINCIPAIS COMANDOS 27 TIPOS DE DADOS 28 OPERADORES 30 DDL DATA DEFINITION LANGUAGE 31 DML DATA MANIPULATION LANGUAGE 33 INTEGRANDO PHP COM MYSQL CASE: CADASTRO DE ALUNOS 34 EXERCÍCIOS RESOLVIDOS 37 APÊNDICE A APACHE CRIAR UM DIRETÓRIO PROTEGIDO POR SENHA 40 APÊNDICE B WEB SERVICES 41 SITES RECOMENDADOS 44 BIBLIOGRAFIA 44
3 PHP & MYSQL 3 PHP SITES ESTÁTICOS Utiliza-se freqüentemente apenas HTML Não interagem às solicitações dos usuários Apresentam uma estrutura rígida Atualização das páginas muito trabalhosa Não acessam Bancos de Dados SITES DINÂMICOS Utiliza-se: HTML, PHP, ASP, JSP, XML, etc. Interagem às solicitações dos usuários Apresentam uma estrutura mais flexível Atualização das páginas muito prática Acessam Bancos de Dados PHP Originalmente: Personal Home Page Hoje: Hipertext Preprocessor CARACTERÍSTICAS Linguagem totalmente voltada à Internet Utilizada para criação de sites dinâmicos Gratuito: (download: Código aberto Pode ser embutido em páginas HTML Baseado no Servidor: Apache, IIS... Suporte a vários SGBD s: PostgreSQL, MySQL... Portabilidade: Linux, Unix, Windows NT, HISTÓRIA 1994: Rasmus Lerdorf Aplicação: Informações sobre visitas ao site 1995: Primeira versão utlizada por outras pessoas Livro de visitas, contador, etc (2º semestre): PHP/FI (Form Interpreter) Interpreta dados de formulários HTML e suporte a MySQL 1996: Interpretador reescrito: Zeev Suraski e Andi Gutmans Atualmente: PHP4 (está sendo desenvolvida a versão 5).
4 PHP & MYSQL 4 RECURSOS NECESSÁRIOS LINUX APACHE WINDOWS 95/98/ME PHP TRIAD (inclui MySQL) EASY PHP (inclui MySQL) PWS (Personal Web Server) com módulo PHP WINDOWS NT/2000/XP IIS (Internet Information Service) com modulo PHP SITES PARA DOWNLOAD PHP PHP Triad EasyPHP MySQL COMO FUNCIONA
5 PHP & MYSQL 5 CLIENT SIDE X SERVER SIDE Scripts criados em JavaScript e as applets Java são executadas no lado cliente, ou seja, na máquina do usuário. Os programas criados em PHP (assim como ASP e JSP) são executados no lado servidor. Quando o usuário requisita uma página PHP, o servidor interpreta o conteúdo da página e devolve para o cliente uma página HTML, embora com a extensão.php. Isso pode ser verificado no browser através da opção Exibir -> Código Fonte. ESTRUTURA DE PÁGINAS HTML <html> <head> <title>título DA PÁGINA</title> </head> <body> PÁGINA HTML </body> </html> PÁGINAS HTML COM SCRIPTS PHP INCORPORADOS <html> <head> <title>exemplo</title> </head> <body> Linha em HTML<br> echo "Linha em PHP"; </body> </html> DELIMITADORES O PHP deve geralmente estar embutido dentro do HTML Para escrever o código PHP será necessária a utilização de tags no início e no fim de cada seção do PHP. comandos php; ENDEREÇOS PARA EXECUTAR PHP (na máquina local) PROGRAMA DE TESTE USANDO phpinfo() phpinfo();
6 PHP & MYSQL 6 COMENTÁRIOS Permitir que outra pessoa leia o seu código e entenda o que você estava pensando enquanto escrevia o código (ainda que esta pessoa seja você mesmo uma semana mais tarde) Desabilitar partes ou linhas de programas Para comentar (ou desabilitar) uma linha: // echo "teste1";//comentário # echo "teste1";#comentário Para comentar (ou desabilitar) mais de uma linha: echo "teste3"; //echo "teste4";//linha desabilitada /* linhas comentadas */ SEPARADOR DE INSTRUÇÕES Para separar ou finalizar instruções PHP é necessário o uso de ; $a=10;//final de instrução $b="hello world";c=25+$a;//instrução separada por ; COMANDO DE IMPRESSÃO Um programa em PHP normalmente tem como saída uma página HTML. Para podemos "imprimir" estes resultados podemos usar os comandos echo ou print. print(argumento) echo argumento echo "argumento" CONSTANTES DEFINIÇÃO São valores predefinidos no início do programa e que não mudam ao longo de sua execução. Você pode definir suas próprias constrantes utilizando o comando define. define (<constante>,<valor>); define("meunome","marcos"); define("peso",95); echo "O meu nome é ".meunome; echo "<br>"; echo "O meu peso é ".peso. " quilos";
7 PHP & MYSQL 7 VARIÁVEIS APLICAÇÃO Usadas para guardar informações que mudam ou variam no decorrer do script. CARACTERÍSTICAS Todas as variáveis no PHP têm um sinal de cifrão ($) na frente O valor de uma variável é sempre o mais recente atribuído: $a=2; $a="teste"; echo $a;//$a vale teste Variáveis são atribuídas com o operador (=), ficando a variável do lado esquerdo e a expressão ou o valor, à direita: $nome_da_variavel=valor; NOMES O PHP é case sensitive, ou seja, ele diferencia maiúsculas de minúsculas $a="2"; $A="teste"; echo $a;//$a vale 2 A melhor maneira de programar em PHP é utilizar um padrão de digitação, para variáveis o recomendado é minúscula. EXEMPLOS Elabore um script em PHP para calcular a área de um triângulo. $base=5; $altura=3; $area=$base*$altura/2; echo "A base é: $base<br>"; echo "A altura é: $altura<br>"; echo "A área é: $area<br>"; Elabore um script em PHP para apresentar a data atual. <html> <body> $data_de_hoje=date("d/m/y",time()); <p align="center">hoje é dia echo $data_de_hoje; </p> </body> </html>
8 PHP & MYSQL 8 TIPOS DE VARIÁVEIS NUMÉRICAS As variáveis numéricas apresentam valores inteiros ou reais (ponto flutuante). Inteiros $x=12345;//inteiro positivo $x=-123;//inteiro negativo Ponto flutuante $nota=6.5;//ponto flutuante A variável é definida como numérica no momento que atribuímos um valor numérico a ela. $x=10; $y=2.5; STRING (ALFANUMÉRICAS) São cadeias de caracteres que podem ser delimitados por aspas simples ( ) ou duplas ( ). Porém, o resultado poderá ser diferente, note os exemplos a seguir: Aspas duplas: $texto1="exemplo"; $texto2="esse $texto1 utiliza aspas duplas"; echo $texto2; Aspas simples: $texto1="exemplo"; $texto2= Esse $texto1 utiliza aspas simples ; echo $texto2; CARACTERES DE ESCAPE \" Insere no texto o caractere " \n Nova linha \r Retorno de carro (carriage return) \t Tabulação \$ Insere no texto o símbolo $ \\ Insere no texto o caractere \ Exemplo: $texto="estou colocando \"aspas duplas\" dentro de uma string. "; echo $texto;
9 PHP & MYSQL 9 ARRAYS As variáveis comuns, também chamadas de variáveis escalares, podem armazenar apenas um valor por vez. Um array (vetor) pode armazenar vários valores ao mesmo tempo, pois além de apresentar um identificador (como ocorre com as variáveis), há também um índice associado (que pode ser um número ou um texto). Cada índice indica uma posição de memória em que fica armazenado um elemento do array. O índice aparece entre colchetes [ ] logo após o identificador do array. Os arrays são muito úteis quando precisamos realizar automatização de tarefas em nossos programas. Analogia: ARMÁRIO -> GAVETAS -> CORRESPONDÊNCIAS IDENTIFICADOR -> ÍNDICES -> CONTEÚDO DAQUELE ELEMENTO Exemplos: $futebol[0]="sao Paulo"; $futebol[1]="campeao"; $futebol[2]=2004; echo $futebol[0]; echo "<br>"; echo $futebol[1]; echo "<br>"; echo $futebol[2]; $futebol=array(0=>"sao Paulo",1=>"Campeao",2=>2004); echo $futebol[0]; echo "<br>"; echo $futebol[1]; echo "<br>"; echo $futebol[2];
10 PHP & MYSQL 10 OPERADORES Utilizamos operadores para: atribuir valores a uma variável, efetuar operações aritméticas, comparar valores, etc. TIPOS DE OPERADORES: Aritméticos Binários Comparação Atribuição Lógicos Ternário ARITMÉTICOS Utilizados para efetuar operações matemáticas (somar, subtrair, multiplicar, dividir, etc.) OPERADOR DESCRIÇÃO + Adição - Subtração * Multiplicação / Divisão % Resto de divisão Há também os operadores unários (que atuam em apenas um operando). São utilizados para troca de sinal, incremento ou decremento de valor, etc. OPERADOR -op ++op --op op++ op-- DESCRIÇÃO Troca o sinal do operando. Pré-incremento. Primeiro incrementa o valor do operando e depois realiza a operação. Pré-decremento. Primeiro decrementa o valor do operando e depois realiza a operação. Pós-incremento. Primeiro realiza a operação e depois incrementa o operando. Pós-decremento. Primeiro realiza a operação e depois decrementa o operando. Exemplo: $a=2; $b=3; $x=++$b-$a; $y=b--+$a; echo "a=$a<br>b=$b<br>"; echo "x=$x<br>y=$y<br>"; BINÁRIOS Utilizados para fazer comparações binárias (bit a bit), inverter os bits de um operando, deslocar bits à direita (equivalente a uma divisão por dois), deslocar bits à esquerda (equivalente a multiplicar por dois). OPERADOR ~op1 op1&op2 op1 op2 op1^op2 op1>>n op1<<n DESCRIÇÃO Inverte os bits do operando. Operação E (AND) bit a bit. Operação OU (or) bit a bit. Operação OU exclusivo (XOR). Desloca o operando n bits à direita. Desloca o operando n bits à esquerda.
11 PHP & MYSQL 11 Exemplo: $a=8; $x=$a>>1; // desloca 1 bit a direita echo $x; COMPARAÇÃO Utilizados para executar comparações entre o valor de duas variáveis, uma variável e um texto (string) ou uma variável e um número. São também chamados de operadores condicionais. OPERADOR op1==op2 op1>op2 op1<op2 op1>=op2 op1<=op2 op1!=op2 op1<>op2 DESCRIÇÃO Verdadeiro se op1 for igual a op2. Verdadeiro se op1 for maior que op2. Verdadeiro se op1 for menor que op2. Verdadeiro se op1 for maior ou igual a op2. Verdadeior se op1 for menor ou igual a op2. Verdadeiro se op1 for diferente de op2. Verdadeiro se op1 for diferente de op2. ATRIBUIÇÃO Utilizado para atribuir um valor a uma variável. A variável que receberá a atribuição encontra-se sempre do lado esquerdo do operador e recebe o valor gerado pela expressão ou operador que está à direita. As variações apresentadas a seguir são utilizadas para facilitar a programação. OPERADOR op1=op2 op1+=op2 op1-=op2 op1*=op2 op1/=op2 op1.=op2 op1%=op2 op1<<=op2 op1>>=op2 op1&=op2 op1 =op2 op1^=op2 DESCRIÇÃO op1 recebe o valor de op2 Equivale a op1=op1+op2 Equivale a op1=op1-op2 Equivale a op1=op1*op2 Equivale a op1=op1/op2 Equivale a op1=op1.op2 (concatenação) Equivale a op1=op1%op2 Equivale a op1=op1<<op2 Equivale a op1=op1>>op2 Equivale a op1=op1&op2 Equivale a op1=op1 op2 Equivale a op1=op1^op2 LÓGICOS São operadores que retornam o valor verdadeiro (true) ou falso (false). OPERADOR!op1 op1 AND op2 op1 OR op2 op1 XOR op2 op1 && op2 op1 op2 DESCRIÇÃO Verdadeiro se op1 for falso. Verdadeiro se op1 E op2 forem verdadeiros. Precedência baixa. Verdadeiro se op1 OU op2 forem verdadeiros. Precedência baixa. Verdadeiro se só op1 OU só op2 for verdadeiro. Verdadeiro se op1 E op2 forem verdadeiros. Precedência alta. Verdadeiro se op1 OU op2 forem verdadeiros. Precedência alta.
12 PHP & MYSQL 12 Resultado gerados pelos operadores de acordo com o tipo de expressão avaliada: Operador AND exp1 exp2 resultado V V V V F F F V F F F F Operador OR exp1 exp2 resultado V V V V F V F V V F F F Operador XOR exp1 exp2 resultado V V F V F V F V V F F F Operador! (NOT) exp1 resultado V F F V TERNÁRIO Forma abreviada de utilizar o comando condicional IF. Uma condição é avaliada, se for verdadeira, atribui-se o primeiro valor à variável, se for falsa atribui-se o outro valor. condicao? expressao1 : expressao2 Exemplo: $nota = ($freq>=0.75)? ($nota+1) : ($nota-1); Equivale a: if ($freq>=0.75) $nota = $nota+1; else $nota = $nota-1;
13 PHP & MYSQL 13 ESTRUTURAS DE CONTROLE COMANDOS CONDICIONAIS: if switch IF Avalia uma expressão e, dependendo do resultado, é executado um conjunto diferente de instruções. Complementos: elseif e/ou else. $nota=7; if ($nota<5) $avaliacao = "ruim"; elseif ($nota<7) $avalizacao = "regular"; elseif ($nota<9) $avalizacao = "bom"; else $avalizacao = "excelente"; echo "Resultado: $avaliacao"; SWITCH Também avalia o valor de uma expressão para escolher qual bloco de instrução deve ser executado. O switch trabalha basicamente com o operador de igualdade, enquanto o if trabalha com qualquer tipo de operador. $n=1; switch ($n) { case 0: echo "O número vale zero"; break; case 1: echo "O número vale um"; break; case 2: echo "O número vale dois"; break; COMANDOS DE REPETIÇÃO: while do... while for foreach WHILE Avalia uma expressão e, enquanto essa expressão retornar o valor verdadeiro, a execução do bloco de comando será repetida. Quando o valor retornado for falso, encerra-se o laço de repetição (loop), e a execução é transferida para o fim do comando while.
14 PHP & MYSQL 14 $n=1; while ($n<=50) { echo "O valor atual é: $n <br>"; $n++; DO... WHILE While avalia a expressão no início do laço e do... while avalia a expressão no final do laço. Portanto, utilizando do... while o laço será executado pelo menos uma vez, mesmo que a condição não seja verdadeira. $n=5; do { echo "O valor atual é: $n <br>"; // escreve mesmo que a condição não seja V $n++; while (n$<5); FOR Utilizado quando queremos executar um conjunto de instruções um determinado número de vezes. Exemplo: imprimir todos os elementos de um array ou todos os registros retornados de uma consulta a um banco de dados. for (inicialização; codição; operador) { comandos $n=1; for ($n=1;$n<=10;$n++) { echo "O valor atual é: $n <br>"; FOREACH Oferece uma maneira prática de navegar entre os elementos de um array. Disponível apenas na PHP 4 ou superior. foreach ($nome_array as $elemento) { comandos /* foreach exemplo 1 */ $vetor=array(1,2,3); foreach ($vetor as $n) { print "O valor do elemento atual é: $n <br>";
15 PHP & MYSQL 15 /* foreach exemplo 2 */ $vetor = array(1=>2,2=>4,3=>6); foreach ($vetor as $n) { echo $n."<br>"; /* foreach exemplo 3: chave e valor */ $a = array ("um" => 1,"dois" => 2,"tres" => 3,"quize" => 15); foreach ($a as $k => $v) // $k foi atribuida a chave e $v foi atribuido o valor { echo "$k => $v <br>"; /* foreach exemplo 4: array multi-dimensional */ $m[0][0] = "a"; $m[0][1] = "b"; $m[1][0] = "y"; $m[1][1] = "z"; foreach ($m as $v1) { foreach ($v1 as $v2) { print "$v2 <br>"; /* foreach exemplo 5: array dinâmico */ foreach (array(1, 2, 3, 4, 5) as $v) { print "$v <br>";
16 PHP & MYSQL 16 FUNÇÕES As funções tornam possível escrever código reutilizável e modular. Uma função pode receber argumentos (variáveis passadas para a função para uso dentro da função) e retornar um valor (opcional). Os argumentos são passados normalmente por valor, o que significa que uma cópia dos dados é enviada para a função. Mudanças na cópia da variável não afetam a variável original. Alternativamente, os argumentos podem ser passados por referência, caso em que a função não trabalha com uma cópia dos dados, mas sim com a própria variável original; assim mudanças na variável persistirão fora da função. /* Argumentos passados por valor */ function calculo1($n1,$n2){ $n1+=$n2; $n1=2; $n2=3; calculo1($n1,$n2); echo $n1; // escreve 2 /* Argumentos passados por referencia */ function calculo2(&$n1,$n2){ $n1+=$n2; $n1=2; $n2=3; calculo2($n1,$n2); echo $n1; // escreve 5 Os argumentos podem ser opcionais, atribuindo-se um valor a eles na declaração da função. As variáveis, dentro de uma função, normalmente têm alcance local, significando que elas existem somente dentro da função e não interferem com variáveis fora da função, mesmo se elas tiverem o mesmo nome. As variáveis podem acessar variáveis globais usando a instrução global: ESCOPO DE UMA VARIÁVEL Escopo de uma variável define a porção do programa onde ela pode ser utilizada. Na maioria dos casos todas as variáveis têm escopo global. Entretanto, em funções definidas pelo usuário um ESCOPO LOCAL é criado. Uma variável de ESCOPO GLOBAL não pode ser utilizada no interior de uma função sem que haja uma declaração explícita. O exemplo a seguir não produzirá saída alguma, pois a variável $n é de escopo global, e não pode ser referenciada em um escopo local, mesmo que não haja outra com nome igual que cubra sua visibilidade. $n=10; function numero(){ print $n; numero(); Para que o script funcione, a variável global a ser utilizada deve ser declarada. $n=10; function numero(){ global $n; print $n; numero();
17 PHP & MYSQL 17 Uma declaração "global" pode conter várias variáveis, separadas por vírgulas. Uma outra maneira de acessar variáveis de escopo global dentro de uma função é utilizando um array predefinido pelo PHP cujo nome é $GLOBALS. $n=10; function numero(){ print $GLOBALS ["n"]; // imprime 10 numero(); As variáveis locais dentro de uma função são reinicializadas sempre que a função é chamada, a menos que a instrução static seja usada, caso em que ela irá reter o último valor da chamada anterior: O MODIFICADOR static Utilizando-se o modificador static o valor das variáveis declaradas como estáticas é mantido ao terminar a execução da função. Na próxima execução da função, ao encontrar novamente a declaração como static, o valor da variável é recuperado. No exemplo abaixo, o último comando da função é inútil, pois assim que for encerrada a execução da função, a variável $n perde seu valor. function teste(){ $n=10; print $n; $n++; teste(); teste(); No próximo exemplo, a cada chamada da função a variável $n terá seu valor impresso e será incrementada. function teste(){ static $n=10; print $n; $n++; teste(); teste(); RECURSIVIDADE Recursividade é quando uma função chama a si mesma. Isto pode levar a algoritmos muito elegantes que adotam a técnica de dividir um problema complexo em passos menores que podem ser repetidos.
18 PHP & MYSQL 18 Exemplos: function cubo($n) { return $n*$n*$n; $n=10; echo cubo(3)."<br>"; // escreve 27 echo $n; // escreve 10 function fatorial($n) { if ($n<0) { return -1; if ($n<=1) { return 1; return n*fatorial($n-1); echo "O fatorial de 3 é: fatorial(3)"; // escreve 6
19 PHP & MYSQL 19 TRABALHANDO COM ARQUIVOS Arquivos de baixo nível são uma boa alternativa para situações em que precisamos armazenar informações, mas não temos acesso a um banco de dados. Para utilizarmos os arquivos de baixo nível são necessários os seguintes passos: 1. Abrir o arquivo em modo leitura e/ou gravação; 2. Iniciar o processo de leitura ou gravação; 3. Fechar o arquivo. Principais funções do PHP para arquivos de baixo nível: fopen: Abre um arquivo. Retornará false se ocorrer erro. fwrite: Escreve um número específico de bytes de uma string em um arquivo. fgets: Retorna uma string do arquivo a partir do ponteiro do arquivo até que (tamanho -1) bytes sejam lidos. A leitura termina quando encontra o fim de uma linha ou quando o arquivo termina. feof: Retorna true caso o ponteiro de arquivo esteja no fim do arquivo ou ocorra um erro, caso contrário retorna false. fclose: Fecha um arquivo aberto. Retorna true se obtiver sucesso e false em caso de erro. A função fopen recebe como segundo argumento o modo de abertura: r Abre somente para leitura (read-only); coloca o ponteiro no começo do arquivo. r+ Abre para leitura (read) e gravação (write); coloca o ponteiro no começo do arquivo. w Abre somente para gravação; coloca o ponteiro no começo do arquivo e apaga o conteúdo que já foi escrito. Se o arquivo não existir, tenta criá-lo. w+ Abre para leitura e escrita; coloca o ponteiro no início do arquivo e apaga o conteúdo que já foi escrito. Se o arquivo não existir, tenta criá-lo. a Abre o arquivo somente para escrita; coloca o ponteiro no fim do arquivo. Se o arquivo não existir, tenta criá-lo. a+ Abre o arquivo para leitura e gravação; coloca o ponteiro no fim do arquivo. Se o arquivo não existir, tenta criá-lo. Se você abrir um arquivo, ler e visualizar o conteúdo, depois gravar uma versão editada com o mesmo nome de arquivo, você não pode depender do modo w+. Os modos w apagam o conteúdo do arquivo imediatamente ao abri-lo, por isso você só pode ler um arquivo w+ depois de gravar nele. Para contornar esse problema, você precisa abrir uma vez no modo de leitura e uma vez no modo de gravação: Exemplo 1 - contador de visitas: $fp = fopen("contador.txt","r"); // abre o arquivo em modo leitura $n = fgets($fp,255); // obtem a linha do arquivo e atribui seu numero a $n $n++; echo "Você é o visitante número: $n"; echo "<br>"; fclose($fp); // fecha o arquivo $fp = fopen("contador.txt", "w+"); // abre o contador.txt em modo gravação fwrite($fp,$n); // grava a variável $n no arquivo fclose($fp); // fecha o arquivo Nota: Criar o arquivo contador.txt e gravar no mesmo diretório ou../<dir>/contador.txt
20 PHP & MYSQL 20 Exemplo 2 Registrando o IP do usuário, data e hora: ip.php $arquivo="ip.txt"; $ip=$_server['remote_addr']; $ver = date("d/m/y H:i"); $arquivo=fopen($arquivo,"a"); fwrite($arquivo,$ver." - ".$ip."\n"); fclose($arquivo); Exemplo 3 Leitura de um arquivo (noticias.txt): learquivo.php // abre arquivo em modo leitura $fp = fopen("noticias.txt","r"); while (! feof($fp)) { // looping para ler todo o conteúdo do arquivo $linha = fgets($fp,100); //leitura de cada linha do arquivo echo $linha; echo "<br>"; // fim do looping fclose($fp); // fecha arquivo noticia.txt Notícia 1 Notícia 2 Notícia 3 Notícia 4 Notícia 5 Outras funções importantes para manipulação de arquivos e diretórios: explode() divide uma string opendir() abre um diretório readdir() lê os arquivos de um diretório closedir() fecha um diretório file_exists() verifica se um arquivo existe
21 PHP & MYSQL 21 FORMULÁRIOS 1 passo - Criar um formulário utilizando a linguagem HTML para enviar os dados: envia.htm <form action="recebe.php" method="post"> <p>digite o seu nome: <input type="text" name="nome"</p> <p><input type="submit" value="enviar"></p> </form> 2 passo - Criar uma página PHP para receber os dados: opção 1 - Tratar os dados enviados como variáveis, colocando o símbolo $ seguido do próprio nome do campo definido no formulário: recebe.php echo "Seu nome é: $nome"; Para que esta opção funcione a diretiva register_globals (do arquivo php.ini) deverá conter o valor on. opção 2 - Utilizar os dois tipos de arrays definidos pelo PHP: $_GET["$nome_do_campo"] // utilizada para method="get" $_POST["$nome_do_campo"] // utilizada para method="post" recebe.php echo "Seu nome é: ". $_POST["nome"];
22 PHP & MYSQL 22 EXEMPLO: Sistema para guardar informações de usuários em arquivos de texto. <!--cadastro.htm--> <form action="cadastro.php" method="post"> Nome: <input type="text" size="10" name="nome"><br><br> <input type="text" size="10" name=" "><br><br> Endereço: <input type="text" size="10" name="endereco"><br><br> Telefone: <input type="text" size="10" name="telefone"><br><br> <input type="submit" value="cadastrar"> </form> // cadastro.php // Verifica se todos os campos foram preenchidos if (!$nome!$ !$endereco!$telefone) { echo "preencha todos os campos"; else { // Verifica se um usuário com o mesmo nome ja foi cadastrado if(!file_exists($nome. ".txt")) { // Cria o arquivo do usuário com w+ $cria = fopen($nome. ".txt", "w+"); // Declara as informações do usuário // São separadas por para depois podermos recupera-las com explode $dados.= "$nome "; $dados.= "$ "; $dados.= "$endereco "; $dados.= "$telefone"; // Escreve os dados no arquivo $escreve = fwrite($cria,$dados); // Fecha o arquivo fclose($cria); // Exibe a mensagem de usuário cadastrado echo "usuário cadastrado com sucesso!"; else { // Avisa se ja houver um usuário cadastrado com o mesmo nome echo "um usuário chamado $nome ja foi cadastrado"; // exibe.php // Define onde estão os arquivos //./ siginifica que os arquivos estão no diretório atual $dir = "./"; // Abre o diretorio $dir $abredir = opendir($dir); // Faz o loop para a exibição de usuários while ($arqs = readdir($abredir)) { // Retira "." e ".." que são "bugs" do readdir() // Também faz com que só sejam abertos arquivos de texto if ($arqs!= "." && $arqs!= ".." && is_file($arqs) && ereg(".txt", $arqs)) { // Abre arquivo por arquivo, e exibe os dados do usuário // Usamos o "r" pois somente queremos ler o arquivo $abre = fopen($arqs,"r"); // Usa fread para ler o arquivo $le = fread($abre,filesize($arqs)); // Separa os dados pelo " " com explode $dado = explode(" ",$le); // Define os registros $nome = $dado['0']; $ = $dado['1']; $endereco = $dado['2']; $telefone = $dado['3']; // Mostra os dados obtidos echo "Usuário: <b>$nome</b><br>"; echo "nome: $nome<br>"; echo " $ <br>"; echo "endereço: $endereco<br>"; echo "telefone: $telefone<br><br>"; // Fecha o diretorio closedir($abredir);
23 PHP & MYSQL 23 COOKIES Definição: Pequenos fragmentos de textos enviados ao browser do usuário. Objetivo: Armazenar informações (variáveis) na máquina do usuário e resgatá-las posteriormente. Aplicação: Cesta de compras Cadastro de usuários Personalização de sites DEFINIR UM COOKIE setcookie ("name",["value"],["expiration"],["path"],["domain"],["security"]); name - Nome da variável global que será armazenada em HTTP_COOKIE_VARS e que será acessível nas páginas seguintes. value - Valor atribuído à variável name. expiration - Tempo durante o qual o cookie estará acessível. path - Se especificarmos / (barra simples), o cookie será válido para todos os diretórios do servidor web. Se especificarmos /nome_diretorio, o cookie será válido somente neste diretório. domain - Cookies são válidos somente para o host e domínio que o definiram. Se nenhum domínio for especificado, o valor default será o nome do servidor que o gerou. security - Se o parâmetro for 1, o cookie será transmitido somente via HTTPS. setcookie("codigo",100,time()+86400,"/"); Atribuimos o valor 100 ao cookie codigo que expirará em 24 horas (86400 segundos). IMPORTANTE: Os cookies fazem parte do cabeçalho HTTP, porisso precisamos chamar setcookie ANTES de enviar qualquer dado ao navegador. LER UM COOKIE $nome_variavel=$http_cookie_vars["name"]; $teste=$http_cookie_vars["codigo"];
24 PHP & MYSQL 24 EXEMPLO COMPLETO: index.php $nome=$http_cookie_vars["nome"]; if (! isset($nome)) { include "cadastrar.htm"; else { include "cadastrado.php"; cadastrar.htm <form action="definircookies.php" method="post"> Nome: <input type="text" name="txnome"><br><br> RA: <input type="text" name="txra"><br><br> <input type="submit" name="submit" value="enviar"> </form> definircookies.php setcookie("nome","$txnome",time() ); setcookie("ra","$txra",time() ); <p>cookie gravado com sucesso!</p> <a href="cadastrado.php">consultar</a> cadastrado.php $nome=$http_cookie_vars["nome"]; $ra=$http_cookie_vars["ra"]; Nome: echo $nome; <br><br> RA: echo $ra; <br><br> <a href="apagarcookies.php">apagar cookies</a> apagarcookies.php /* Para apagar os cookies devemos utilizar a função setcookie, passando somente o nome do cookie como parâmetro. */ setcookie("nome"); setcookie("ra"); <p>os cookies foram apagados com sucesso!</p>
25 PHP & MYSQL 25 SESSIONS Período durante o qual um usuário navega pelas páginas de um site. Quando este entra no site, abre-se uma sessão e registra-se nela algumas variáveis que ficarão gravadas no servidor e poderão ser acessadas em qualquer página do site, enquanto a sessão estiver aberta. session id identificador único para cada sessão. Para uma página ter acesso aos dados da sessão, ela deve conhecer o session id. Podemos transmitir o session id entre as páginas de duas formas: Cookies: Armazena-se o session id em um cookie na máquina do usuário e este é utilizado como referência para acessar os dados da sessão no servidor. Propagação na URL: Pode ser feito de duas formas: Ativando-se o parâmetro enable-trans-sid: a identificação é enviada transparentemente entre as páginas. Caso o parâmetro acima não seja habilitado, deve-se acrescentar ao final da URL a constante SID, criada automaticamente pelo PHP no início da sessão. echo '<a hef="pagina.php?'. SID. '">Link</a>; IMPORTANTE: Sempre que possível utilize o primeiro método (cookies), pois permite melhor gerenciamento e proporciona maior segurança. CRIAR UMA SESSÃO session_start() função utilizada para criar uma sessão ou para restaurar os dados de uma sessão com base no identificador (passado por cookie ou pelos métodos GET ou POST). IMPORTANTE: Chamar a função session_start antes de qualquer saída produzida pelo browser. REGISTRAR VARIÁVEIS EM UMA SESSÃO $_SESSION variável superglobal utilizada para registrar uma variável (disponível a partir da versão do PHP). EXEMPLO 1: session_start(); if (! isset($_session['contador']){ $_SESSION['contador']=1; else { $_SESSION['contador']++; EXEMPLO 2: // pagina1.php session_start(); echo 'pagina 1'; $_SESSION['data']= date('d/m/y', time()); $_SESSION['nome']= 'Fulano'; $_SESSION['ra']= '123'; echo '<br><a href="pagina2.php">página 2</a>';
26 PHP & MYSQL 26 Opcão: Para propagar o identificador através da URL deve-se alterar a última linha: echo '<br><a href="pagina2.php'.sid.'">página 2</a>'; // pagina2.php session_start(); // necessário para restaurar os dados da sessão atual echo 'pagina 1'; echo $_SESSION['data']. "<br>"; echo $_SESSION['nome']. "<br>"; echo $_SESSION['ra']. "<br>"; echo '<br><a href="pagina1.php">página 1</a>';
27 PHP & MYSQL 27 MySQL INTRODUÇÃO Executar o EasyPHP ou Triad c:\...\mysql\bin\mysql u <usuario> p <senha> <banco_de_dados> c:\...\mysql\bin\mysql u root p mysql> PRINCIPAIS COMANDOS mysql> \h \h help Mostra a tela de saída de ajuda (somente a relação de comandos).? help Sinônimo para help. \c clear Limpa o Buffer. \r connect Reconecta o servidor. Pode receber dois parâmetros <nome_db> e <host>. \G ego Envia um comando para o MySQL e exibe os resultados verticalmente. \q exit Encerra o MySQL. O mesmo que quit. \g go Envia o comando atual para o MySQL. \t notee Não envia para o arquivo de saída. \p print Imprime o comando atual. \q quit encerra o MySQL. \# rehash Refaz um Hash finalizado. \. source Executa uma relação de comandos SQL existente em um arquivo. Deve-se informar após o comando o nome do arquivo. Exemplo: \.script.sql \s status Exibe informações sobre o MySQL. \T tee Envia tudo para um arquivo de saída informado após o comando. \u use Indica o banco de dados que deve ser utilizado. Deve-se informar o nome do banco de dados. Exemplo: u\ cadastro mysql> SELECT CURRENT_DATE();