Você está na página 1de 18

Programação Web Professor Nícolas Trigo 1

PHP
INTRODUÇÃO
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 -->


<HTML>
<HEAD><TITLE>T&iacute;tulo Hello World</TITLE></HEAD>
<BODY>
<?php
// Dentro do código PHP
echo “<P>Hello World!</P><P>Estamos testando…</P>”;
?>
</BODY>
</HTML>
Programação Web Professor Nícolas Trigo 2

<?php  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 -->


<HTML>
<HEAD><TITLE>T&iacute;tulo Hello World</TITLE></HEAD>
<BODY>
<P>Hello World</P>
</BODY>
</HTML>

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 -->


<HTML>
<HEAD><TITLE>Exemplo com variáveis</TITLE></HEAD>
<BODY>
<?php
$nome = “Nícolas Trigo”;
$Disciplina = “Programação Web”;
echo “<P>”.$nome.“ é professor da disciplina ”.$Disciplina.“!</P>”;
?>
</BODY>
</HTML>

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 -->


<HTML>
<HEAD><TITLE>Exemplo com variáveis</TITLE></HEAD>
<BODY>
<P>Nícolas Trigo é professor da disciplina Programação Web!</P>
</BODY>
</HTML>

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 Descrição
var1 == var2 Verdadeiro se var1 for igual a var2.
var1 != var2 Verdadeiro se var1 for diferente a var2.
var1 <> var2 Outra forma de aceitar diferente
var1 > var2 Verdadeiro se var1 for maior do que var2.
var1 >= var2 Verdadeiro se var1 for maior ou igual a var2.
var1 < var2 Verdadeiro se var1 for menor do que var2.
var1 <= 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 Descrição
var1 = var2 Atribui o valor de var2 em var1.
var1 += var2 var1 = var1 + var2.
var1 –= var2 var1 = var1 – var2.
var1 *= var2 var1 = var1 * var2.
var1 /= var2 var1 = var1 / var2.
var1 %= var2 var1 = var1 % var2.
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 -->


<HTML>
<HEAD>
<TITLE>Exemplo com expressões e operadores</TITLE>
</HEAD>
<BODY>
<?php
$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;
?>
</BODY>
</HTML>

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
Existem duas estruturas de seleção em PHP: if e switch.

IF
A estrutura do if pode ser:

if(condição) if(condição){ if(condição){ if(condição1){


<comando>; <comando(s)>; <comando(s)>; <comando(s)>;
} }else{ }elseif(condição2){
<comando(s)>; <comando(s)>;
} }else{
<comando(s)>;
}
Veja o exemplo:
Programação Web Professor Nícolas Trigo 6

<!-- Nome do arquivo: est-if.php -->


<HTML>
<HEAD><TITLE>Exemplo com Estrutura de Seleção IF</TITLE></HEAD>
<BODY>
<?php
$a = 10;
if($a % 2 == 0){
echo $a.“é um número par!”;
}else{
echo $a.“é um número ímpar!”;
}
?>
</BODY>
</HTML>

SWITCH
A estrutura SWITCH é montada da seguinte forma:

switch(variavel){
case valor1:
<comando(s)>;
break;
case valor2:
<comando(s)>;
break;
...
case valorN:
<comando(s)>;
break;
default:
<comando(s)>;
break;
}
Veja o exemplo:

<!-- Nome do arquivo: est-switch.php -->


<HTML>
<HEAD><TITLE>Exemplo com Estrutura de Seleção SWICTH</TITLE></HEAD>
<BODY>
<?php
$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;
}
?>
</BODY>
</HTML>
Programação Web Professor Nícolas Trigo 7

ESTRUTURAS DE REPETIÇÃO
Existem duas estruturas de repetição consideradas as principais em PHP: while e for.

WHILE
A estrutura WHILE é montada da seguinte forma:

while(condição){
<comando(s)>;
}
Veja o exemplo:

<!-- Nome do arquivo: est-while.php -->


<HTML>
<HEAD><TITLE>Exemplo com Estrutura de Repetição WHILE</TITLE></HEAD>
<BODY>
<?php
$contador = 1;
while ($contador <= 100){
echo “<P>O valor da variável contador é ”.$contador.“!</P>”;
$contador++;
}
?>
</BODY>
</HTML>

FOR
A estrutura FOR é montada da seguinte forma:

for(inicialização; condição; operação){


<comando(s)>;
}
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 -->


<HTML>
<HEAD><TITLE>Exemplo com Estrutura de Repetição FOR</TITLE></HEAD>
<BODY>
<?php
for($contador = 1; $contador <= 100; $contador++){
echo “<P>O valor da variável contador é ”.$contador.“!</P>”;
}
?>
</BODY>
</HTML>
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 Exemplo de valores


Descrição
formação 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
Uma representação textual de um mês, tal como janeiro ou
F 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)
1 ano bissexto, 0 ano não
L Se ano é bissexto.
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
0 (para Domingo) a 6 (para
w Representação numérica do dia da semana
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 -->


<HTML>
<HEAD><TITLE>Exemplo com o comando DATE</TITLE></HEAD>
<BODY>
<?php
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>";
?>
</BODY>
</HTML>
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.

Arquivo1
include(Arquivo2)
Continuação do Arquivo1

Veja o exemplo:

<!-- Nome do arquivo: arquivo1.php -->


<HTML>
<HEAD><TITLE>Exemplo com os comandos INCLUDE e REQUIRE</TITLE></HEAD>
<BODY>
<?php
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>";
?>
</BODY>
</HTML>

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 |-->


<HTML>
<HEAD><TITLE>Exemplo com Métodos GET e POST</TITLE></HEAD>
<BODY>

<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>

</BODY>
</HTML>

<!--| Arquivo: recebeMetodo -->


<?php
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);

A variável $dados será um array, iniciando o índice por 0 (zero) e seguindo a ordem dos campos da
tabela.

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 sessão.
Vamos buscar esses dados a partir de um formulário fictício, via POST.

<?php
//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 


<HTML>
<HEAD>
<TITLE> Login </TITLE>
</HEAD>
<BODY>
<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>
</BODY>
</HTML>

<!-- Arquivo: autentica.php -->


<?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_row($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 -->


<?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 -->


<?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 -->


<?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 -->


<HTML>
<HEAD>
<TITLE> New Document </TITLE>
</HEAD>

<BODY>
<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>
<?php
$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>";
}
?>
</BODY>
</HTML>

<!-- Arquivo: form.php -->


<HTML>
<HEAD>
<TITLE> Upload de Arquivos </TITLE>
</HEAD>
<BODY>
<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>
</BODY>
</HTML>

<!-- Arquivo: upload.php -->


<?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>";
?>

Você também pode gostar