Programação Web Professor Nícolas Trigo 1 INTRODUÇÃO PHP PHP (uma abreviação recursiva para "PHP: Hypertext Preprocessor") é uma linguagem de programação interpretada, livre e muito utilizada para gerar conteúdo dinâmico na Web. A linguagem surgiu por volta de 1994, como um subconjunto de scripts Perl criados por Rasmus Lerdof, com o nome Personal Home Page Tools. Mais tarde, em 1997, foi lançado o novo pacote da linguagem com o nome de PHP/FI, trazendo a ferramenta Forms Interpreter, que era na verdade um interpretador de comandos SQL. Mais tarde, Zeev Suraski desenvolveu o analisador do PHP 3, que começou a ter forma de uma linguagem de programação. Pouco depois, Zeev e Andi Gutmans, escreveram o PHP 4, abandonando por completo o PHP 3, dando mais poder à máquina da linguagem e maior número de recursos. Atualmente está na versão 5 do PHP. Trata-se de uma linguagem extremamente modularizada, o que a torna ideal para instalação e uso em servidores web. Diversos módulos são criados no repositório de extensões PECL (PHP Extension Community Library) e alguns destes módulos são introduzidos como padrão em novas versões da linguagem. É muito parecida, em tipos de dados, sintaxe e mesmo funções, com a linguagem C e com a C++. O código PHP fica embutida no código HTML. Existem versões do PHP disponíveis para os seguintes sistemas operacionais: Windows, Linux, FreeBSD, Mac OS, OS/2, AS/400, Novell Netware, RISC OS, IRIX e Solaris. Construir uma página dinâmica baseada em bases de dados é simples com PHP, este provê suporte a um grande número de bases de dados: Oracle, Sybase, PostgreSQL, InterBase, MySQL, SQLite, MSSQL, Firebird etc, podendo abstrair o banco com a biblioteca ADOdb, entre outras. O PRIMEIRO PROGRAMA EM PHP Vamos criar o Hello World! Primeiro abra um editor de texto simples e salve o arquivo com o nome: hello.php. Depois, insira o código a seguir: <!-- Nome do arquivo: hello.php --> <HEAD><TITLE>Título Hello World</TITLE></HEAD> // Dentro do código PHP echo <P>Hello World!</P><P>Estamos testando </P> ;
Programação Web Professor Nícolas Trigo 2 Indica o início do código do PHP. // Comenta apenas uma linha. Para comentar mais de uma linha, insira /* no início e */ no final. echo Comando de impressão que envia para o navegador seqüências de strings, podendo ser textos e/ou tags HTML; valores de variáveis, até fórmulas matemáticas. Indica a finalização do código do PHP. Após visualizar este arquivo pelo navegador, clique com o botão direito e peça para visualizar o código. Aparecerá o código a seguir: <!-- Nome do arquivo: hello.php --> <HEAD><TITLE>Título Hello World</TITLE></HEAD> <P>Hello World</P> Quando o internauta acessa o site, ele faz uma requisição através do endereço fornecido. O servidor recebe esta requisição, localiza o arquivo e o processa. O ato de processamento corresponde ao envio do cabeçalho mais o código HTML do web site. O internauta não vê o código PHP, somente o código HTML convertido. TIPOS DE DADOS O PHP tem tipagem dinâmica, os valores das variáveis podem ser alterados em qualquer momento durante a execução do algoritmo. Strings corresponde a seqüência de caracteres. A seqüência deve ser demarcada com aspas simples ou aspas duplas. Numéricos corresponde a valores numéricos, podendo ser números inteiros ou números reais (com casas decimais). Quando o programador quiser utilizar uma variável, basta atribuir o que deseja a qualquer variável, pois não existe a identificação do tipo de dado das informações. VARIÁVEIS Não existe declaração de variáveis em PHP, o programador atribui o valor à variável desejada. Para identificar uma variável, esta é iniciada com o símbolo de cifrão, por exemplo: $nome, $Media, $FALTAS. Deixando claro que PHP é case sensitive, maiúscula é diferente de minúscula. Veja o exemplo a seguir.
Programação Web Professor Nícolas Trigo 3 <!-- Nome do arquivo: variaveis.php --> <HEAD><TITLE>Exemplo com variáveis</title></head> $nome = Nícolas Trigo ; $Disciplina = Programação Web ; echo <P>.$nome. é professor da disciplina.$disciplina.!</p> ; Observe que entre as variáveis e strings é inserido o símbolo ponto (. ) que tem a função de concatenar as informações. Quando o programador visualizar o código-fonte do seu navegador aparecerá o código a seguir: <!-- Nome do arquivo: variaveis.php --> <HEAD><TITLE>Exemplo com variáveis</title></head> <P>Nícolas Trigo é professor da disciplina Programação Web!</P> EXPRESSÕES OPERADORES Os principais operadores são: Operadores Aritméticos Operadores de Comparação Operadores Lógicos Operadores de Atribuição Operador Ternário Operadores Aritméticos Operador Função Exemplo + Adição $a + $b Subtração $c 10 * Multiplicação $d * $e / Divisão $f / 3 % Módulo (Resto da divisão) $a % 2
Programação Web Professor Nícolas Trigo 4 Operadores de Comparação Operador var1 == var2 var1!= var2 var1 <> var2 var1 > var2 var1 >= var2 var1 < var2 var1 <= var2 Descrição Verdadeiro se var1 for igual a var2. Verdadeiro se var1 for diferente a var2. Outra forma de aceitar diferente Verdadeiro se var1 for maior do que var2. Verdadeiro se var1 for maior ou igual a var2. Verdadeiro se var1 for menor do que var2. Verdadeiro se var1 for menor ou igual a var2. Operadores Lógicos Operador Descrição var1 AND var2 Verdadeiro se var1 E var2 forem verdadeiros, senão Falso. var1 && var2 Verdadeiro se var1 E var2 forem verdadeiros, senão Falso var1 OR var2 Verdadeiro se var1 OU var2 forem verdadeiros, senão Falso var1 var2 Verdadeiro se var1 OU var2 forem verdadeiros, senão Falso var1 XOR var2 Verdadeiro se somente var1 OU var2 for verdadeiro, senão Falso! var1 Verdadeiro se var1 for Falso. Operadores de Atribuição Operador var1 = var2 var1 += var2 var1 = var2 var1 *= var2 var1 /= var2 var1 %= var2 var1.= var2 Descrição Atribui o valor de var2 em var1. var1 = var1 + var2. var1 = var1 var2. var1 = var1 * var2. var1 = var1 / var2. var1 = var1 % var2. var1 = var1. var2. Operador Ternário Este é um tipo especial de operador. Ele é usado quando você deseja atribuir um entre dois valores de uma variável, dependendo de alguma condição. A sintaxe do operador ternário é mostrada a seguir: $variavel = condicao? expressao1 : expressao2; Se a condicao for verdadeira então a expressao1 é atribuída à $variavel, senão (se a condicao for falsa) expressao2 é atribuída à $variavel.
Programação Web Professor Nícolas Trigo 5 Veja o exemplo a seguir: <!-- Nome do arquivo: operadores.php --> <HEAD> <TITLE>Exemplo com expressões e operadores</title> </HEAD> $a = 10; $b = 5; echo $a + $b. "<BR>"; echo $a - $b. "<BR>"; echo $a * $b. "<BR>"; echo $a / $b. "<BR>"; echo $a % $b. "<BR>"; $c = ($a == $b)?($a - $b):($a + $b); echo $c; ARRAYS (VETORES E MATRIZES) Semelhante às variáveis, não declara os arrays, simplesmente atribui os valores identificando em qual variável array e o seu índice. Não existe limite, pode ir acrescentando o quanto desejar.existem duas formas de atribuir valores aos arrays. A primeira é atribuindo diretamente à posição do array. $veta[1] = Francisco de Souza ; $veta[2] = 100.50 Não foi erro! Em PHP é aceitável inserir dados de tipos diversos em um mesmo array. A outra forma é através do seguinte comando: $veta = array( Francisco de Souza,100.50); ESTRUTURAS DE SELEÇÃO IF Existem duas estruturas de seleção em PHP: if e switch. A estrutura do if pode ser: if(condição) <comando>; Veja o exemplo: if(condição){ if(condição){ else{ if(condição1){ elseif(condição2){ else{
Programação Web Professor Nícolas Trigo 6 <!-- Nome do arquivo: est-if.php --> <HEAD><TITLE>Exemplo com Estrutura de Seleção IF</TITLE></HEAD> $a = 10; if($a % 2 == 0){ echo $a. é um número par! ; else{ echo $a. é um número ímpar! ; SWITCH A estrutura SWITCH é montada da seguinte forma: switch(variavel){ case valor1: break; case valor2: break;... case valorn: break; default: break; Veja o exemplo: <!-- Nome do arquivo: est-switch.php --> <HEAD><TITLE>Exemplo com Estrutura de Seleção SWICTH</TITLE></HEAD> $turno = 3; switch($turno){ case 1: echo O turno.$turno. é manhã! ; break; case 2: echo O turno.$turno. é tarde! ; break; case 3: echo O turno.$turno. é noite! ; break; default: echo O valor da variável turno inválido! ; break;
Programação Web Professor Nícolas Trigo 7 ESTRUTURAS DE REPETIÇÃO WHILE Existem duas estruturas de repetição consideradas as principais em PHP: while e for. A estrutura WHILE é montada da seguinte forma: while(condição){ Veja o exemplo: <!-- Nome do arquivo: est-while.php --> <HEAD><TITLE>Exemplo com Estrutura de Repetição WHILE</TITLE></HEAD> $contador = 1; while ($contador <= 100){ echo <P>O valor da variável contador é.$contador.!</p> ; $contador++; FOR A estrutura FOR é montada da seguinte forma: for(inicialização; condição; operação){ Sabendo que a inicialização é a atribuição do valor inicial à variável de controle, a condição é a definição do limite de repetições e a operação é a ação de incrementar ou decrementar. Veja o exemplo: <!-- Nome do arquivo: est-for.php --> <HEAD><TITLE>Exemplo com Estrutura de Repetição FOR</TITLE></HEAD> for($contador = 1; $contador <= 100; $contador++){ echo <P>O valor da variável contador é.$contador.!</p> ;
Programação Web Professor Nícolas Trigo 8 ALGUNS RECURSOS Alguns recursos serão vistos de forma bem rápida nesta seção. date() Formata a data e a hora local date( string de caracteres de formação ); Os seguintes caracteres são os principais parâmetros para date. Caracteres de formação Descrição Exemplo de valores retornados d Dia do mês, 2 dígitos com zero na frente 01 to 31 D Uma representação textual de um dia, três letras. Mon through Sun F Uma representação textual de um mês, tal como janeiro ou January a December Março g 12 horas no formato de hora sem zero na frente 1 a 12 G 24 horas no formato de hora sem zero na frente 0 a 23 h 12 horas no formato de hora com zero na frente 01 a 12 H 24 horas no formato de hora com zero na frente 00 a 23 i Minutos com zero na frente 00 para 59 j Dia do mês sem zero na frente 1 to 31 l Uma representação completa textual de um dia da semana. Sunday a Saturday ('L' minúsculo) L Se ano é bissexto. 1 ano bissexto, 0 ano não bissexto. m Representação numérica de um mês, com zero na frente. 01 a 12 M Uma representação textual curta de um mês, três letras. Jan a Dec n Representação numérica de um mês, sem zero na frente. 1 a 12 s Segundos, com zero na frente. 00 a 59 t Número de dias do dado mês 28 a 31 w Representação numérica do dia da semana 0 (para Domingo) a 6 (para Sábado) Y Uma representação completa do ano, 4 dígitos Examples: 1999 ou 2003 y Representação do ano em dois dígitos Examples: 99 ou 03 z O dia do ano (começando de 0) 0 a 365 Veja o exemplo: <!-- Nome do arquivo: data.php --> <HEAD><TITLE>Exemplo com o comando DATE</TITLE></HEAD> echo "<P>Data: <B>".date('D/m/Y')."</B></P>"; echo "<P>Outra Data: <B>".date('d \d\e F \de Y')."</B></P>"; echo "<P>Hora: <B>".date('G \h i \m\i\n s \s')."</b></p>"; echo "<P>Dia da Semana: <B>".date('M')."</B></P>";
Programação Web Professor Nícolas Trigo 9 include() e require() include( caminho até o arquivo desejado ); require( caminho até o arquivo desejado ); A instrução include() inclui e avalia o arquivo informado. A instrução require() tem a mesma função do include(), mas difere do primeiro quando se trata de manipulação de erros. Quando gera um erro na include(), mostra um Warning (Aviso), informando alguma falha e continua a processar o documento web. Já na require(), quando gera um erro, este é tratado como Fatal Error, interrompendo o processamento do documento web a partir de sua posição. Quando um arquivo2 é incluído em arquivo1, o seu código entra no escopo de variável da linha do arquivo1. Qualquer variável disponível da linha do arquivo2 estará disponível para o arquivo1, daquele ponto em diante, Observe a figura a seguir. Veja o exemplo: Arquivo1 include(arquivo2) Continuação do Arquivo1 <!-- Nome do arquivo: arquivo1.php --> <HEAD><TITLE>Exemplo com os comandos INCLUDE e REQUIRE</TITLE></HEAD> echo "<P><B>TÍTULO</B></P>"; echo "<HR>"; include( arquivo2.php ); echo "<HR>"; require( arquivo3.php ); echo "<HR>"; echo "<P><B>Finalizando Documento.</B></P>"; PASSANDO PARÂMETROS PELOS MÉTODOS GET E POST Relembrando os métodos GET e POST. GET Método que solicita ao servidor o envio de um recurso; é o serviço essencial para o protocolo. O resultado do recurso é retornado através do URI. Por exemplo: http://www.google.com.br/imghp? hl=pt-br&tab=wi&q= Observe as substrings em negrito da URL acima. Os termos hl, tab e q são variáveis que passam informações de um documento para outro através do método GET. Observe que os valor de hl é pt-br, o valor de tab é wi e q não tem valor. hl=pt-br tab=wi q=
Programação Web Professor Nícolas Trigo 10 POST Método que permite que o cliente envie mensagens e conteúdo de formulários para servidores que irão manipular a informação de maneira adequada. O método POST não deixa visíveis as variáveis com seus valores como age o método GET. O POST é o melhor método para transição de informações confidenciais. Em PHP, os métodos GET e POST são identificados como arrays. Variáveis HTTP GET: $_GET Contém um array associativo de variáveis passadas para o script atual através do método HTTP GET. Esta é uma variável automaticamente global. Isto significa que ela é disponível em todos os níveis de um script. Você não precisa fazer um global $_GET. Variáveis HTTP POST: $_POST Contém um array associativo de variáveis passadas para o script atual através do método HTTP POST. Esta é uma variável automaticamente global. Isto significa que ela é disponível em todos os níveis de um script. <!-- Arquivo: emissor.php --> <HEAD><TITLE>Exemplo com Métodos GET e POST</TITLE></HEAD> <FORM METHOD="POST" ACTION="recebeMetodo.php"> <P>ENVIAR NOME PELO MÉTODO POST: <INPUT TYPE="text" NAME="nome"> <INPUT TYPE="submit" name="enviar" value="enviar Informação"></P> </FORM> <FORM METHOD="GET" ACTION="recebeMetodo.php"> <P>ENVIAR NOME PELO MÉTODO GET: <INPUT TYPE="text" NAME="nome"> <INPUT TYPE="submit" name="enviar" value="enviar Informação"></P> </FORM> <P><A HREF="recebeMetodo.php?nome=Nícolas Trigo">ENVIAR NOME DEFINIDO PELO MÉTODO GET</A></P> <!-- Arquivo: recebemetodo --> echo "<P>NOME ENVIADO PELO MÉTODO POST: ".$_POST['nome']."!</P>"; echo "<P>NOME ENVIADO PELO MÉTODO GET: ".$_GET['nome']."!</P>";
Programação Web Professor Nícolas Trigo 11 ACESSO A BANCO DE DADOS MYSQL Antes de começar a trabalhar MySQL com PHP, vamos deixar claro os principais comandos que montam as Query s SQL. Observações: Em PHP, as query s SQL não tem ponto-e-vírgula ( ; ). O que estiver entre colchetes é opcional. Os tipos de dados e informações extras encontram-se no PHPMyAdmin. CREATE Pode criar banco de dados e/ou tabela. CREATE DATABASE <nome_bd> CREATE TABLE <nome_tabela> (campo1 tipo extras,campo2 tipo extras,...,campon tipo extras) Por exemplo: CREATE DATABASE AGENDA CREATE TABLE USUARIO( codigo smallint NOT NULL auto_increment PRIMARY KEY, nome varchar(75) NOT NULL, email varchar(75) NOT NULL, senha varchar(35) NOT NULL, observacao TEXT ) CREATE TABLE TELEFONE( codigo smallint NOT NULL auto_increment PRIMARY KEY, codigousuario smallint NOT NULL, tipo varchar(15) NOT NULL, numero varchar(12) NOT NULL, ramal varchar(5) ) O MySQL tem suporte a FOREIGN KEY (Chave estrangeira) a partir da versão 4 e o PHPTriad utiliza a versão 3.23.47, por isso será visto uma condição na subseção SELECT como relacionar uma chave estrangeira TELEFONE.codusuario com a chave primário USUARIO.codigo.
Programação Web Professor Nícolas Trigo 12 DROP Apaga tabela e/ou banco de dados. DROP TABLE <nome_tabela> DROP DATABASE <nome_bd> Por exemplo: DROP TABLE USUARIO, TELEFONE DROP DATABASE AGENDA INSERT Insere dados em uma tabela. INSERT INTO <nome_tabela> [(campo1,campo2,...,campon)] VALUES ( valor do campo 1, valor do campo 2,..., valor do campo N ) Por exemplo: INSERT INTO USUARIO (codigo,nome,email,senha,observacao) VALUES (, Fulano Beltrano de Tal, fulanobt@yahoo.com.br, 12345, Qualquer coisa ) UPDATE Atualiza dados em uma tabela. UPDATE <nome_tabela> SET campo1= valor 1,campo2= valor2,...,campon= valor N [WHERE <condições>] Por exemplo: UPDATE USUARIO SET senha=md5( 12345 ),observacao= Pode ser qualquer coisa! WHERE codigo= 1 DELETE Apaga registros em uma tabela. DELETE FROM <nome_tabela> [WHERE <condições>] Por exemplo: DELETE FROM USUARIO WHERE codigo= 1
Programação Web Professor Nícolas Trigo 13 SELECT SELECT <campos> FROM <nome_tabela> [WHERE <condições separadas por OR e/ou AND> ORDER BY <campo> ASC(Crescente) DESC(Decrescente)] Por exemplo: SELECT * FROM USUARIO /*Busca todos os dados da tabela USUARIO*/ SELECT USUARIO.nome, TELEFONE.tipo, TELEFONE.numero FROM USUARIO, TELEFONE WHERE USUARIO.codigo=TELEFONE.codigousuario /*Busca todos os nomes relacionados com os tipos e números de telefones*/ SELECT USUARIO.nome, TELEFONE.tipo, TELEFONE.numero FROM USUARIO, TELEFONE WHERE USUARIO.codigo=TELEFONE.codigousuario ORDER BY USUARIO.nome DESC /*Busca todos os nomes relacionados com os tipos e números de telefones em ordem decrescente por nome*/ SELECT USUARIO.nome, TELEFONE.tipo, TELEFONE.numero FROM USUARIO, TELEFONE WHERE USUARIO.codigo=TELEFONE.codigousuario AND USUARIO.nome LIKE %Silva% /*Busca todos os nomes que contenham a substring Silva relacionados com os tipos e números de seus telefones*/ Segue abaixo a tabela contendo os operadores de strings para as Query s SQL. OPERADOR DESCRIÇÃO LIKE A% Começa com a letra A. LIKE %A Termina com a letra A. LIKE %A% Tenha a letra A em qualquer posição. LIKE A%B Começa com a letra A e termina com a letra B. NOT LIKE A% Não começa com a letra A Para conectar com o Gerenciador de Banco de Dados deve ser utilizado o seguinte comando: $id = mysql_connect( URL, usuariobd, senhausuario ) or die(mysql_error()); Se a URL (Ex.: localhost), usuariobd (nome do usuário do MySQL) e senhausuario (senha do usuário do MySQL) estiverem corretas o comando mysql_connect retorna TRUE para a variável $id, senão imprime a mensagem de erro através do comando mysql_error(). Depois de conectar ao Gerenciador, deve-se selecionar qual banco de dados deseja ter acesso. Para selecionar um Banco de Dados deve ser usar o seguinte comando: mysql_select_db( NomeBD,$id) or die(mysql_error()); Se o nomebd (nome do banco de dados) estiver correto e a variável $id estiver com status de conexão feita (conexão com o Gerenciador do BD estiver funcionando corretamente) então o nomebd será
Programação Web Professor Nícolas Trigo 14 o banco de dados ativo para acesso às informações, senão imprime a mensagem de erro através do comando mysql_error(). Depois de selecionar um banco de dados, o desenvolvedor está liberado para acessar as informações armazenadas neste banco de dados. Para ter acesso às informações deve usar o seguinte comando: $resultado = mysql_query( Query SQL ) or die(mysql_error()); Se a Query SQL (usando, por exemplo, INSERT, SELECT, etc.) estiver correta então o comando mysql_query armazena na variável $resultado uma ligação com o resultado da consulta gerada pela Query SQL, senão imprime a mensagem de erro através do comando mysql_error(). Os comandos a seguir indicam a quantidade de linhas afetadas pelo comando anterior do MySQL. mysql_affected_rows(); mysql_num_rows($resultado); O mysql_affected_rows() afeta os comandos SQL INSERT, DELETE e UPDATE, o mysql_num_rows( Identificador que liga a aplicação com o resultado da Query SQL ) afeta o comando SQL SELECT. Após enviar um SELECT pelo mysql_query, retornará uma linha de registro para manipular as suas informações, que deverá usar o seguinte comando: $dados = mysql_fetch_row($resultado); tabela. A variável $dados será um array, iniciando o índice por 0 (zero) e seguindo a ordem dos campos da Existe um pequeno problema para o comando anterior. Ele só captura uma linha. E se precisar de mais de uma linha? Para atender a esta necessidade deve-se usar o seguinte comando: $dados[ linha ] = mysql_result($resultado, linha, IDCAMPO ); A variável $dados será um array controlado pela variável linha (o mesmo utilizado pelas estruturas de repetição que identificará a linha do registro). No comando mysql_result tem o identificador do comando mysql_query, seguido pelo número da linha e finalizando com o IDCAMPO, que pode ser o nome do campo na tabela ou o número de ordenação do campo na tabela. Veja o exemplo: <? $local = 'localhost'; $user = 'root'; $passwd = ''; $id = mysql_connect($local,$user,$passwd) or die(mysql_error()); $db = 'AGENDA'; mysql_select_db($db,$id) or die(mysql_error()); $resultado = mysql_query("select * FROM USUARIO") or die(mysql_error()); $linhas = mysql_num_rows($resultado); $usuario = mysql_fetch_row($resultado);
Programação Web Professor Nícolas Trigo 15 for($i=0; $i<count($usuario); $i++){ echo " - ".$usuario[$i]; echo "<hr>"; for($i=0; $i<$linhas; $i++){ $codigo[$i] = mysql_result($resultado,$i,codigo); $nome[$i] = mysql_result($resultado,$i,nome); $email[$i] = mysql_result($resultado,$i,email); $senha[$i] = mysql_result($resultado,$i,senha); $observacao[$i] = mysql_result($resultado,$i,observacao); for($i=0; $i<$linhas; $i++){ echo "<P>".$codigo[$i]." - ".$nome[$i]."<br>".$email[$i]." - ".$senha[$i]."<br>".$observacao[$i]."</p>"; SESSÕES E AUTENTICAÇÃO Sessão Sessões são usadas para guardar dados enquanto a janela do browser estiver aberta. São geralmente usadas para manter dados como nome do usuário, tipo do usuário (se é o administrador ou se é um visitante não cadastrado, por exemplo), entre outros dados importantes. Dica: NUNCA COLOQUE A SENHA NA SESSÃO. VOCÊ SÓ PRECISA DELA PARA AUTENTICAÇÃO! Para iniciar uma sessão no PHP usamos a função: session_start(); Se quisermos destruir a sessão (no caso de o usuário ter feito logoff), usamos a função: session_destroy(); Agora precisamos apenas setar os valores que ficarão na sessão. No PHP os valores são armazenados em um vetor associativo chamado $_SESSION. As associações são feitas com pares chave e valor. Por exemplo, vamos setar o nome do usuário e a permissão dele, e colocar esses dados na seção. Vamos buscar esses dados a partir de um formulário fictício, via POST. //iniciamos a sessão session_start(); //colocamos o usuário na sessão. $_SESSION['usuario'] = $_POST['usuario']; //da mesma forma setamos outras informações necessárias. $_SESSION['qualquer_coisa'] = $_POST['qualquer_coisa']; //Redirecionamos para a pagina principal. echo <meta http-equiv=\ refresh\ content= \ 0;url= principal.php \ > ; Com isso feito, podemos acessar as variáveis da sessão de qualquer lugar da nossa aplicação através do vetor $_SESSION.
Programação Web Professor Nícolas Trigo 16 Para verificar se as informações se encontram na sessão, use seguinte comando: session_is_registered('nome da variável na sessão') Se retornar 1 é porque a variável está registrada na sessão, senão retorna 0 (zero). Caso tenha algum problema com o comando anterior, use o seguinte: isset($_session['nome da variável na sessão']) Se retornar true é porque a variável foi iniciada. A sugestão é que utilize o comando isset(), em vez do session_is_registered(). Autenticação e Segurança: Veja o exemplo abaixo de uma pequena aplicação com sessão. CREATE TABLE usuario ( codigo smallint(6) NOT NULL auto_increment PRIMARY KEY, nome varchar(75) NOT NULL, email varchar(75) NOT NULL, senha varchar(15) NOT NULL, ) INSERT INTO usuario VALUES ('', 'João Paulo Santos', 'joao@hotmail.com', '123'); <!-- Arquivo: index.php <HEAD> <TITLE> Login </TITLE> </HEAD> <FORM METHOD=POST ACTION="autentica.php"> <P>Login: <INPUT TYPE="text" NAME="login"></P> <P>Senha: <INPUT TYPE="password" NAME="senha"></P> <P><INPUT TYPE="submit" value="acessar"></p> </FORM> <!-- Arquivo: autentica.php --> $path = "localhost"; $user = "<nome do usuário do BD>"; $pswd = "<senha do usuário do BD >"; $db = "<nome do BD>"; $id = mysql_connect($path,$user,$pswd) or die(mysql_error()); mysql_select_db($db,$id) or die(mysql_error()); $query = "SELECT * FROM USUARIO WHERE email='".$_post['login']."' AND senha='".$_post['senha']."'"; $resultado = mysql_query($query) or die(mysql_error()); $dados = mysql_fetch_array($resultado); $linhas = mysql_num_rows($resultado); if($linhas == 1){
Programação Web Professor Nícolas Trigo 17 session_start(); $_SESSION['codigo'] = $dados[0]; $_SESSION['nome'] = $dados[1]; $_SESSION['email'] = $dados[2]; echo "<meta http-equiv=\"refresh\" content=\"0;url='principal.php'\">"; else{ echo "<meta http-equiv=\"refresh\" content=\"0;url='index.php'\">"; <!-- Arquivo: principal.php --> session_start(); if(isset($_session['email'])){ echo "<P>Olá ".$_SESSION['nome']."!</P>"; echo "<P>O seu login é ".$_SESSION['email']."!</P>"; echo "<P><A HREF= principal2.php >Principal2</A></P>"; echo "<P><A HREF=\"logoff.php\">Fechar Sessão</A></P>"; else{ echo "<P>SEM SESSÃO!</P><P><A HREF=\"index.php\">Voltar</A></P>"; <!-- Arquivo: principal2.php --> session_start(); if(isset($_session['email'])){ echo "<P>Olá ".$_SESSION['nome']."!</P>"; echo "<P>Você ainda continua na sessão!</p>"; echo "<P><A HREF=\"principal.php\">Para voltar para a principal</a></p>"; else{ echo "<P>NÃO EXISTE SESSÃO!</P><P><A HREF=\"index.php\">Voltar</A></P>"; <!-- Arquivo: logoff.php --> session_start(); session_destroy(); echo "<P>Fechando Sessão em 5 segundos...</p>"; echo "<meta http-equiv=\"refresh\" content=\"5;url='index.php'\">"; UPLOAD DE ARQUIVOS Veja a aplicação web exemplo abaixo: <!-- Arquivo: index.php --> <HEAD> <TITLE> New Document </TITLE> </HEAD> <P>UPLOAD DE ARQUIVOS - VISUALIZAÇÃO</P>
Programação Web Professor Nícolas Trigo 18 <hr width="100%" size="1" noshade> <p><a HREF="form.php">Upload</A></p> $dir = 'docs'; $diretorio = opendir($dir); $i = 0; while($arquivo = readdir($diretorio)){ if($arquivo!= "." && $arquivo!= ".."){ $arquivo_array[$i] = $arquivo; $i++; for($j=0; $j<count($arquivo_array); $j++){ echo "<P>".$j." - <A HREF=\"".$dir."/".$arquivo_array[$j]."\">"; echo $arquivo_array[$j]."</a></p>"; <!-- Arquivo: form.php --> <HEAD> <TITLE> Upload de Arquivos </TITLE> </HEAD> <form action="upload.php" method="post" enctype="multipart/form-data"> <P>Envie o seu documento para o site! <input type="file" name="doc"></p> <P><input type="submit" value="enviar Documento!"></P> </form> <!-- Arquivo: upload.php --> $erro = $config = array(); $arquivo = isset($_files["doc"])? $_FILES["doc"] : FALSE; echo "<P>Nome do arquivo: ".$arquivo['name']."!"; if (($arquivo!= FALSE) AND ($arquivo['name']!= "")){ $doc_dir = "docs/".$arquivo['name']; move_uploaded_file($arquivo["tmp_name"], $doc_dir); echo "<P>Seu arquivo foi enviado com sucesso!</p>"; else{ echo "<P>erro</P>"; echo "<P><A HREF=\"index.php\">Voltar</A></P>";