Escolar Documentos
Profissional Documentos
Cultura Documentos
Licena de Uso
Este trabalho est licenciado sob uma Licena Creative Commons Atribuio-Vedada a Criao de Obras
Derivadas 2.5 Brasil. Para ver uma cpia desta licena, visite http://creativecommons.org/licenses/bynd/2.5/br/ ou envie uma carta para Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305,
USA.
Este material no pode ser alterado. Para maiores informaes envie um e-mail para
cmajer@uol.com.br ou cmajer@ig.com.br.
PHP
Introduo
Um SCRIPT um conjunto de instrues ou comandos, tambm chamado de programa, baseados numa
determinada linguagem (PHP, Javascript, etc), que executam certas operaes.
Agindo geralmente de forma automtica, estes programas caracterizam-se por sua necessidade de
interpretao por um software (em geral um servidor web ou navegador), diferentemente dos programas
que precisam ser compilados e ligados (link-editados). Conforme o tipo de script, ele pode ser executado no
servidor ou no micro cliente.
Pgina
Seu navegador no entende PHP. Apenas HTML, algumas linguagens de script (Javascript, Vbscript,
etc) e CSS
Enquanto as pginas HTML provm limitada funcionalidade, a insero do PHP expande os limites desta
tecnologia, trazendo grande nmero de vantagens e amadurecendo o desenvolvimento atravs de
programao dinmica.
O PHP tem evoludo constantemente e traz cada vez mais facilidades no desenvolvimento de sites.
Atualmente, diversas bibliotecas foram disponibilizadas ao PHP contribuindo para enriquecer esta linguagem.
PHP muito utilizado para manipulao de banco de dados, processamento dinmico, manipulao de
imagens, dentre outras possibilidades.
Funcionamento
O desenvolvedor pode criar uma pgina feita toda em PHP ou mescl-la com HTML, ou seja, inserindo
comandos dentro do HTML.
A linguagem PHP pode ento ser embutida dentro do cdigo HTML e o servidor PHP processa apenas o
cdigo PHP (ignorando o HTML), inserindo o resultado deste processamento no lugar dos comandos PHP
(em formato HTML), de forma a gerar uma pgina HTML final que ser enviada ao cliente (navegador do
usurio).
Esta pgina final a mesma dos comandos em HTML existentes anteriormente junto com o resultado
processado pelo servidor PHP.
Extrapolando Limites
Certos limites do HTML podem ser claramente verificados: Imagine a quantidade de trabalho necessria na criao das pginas de um grande conjunto de
informaes, como por exemplo, um catlogo de peas de uma grande empresa.
Alm de trabalhoso, tambm muito difcil controlar a manuteno deste conjunto de pginas,
especialmente quando existem diferentes regras de negcio aplicadas na exibio das pginas
Seria muito complexo efetuar uma mudana de contextos (exemplo: conforme login de usurio, site
apresentaria um conjunto de informaes para cliente e outro para administrador)
Formas de Utilizao
Um comando ou conjunto de comandos PHP deve ser inserido dentro das seguintes marcas especficas:-
Pgina
?>.
PHP e HTML
Uma vez criada, a pgina PHP armazenada no SERVIDOR. A pgina processada (interpretada) no
Servidor e o cdigo resultante em HTML enviado ao navegador.
O navegador recebe apenas o resultado do cdigo interpretado, ou seja, apenas aquilo que ele consegue
entender (HTML, Javascript, CSS, etc).
Exemplo:<html>
<head>
<title>Primeira Pagina PHP</title>
</head>
<body>
<?php
echo "Isto ser inserido na pgina HTML.";
?>
</body>
</html>
Ao encontrar a marca <?php, o PHP ir processar tudo at encontrar um ponto e virgula
o processamento PHP.
; , que finaliza
A marca de fechamento ?> opcional. Quando esta marca no inserida, o desenvolvedor pode incluir
outros arquivos (include/require) no cdigo PHP.
Outra forma de se iniciar um cdigo PHP atravs de sua forma curta
inserir o texto
php.
Inserindo Comentrios
Comentar o cdigo uma atividade que todo desenvolvedor deve seguir. Para isto, o PHP prov a
possibilidade de comentrio por linha ou por bloco.
Pgina
<?
# Esta linha um comentrio
echo 'Teste';
?>
Apenas o string 'Teste' ir aparecer.
Tipos de Dados
Segue uma relao de alguns tipos de dados disponveis pelo PHP:-
Tipo
Domnio
Descrio
Booleano
TRUE ou FALSE
Inteiro /
Longo
Conjunto Z
{..,-1, 0 , 1 , ..}
Em geral, 32 bits
(aproximadamente
2 bilhes)
Ponto
Flutuante
Mximo de
~1.8e308 com
preciso de 14
decimais digitais
(nmero de 64 bits
no formato IEEE).
String
Cadeia de
String um conjunto de caracteres geralmente delimitados por
caracteres limitada apstrofos ou aspas.
pela memria.
* Se uma string for delimitada por aspas, voc conseguir
expandir o valor de uma varivel (desde que o PHP consiga
identificar corretamente esta varivel) ou caractere de escape.
Array
Vetor ou Matriz
contendo de 0 a
muitos elementos
Variveis
A criao de variveis no PHP segue a seguinte regra: Todas as variveis devem ser precedidas do smbolo
$ (Dlar ou cifro). Em seguida deve vir uma letra ou o caractere de sublinhado, para em seguida qualquer
Pgina
$ativo =FALSE;
$valor=1; // Nmero Inteiro
$valor2=-2; # Outro nmero inteiro
$valor=45.12; // Este um nmero de ponto flutuante
$nome='Carlos';
$texto='Isto um string';
$1teste=123; // Errado
<html>
<head>
<title>Teste de Formulrio</title>
</head>
<body>
<form name="f1" method="get" action="programa.php">
Nome: <input type="text" name="nome"> <br />
<input type="submit" value="Enviar">
</form>
</body>
</html>
Pgina
Pgina
$_POST["<nome do objeto>"]
$_GET["<nome do objeto >"]
Exemplo:-
echo $_GET["cidade"];
$nome = $_POST["nome"];
Algo muito comum em PHP criar variveis que iro armazenar os valores advindos dos objetos de
formulrios PHP. Exemplo:-
$nome = $_POST["nome_cliente"];
$telefone = "(" . $_POST["ddd"] . ") " . $_POST["telefone"];
Pgina
Pgina
$tam=sizeof($_GET['carros']) ;
for($n=0 ; $n< $tam ; $n++)
{
echo $_GET['carros'][$n] . '<br>';
Pgina
if (move_uploaded_file($_FILES['arquivo']['tmp_name'], 'uploads/'
. _FILES['arquivo']['name']))
echo "Arquivo ". basename( $_FILES['arquivo']['name']). "
recebido com sucesso";
else
echo "Houve algum problema no recebimento do arquivo";
Para restringir o tipo de arquivo a ser recebido, verifique o elemento type da matriz. Exemplo:-
if ($_FILES["arquivo"]["type"] != 'image/jpeg')
echo "Tipo invlido de arquivo";
A pasta destino do arquivo j dever existir.
Contedo do Arquivo TipoArquivo.php:-
<body>
<h1>PHP - Recebe Arquivo</h1>
<?php
if ($_FILES["arquivo"]["error"]>0)
echo "Erro: " . $_FILES["arquivo"]["error"] . "<br>";
else
{
echo "Nome do Arquivo: "
.
$_FILES["arquivo"]["name"] . "<br>";
echo "Tamanho: "
.
$_FILES["arquivo"]["size"] . "<br>";
echo "Tipo: "
.
$_FILES["arquivo"]["type"] . "<br>";
echo "Pasta de Armazenamento:"
.
$_FILES["arquivo"]["tmp_name"] . "<br>";
// Parte 2
$pasta_destino = "uploads/";
$pasta_destino .= $_FILES["arquivo"]["name"];
if (move_uploaded_file($_FILES["arquivo"]["tmp_name"] ,
$pasta_destino))
echo "Arquivo <strong>" . $_FILES["arquivo"]["name"]
. "</strong> recebido com sucesso";
else
echo "Ocorreu algum erro no recebimento do Arquivo "
. $_FILES["arquivo"]["name"];
}
?>
</body>
Configurando o PHP.INI
Algumas configuraes do PHP.INI so importantes para que o upload de arquivos funcione de forma
adequada.
Pgina
10
file_uploads = On
Outra o nome do diretrio temporrio que armazenar os arquivos recebidos (se no for especificado
utilizar o padro do sistema):-
upload_tmp_dir = "${path}\tmp\"
O tamanho mximo de um arquivo pode ser definido pela diretiva abaixo:-
upload_max_filesize = 2M
Caso deseje precaver o usurio de enviar um arquivo de tamanho maior que o
desejado, o desenvolvedor pode inserir um campo de nome MAX_FILE_SIZE definindo
em seu atributo value o tamanho mximo de um arquivo. Exemplo:-
Pgina
11
Arrays
Array o nome ingls para um tipo de objeto composto por uma coleo de dados. Esta coleo de dados,
que pode ser de uma dimenso (vetor) ou de vrias dimenses (matrizes), pode conter diferentes tipos de
dados.
Irei utilizar a denominao matriz (es) para referenciar este tipo de objeto.
Criando Matrizes
Uma das formas de se cri-las atravs da funo array(). Exemplo:-
<?php
$frutas = array ('a' => 'Abacate', 'b' =>'Banana','c' =>
'Carambola');
print_r ($frutas);
?>
Resultado:Array ( [a] => Abacate [b] => Banana [c] => Carambola )
Podemos definir um ndice inicial para insero de itens numa matriz.
Exemplo de Meses:-
<?php
$meses = array(7 => 'Janeiro', 'Fevereiro', 'Maro', 'Abril',
'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro',
'Novembro', 'Dezembro');
print_r($meses);
?>
Pgina
12
<?php
$frutas = array ('c' => 'Carambola', 'b' =>'Banana', 'a' =>
array ('Abacate', 'Abacaxi', 'Ameixa'));
print_r ($frutas);
?>
Resultado:Array ( [c] => Carambola [b] => Banana [a] => Array ( [0] => Abacate [1] =>
Abacaxi [2] => Ameixa ) )
Alguns exemplos:-
Arquivo Carros.php
Matriz 1 - Carros
<html>
<head>
<title>Matriz de Carros</title>
</head>
<body>
<?php
$carros= array("Polo", "Fiesta","Mercedes");
print_r($carros);
?>
</body>
</html>
Arquivo Frutas.php
<html>
<head>
<title>Matriz de Frutas</title>
</head>
<body>
<?php
$frutas = array ('a' => 'Abacate', 'b' =>'Banana','c' =>
'Carambola');
print_r ($frutas);
?>
</body>
</html>
Arquivo Frutas2.php
<html>
<head>
Pgina
13
<title>Matriz 2</title>
</head>
<body>
<?php
$frutas = array ('c' => 'Carambola', 'b' =>'Banana', 'a' =>
array ('Abacate', 'Abacaxi', 'Ameixa'));
print_r ($frutas);
?>
</body>
</html>
Arquivo Deptos.php
<html>
<head>
<title>Matriz de Departamentos e Empregados</title>
</head>
<body>
<?php
$departamento[0]
$departamento[1]
$departamento[2]
$departamento[3]
=
=
=
=
"financeiro";
"producao";
"rh";
"comercial";
$empregados["financeiro"] = 5;
$empregados["producao"] = 32;
$empregados["rh"] = 3;
$empregados["comercial"] = 15;
print "Os departamentos da empresa so:-<br>";
foreach ($departamento as $d)
{
echo $d.'<br>';
}
?>
</body>
</html>
Arquivo Deptos2.php
<html>
<head>
<title>Matriz 2 de Departamentos e Empregados</title>
</head>
Pgina
14
<body>
<?php
$departamento[0]
$departamento[1]
$departamento[2]
$departamento[3]
=
=
=
=
"financeiro";
"producao";
"rh";
"comercial";
sort($departamento);
print "Os departamentos da empresa em ordem alfabtica so:-<br>";
foreach ($departamento as $d)
{
echo $d.'<br>';
}
rsort($departamento);
print "<br>Os departamentos da empresa em ordem reversa so:<br>";
foreach ($departamento as $d)
{
echo $d.'<br>';
}
?>
</body>
</html>
Arquivo Deptos3.php
<html>
<head>
<title>Matriz 3 de Departamentos e Empregados</title>
</head>
<body>
<?php
$departamento['C']
$departamento['D']
$departamento['A']
$departamento['B']
=
=
=
=
"financeiro (C)";
"producao (D)";
"rh (A)" ;
"comercial (B)";
sort($departamento);
print "Os departamentos da empresa em ordem alfabtica so:-<br>";
foreach ($departamento as $d)
{
echo $d.'<br>';
Pgina
15
}
arsort($departamento);
print "<br>Os departamentos da empresa em ordem da chave so:<br>";
foreach ($departamento as $d)
{
echo $d.'<br>';
}
?>
</body>
</html>
Arquivo Deptos4.php
<html>
<head>
<title>Matriz 4 de Departamentos e Empregados</title>
</head>
<body>
<?php
$departamento[0]
$departamento[1]
$departamento[2]
$departamento[3]
=
=
=
=
"financeiro";
"producao";
"rh";
"comercial";
$empregados["financeiro"] = 5;
$empregados["producao"] = 32;
$empregados["rh"] = 3;
$empregados["comercial"] = 15;
sort($departamento);
print "Os departamentos da empresa em ordem alfabtica so:-<br>";
for ($n=0;$n<sizeof($departamento);$n++)
{
echo 'Departamento ' . $departamento[$n].' tem ' .
$empregados[$n] . ' empregados <br>';
}
?>
</body>
</html>
Pgina
16
Arquivo Deptos5.php
<html>
<head>
<title>Matriz 5 de Departamentos e Empregados</title>
</head>
<body>
<?php
$departamento[0]
$departamento[1]
$departamento[2]
$departamento[3]
=
=
=
=
$empregados[0]
$empregados[1]
$empregados[2]
$empregados[3]
5;
32;
3;
15;
=
=
=
=
"financeiro";
"producao";
"rh";
"comercial";
sort($departamento);
print "Os departamentos e empregadosso:-<br>";
for ($n=0;$n<sizeof($departamento);$n++)
{
echo 'Departamento ' . $departamento[$n] .' tem ' .
$empregados[$n] . ' empregados <br>';
}
?>
</body>
</html>
Arquivo Meses.php
<html>
<head>
<title>Matriz de Meses</title>
</head>
<body>
<?php
$meses = array(7 => 'Janeiro', 'Fevereiro', 'Maro', 'Abril',
'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro',
'Novembro', 'Dezembro');
print_r($meses);
?>
</body>
Pgina
17
</html>
PHP e MYSQL
O PHP contm funes para acesso a diversos bancos de dados.
O MYSQL um dos bancos de dados mais utilizado por quem desenvolve PHP.
Irei relacionar as funes mais utilizadas nesta parte desta apostila.
Conectando a um servidor
O momento inicial e diramos primeiro passo para se recuperar informaes de um banco de dados MYSQL
a conexo com o servidor MYSQL.
Quando um usurio acessa o MYSQL, atravs de seu prompt em tela MS-DOS, ele informa uma linha de
comando similar seguinte:C:\MYSQL\BIN> mysql u usurio root p senha <ENTER>
Onde usurio a identificao de um usurio vlido no MYSQL e senha a senha deste usurio.
Logo aps uma instalao padro, o usurio root criado, podendo sua senha no ser cadastrada.
Exemplo:C:\MYSQL\BIN> mysql u root <ENTER>
O PHP permite o acesso ao MYSQL atravs de uma funo especfica para este fim.
Funo mysql_connect
Prottipo
$conexao = mysql_connect("localhost","root","");
Retorno
Esta funo retorna um objeto de conexo com o servidor ou FALSO caso no consiga conectar no servidor
informado.
Em caso de problemas ela seta o controle de erro interno do MYSQL que pode ser acessado pela funo
mysql_error() (explicado adiante)
Detalhe
No exemplo acima, esta funo conecta a mquina cliente ao Servidor MYSQL, de nome localhost, utilizando
a identificao de usurio root, com senha em branco.
Pgina
18
Funo mysql_select_db
Prottipo
$banco = mysql_select_db("sistema",$conexao);
Retorno
Esta funo retorna um objeto de conexo com o Banco de Dados informado ou FALSO caso no consiga
conectar no banco de dados informado.
Em caso de problemas ela seta o controle de erro interno do MYSQL que pode ser acessado pela funo
mysql_error() (explicado abaixo)
Detalhe
No exemplo acima, esta funo conecta a mquina cliente ao Banco de Dados de nome sistema, que existe
no Servidor informado por $conexao.
Caso o usurio no informe o objeto de conexo ($conexao), o MYSQL utilizar a ltima conexo aberta com
o servidor (neste caso, com o localhost).
O resultado da conexo passado ao objeto de nome $banco que tem seu valor setado em FALSO caso no
se consiga executar a conexo.
Este o segundo passo quando se deseja recuperar informaes de um banco de dados do MYSQL.
Voc tambm pode utilizar este comando e variar apenas o Servidor de Conexo, de forma a conectar em
mais do que um servidor, para troca de dados entre bancos de dados, por exemplo.
Funo mysql_query
Prottipo
Pgina
19
Funo mysql_num_rows
Prottipo
$numeroLinhas = mysql_num_rows($resultado);
1 Parmetro (Obrigatrio): Objeto de Resultado de Consulta MYSQL
Retorno
Esta funo retorna o nmero de linhas (registros) existente dentro de um objeto que armazena o resultado
de uma consulta MYSQL.
Em caso de problemas ela seta o controle de erro interno do MYSQL que pode ser acessado pela funo
mysql_error() (explicado adiante)
Detalhe
Caso o comando de seleo retorne 0 (zero) porque no existem registros que satisfaam STRING de
pesquisa SQL informada.
Este o quarto passo quando se deseja recuperar informaes de um banco de dados do MYSQL.
Pgina
20
Funo mysql_result
Prottipo
$valor = mysql_result($resultado,0,'senha');
Retorno
Esta funo retorna o contedo da linha/campo informado.
Como explicado no exemplo anterior, temos um objeto de nome $resultado que contm o que foi lido da
tabela usuarios. A funo mysql_result nos permite ler o contedo das linhas/registros desta tabela.
Para isto, devemos informar a linha (comea por zero) e o campo desejado. Exemplo:Olhe novamente a tabela usurios:[id varchar(40)] [senha varchar(40)] [nome varchar(50)]
[Majer] [123] [Carlos Majer]
[Ana] [abc] [Ana Travassos]
Caso queiramos ler o campo nome, do segundo registro/linha, devemos escrever:-
$valor = mysql_result($resultado,1,'nome');
Utilizei $valor como nome de varivel para armazenar o dado resultante (que "Ana Travassos"). Poderia
ter usado outro nome de varivel.
Tive que informar 1, no segundo parmetro, pois a primeira linha a linha 0, e a segunda linha a linha 1.
Por fim, informei o campo/atributo "nome" pois o que Eu queria.
Se tivesse feito assim:-
$identificacao = mysql_result($resultado,0,'id');
O valor de $identificacao seria "Majer".
Login de Usurio
Abaixo disponibilizo um exemplo completo de funcionamento de Identificao de Usurio.
A tela abaixo a loginBasico.htm, que basicamente uma pgina contendo os objetos: Formulrio cujo atributo action aponta para loginBasico.php
Caixa de texto identificada como id, que ser utilizada para digitao da identificao do usurio
Caixa de texto identificada como senha, que ser utilizada para digitao da senha do usurio
Boto de submisso
Detalhe
Nenhum tipo de consistncia est sendo feito nesta pgina.
Pgina
21
<html>
<head>
<title>rea de Login</title>
</head>
<body>
<form name="frmLogin" method="post" action="loginBasico.php">
<table width="300" border="1" bgcolor="#FFD7AE">
<tr>
<td bgcolor="black" align="center"><font
color="white"><strong>ACESSO À AREA
RESTRITA</strong></font></td>
</tr>
<tr>
<td>
<p>
<strong>Área exclusiva para
usuários cadastrados.</strong>
</p>
<p> Usuário<br>
<input type="text" name="id" id="id">
<br> <br>
Senha<br>
<input type="password" name="senha" id="senha">
<br><br>
<input type="submit" name="Submit" value="OK">
</p>
</td>
</tr>
</table>
</form>
</body>
</html>
Pgina
22
<html>
<head>
<title>PHP - Login do Usurio</title>
</head>
<body>
<?php
// 1o. Passo - verificar se o usurio enviou ID e SENHA
if($_POST['id']=='' || $_POST['senha']=='')
{
echo '<script> history.go(-1); alert("Informe Usurio e
Senha !");</script>';
}
// 2o. Passo - vamos criar uma conexo com o MYSQL
$conn = mysql_connect("localhost","root","");
// Seno conseguiu conectar, a varivel $conn estar setada
como falsa
if (!$conn)
die("Erro na conexo com o servidor localhost -->" .
mysql_error());
// 3o. Passo - vamos selecionar o banco de dados desejado,
// neste caso sistema, usando o objeto de conexo $conn
// criado acima
$db = mysql_select_db("sistema",$conn);
// Seno conseguiu selecionar o banco de dados, a varivel
Pgina
23
Pgina
24
// die($comandoSQL);
//
//
//
//
Agora, a varivel est com o seguinte contedo:SELECT * FROM usuarios WHERE login='CARLOS'
Estamos com a varivel $comandoSQL do jeito
que precisvamos
if (!$resultado)
die("Execuo de consulta gerou o seguinte erro no MYSQL
-->" . mysql_error());
//
//
//
//
//
if(mysql_num_rows($resultado)==0)
{
echo '<script> history.go(-1); alert("ID no
encontrado!");</script>';
}
// 5.2 - Mas a senha tambm pode estar incorreta, certo ?
Pgina
25
// Vamos checar ?
//
//
//
//
//
//
//
//
//
//
//
//
Pgina
26
// WHERE login='Carlos'
// A nica coisa diferente aqui a data do ltimo acesso do
// usurio, que queremos armazenar no campo ultAcesso sempre
// que o usurio acessar o sistema
//
//
//
//
//
//
//
//
Pgina
27
<br> <br>
No. de Entradas:<br>
<?php
echo mysql_result($resultado,0,'numAcessos');
?>
<br><br>
Seja bem vindo(a) rea reservada.
</p>
</body>
</html>
Pgina
28