Upload
phungbao
View
253
Download
0
Embed Size (px)
Citation preview
Universidade Guarulhos Página 1
APOSTILA DE LINGUAGEM DE PROGRAMAÇÃO IV
CIÊNCIA DA COMPUTAÇÃO
PROF. ERWIN ALEXANDER UHLMANN
Universidade Guarulhos Página 2
Agradecimentos
Agradeço a todos os alunos que com suas contribuições me
ajudaram a criar este pequeno trabalho e à UnG que me
abriu esta oportunidade.
Universidade Guarulhos Página 3
Conteúdo Agradecimentos ................................................................................................................................................................... 2
Objetivo ................................................................................................................................................................................. 4
Linguagens de estudo......................................................................................................................................................... 4
PHP .................................................................................................................................................................................... 4
O que é o PHP? ......................................................................................................................................................... 4
SQL .................................................................................................................................................................................... 4
Pré-requisitos .................................................................................................................................................................. 4
Softwares .......................................................................................................................................................................... 6
PHP Editor .................................................................................................................................................................. 6
Kompozer .................................................................................................................................................................... 6
Microsoft Expression Web 3 .................................................................................................................................. 7
Adobe Dreamweaver CS4 ....................................................................................................................................... 8
Bloco de Notas ........................................................................................................................................................... 9
O QUE É UM APLICATIVO PARA WEB? ............................................................................................................... 9
COMO FUNCIONA UM APLICATIVO PARA A WEB .......................................................................................... 9
Aula 2 .................................................................................................................................................................................... 14
Consultas ......................................................................................................................................................................... 14
Inserção de dados.......................................................................................................................................................... 14
Aula 3 .................................................................................................................................................................................... 17
Exclusão de dados ......................................................................................................................................................... 17
Método do while. ..................................................................................................................................................... 17
Método for. ................................................................................................................................................................ 19
Aula 4 .................................................................................................................................................................................... 21
Página do usuário ......................................................................................................................................................... 21
Exclusão de registros .................................................................................................................................................... 21
AULA 5 ................................................................................................................................................................................ 24
Edição de dados ............................................................................................................................................................ 24
AULA 6 ................................................................................................................................................................................ 25
Login ................................................................................................................................................................................ 25
Ranqueamento do menu ............................................................................................................................................ 25
AULA 7 ................................................................................................................................................................................ 26
Upload de arquivos ...................................................................................................................................................... 26
AULA 8 ................................................................................................................................................................................ 27
Login, logout e proteção de sessão ......................................................................................................................... 27
Página index.php (login.php) ............................................................................................................................... 27
valida_sessao.php ..................................................................................................................................................... 29
Universidade Guarulhos Página 4
logout.php ................................................................................................................................................................. 30
BIBLIOGRAFIA: .................................................................................................................................................................. 34
BÁSICA: .......................................................................................................................................................................... 34
SUPLEMENTAR: ........................................................................................................................................................... 34
PERIÓDICOS: ................................................................................................................................................................ 34
Objetivo Desenvolver um site dinâmico com uso de Banco de Dados que atenda a qualquer situação.
Linguagens de estudo PHP e SQL.
PHP
O que é o PHP?
PHP originalmente significa “Personal Home Page Tools” ou também conhecido como PHP/FI com o
mesmo significado porém “/Forms Interpreter” e evoluiu para “Hypertext Preprocessor”.
Foi criado em 1994 por Rasmus Lerdorf, com código aberto, por tanto gratuito.
Em 1997 mais de 50.000 só no Estados Unidos já utilizavam esta tecnologia.
Atualmente contamos com a 5ª versão que foi lançada em 2007.
Por que e o quê? Rápido, robusto, cross-plataform, ou seja, funciona em qualquer sistema operacional, estável e gratuito!
O que ele pode fazer? Praticamente tudo o que uma linguagem de computação pode fazer.
SQL SQL é uma linguagem que vem do acrônimo inglês Structured Query Laguage, ou seja, Linguagem de
Consulta Estruturada.
Essa linguagem é utilizada por diversos Sistemas Gerenciadores de Banco de Dados (SGBD).
Um SGBD é importante por permitir a fácil interação com o Banco de Dados (BD).
Neste curso utilizaremos o SGBD MySQL, que é gratuito, pequeno, rápido, robusto e tem a maior
interação com o PHP.
Pré-requisitos Antes começar a trabalhar com o PHP, são necessários alguns passos.
Primeiro você precisará do programa PHP que fará a linguagem ser interpretada pelo computador e um
servidor.
Mas existem programas que já trazem estes programas embutidos e mais alguns.
Universidade Guarulhos Página 5
O Vertrigo será o utilizado ao longo do curso, mas exitem outros, como é o caso do XAMPP que pode
até ser instalado em um PEN DRIVE.
Vá até o site do Vertrigo e baixe a versão mais recente.
http://vertrigo.sourceforge.net/
Para instalar é fácil e basta seguir os passos recomendados pelo programa.
Inicie sempre o Vertrigo, antes de começar a trabalhar com o PHP. Caso ele não consiga iniciar e
informe problemas com a porta 80, no Painel de Controle do Windows, em Ferramentas
Administrativas, e em seguida em Serviços, interrompa os programas que utilizem esta porta.
Na maioria dos casos são os softwares de comunicação como o Messenger, Skype, entre outros e
também o servidor ISS, caso o tenha.Este modelo de relatório está completo com estilos para um
sumário e um índice.
Também é importante lembrar que nos sistemas operacionais Windows Vista e Windows 7 (Seven), ao
instalar é necessário aplicar as permissões de segurança à pasta, em Propriedades, na guia Segurança.
Veja na figura 1.
Figura 1 - Propriedades de pastas do Windows
Universidade Guarulhos Página 6
Softwares Além é claro do servidor Web, como o Vertrigo, Xampp, Easy PHP e outros, podemos trabalhar com os
seguintes editores de PHP:
PHP Editor
Nota: 7,5.
O PHP Editor é um dos melhores editores de PHP em modo texto, com assistente de programação, em
Português brasileiro, grátis, estável e com apoio ao HTML e ao Javascript também. Veja o software na
figura 2.
Figura 2 - PHP Editor
Faça o Download do PHP Editor aqui.
Kompozer
Nota: 6.0
O Kompozer é um editor do tipo WYSIWYG (What You See Is What You Get), ou seja, ele é visual, o
que você programa é o que aparecerá. Desenvolvido pela Mozilla, é gratuito, pequeno, estável e com
suporte ao HTML e CSS. Aceita a programação PHP e Javascript, porém não tem suporte. Trabalhar em
conjunto com o PHP Editor é recomendável. Veja sua interface na figura 3.
Universidade Guarulhos Página 7
Figura 3 - Kompozer
Para fazer o download do Kompozer, clique aqui.
Microsoft Expression Web 3
Nota: 8,5.
A Microsoft vem tentando e conseguindo concorrer com a Adobe, proprietária do Dreamweaver. Com o
Expression Web, ou seu estúdio completo, a Microsoft progrediu muito seja na qualidade do software
como com seu apoio a diversas linguagens como PHP, Javascript, ASP, HTML, XML, entre outras.
Interface medianamente intuitiva, mas de fácil adaptação para quem tem conhecimento dos recursos da
Web, também sendo WYSIWYG.
Saiba mais sobre o Expression Studio em:
http://www.microsoft.com/portugal/expression/features/default.aspx?key=studio
Para os alunos regularmente matriculados, a Universidade Guarulhos mantém um acordo com a
Microsoft que fornece gratuitamente alguns softwares, entre eles o Expression Web, Saiba mais em:
http://www.ung.br/servicos_softwares.php
Veja a interface do Expression Web na figura 4.
Universidade Guarulhos Página 8
Figura 4 - Expression web
Adobe Dreamweaver CS4
Nota: 10,0.
O Dreamweaver é o mais importante e famoso software de edição de páginas Web WYSIWYG. Com um
vasto apoio a diversas linguagens, dispensa muitas apresentações. Complexo e com interface
medianamente intuitiva, mas de fácil manuseio para quem conhece o mundo Web.
Para teste, pode ser baixado diretamente do site da Adobe. www.adobe.com.br
Veja a Interface do Dreamweaver CS3 na figura 5.
Universidade Guarulhos Página 9
Figura 5 - Dreamweaver
Bloco de Notas
Nota: 2,5.
Fácil, mas sem nenhum suporte à nenhuma linguagem o Bloco de Notas permite escrever qualquer
programa. Disponível no Windows nativamente.
Ao longo do curso vamos estudar utilizando principalmente o PHP Editor e o Dreamweaver, que serão
identificados com o PE para PHP Editor e DW para o Dreamweaver.
Ainda no campo dos softwares, é importante também instalar alguns navegadores, como o Firefox, da
Mozilla, o Opera e o Safari da Apple, pois alguns recursos aqui apresentados podem se comportar de
forma diversa em cada um dos navegadores.
O QUE É UM APLICATIVO PARA WEB? Um aplicativo para a web é um site que contém páginas armazenadas em um servidor com conteúdo
parcialmente ou totalmente indeterminado. O conteúdo final de uma página será determinado somente
quando o usuário solicitar uma página do servidor web. Uma vez que o conteúdo final da página varia
de acordo com cada pedido de ação do usuário, este tipo de página é chamado página dinâmica.
Os aplicativos para a web são criados para solucionar diversos desafios e problemas. Esta seção
descreve usos comuns de aplicativos para a web e fornece um exemplo simples.
COMO FUNCIONA UM APLICATIVO PARA A WEB Um aplicativo para a Web é um conjunto de páginas normais e dinâmicas. Uma página normal é um
página que não é modificada quando solicitada pelo usuário: o servidor web envia a página ao
navegador que a solicitou sem modificá-la. Em contraste, uma página da web dinâmica é modificada
pelo servidor antes de ser enviada ao navegador. Chama-se página dinâmica devido à sua natureza
variável.
Universidade Guarulhos Página 10
Por exemplo: é possível criar uma página para exibir resultados do programa de boa forma e deixar
certas informações (nome do funcionário e resultados) a serem determinadas quando a página for
solicitada por um funcionário.
Processamento de páginas estáticas.
Figura 6 - Processamento de páginas estáticas.
Figura 7 - Processamento de páginas dinâmicas
Vamos começar com a criação do BD, para tanto inicie o sua suíte php preferida. Ao longo deste curso
utilizaremos telas e exemplos com uso do Vertrigo, mas não se preocupe, como são apenas programas
de interação com os programas base como PHP, MySQL e PhpMyAdmin, pouco mudará.
Universidade Guarulhos Página 11
Abra o PhpMyAdmin, o usuário é root e a senha é vertrigo, por padrão, caso você useo XAMPP o
usuário é root e a senha é em branco e no caso de se utilizar o SQLite o usuário é admin e a senha
admin.
Vamos criar um BD com o criativo nome ung_lpiv. Note que escrevi com letras minúsculas.
Figura 8 - Iniciar o PhpMyAdmin
Universidade Guarulhos Página 12
Figura 9 - Interface do PhpMyAdmin
A princípio vamos criar apenas uma tabela chamada usuarios e com os seguintes campos:
usu_id - int(11) – auto_increment – key
usu_nome – varchar(50)
usu_email – varchar(50)
usu_senha - varchar(32)
usu_foto – varchar(50)
Agora vamos conectar o PHP ao MySQL.
Abra seu editor PHP e escreva:
<?php
//escolha a qual BD se conectar
//na ordem, onde está o BD, o login e a senha
$conexao = mysql_pconnect("localhost", "root", "vertrigo");
//escolha o BD
mysql_select_db("ung_lpiv");
?>
Note que você pode utilizar a função mysql_connect para realizar uma ação pontual ou a função
mysql_pconnect que permitirá realizar diversas ações, porém deverá, ao final, fecahr a conexão,
pois a diferença é que ela é persistente.
Poderemos fazer essa codificação em todas as páginas, no entanto, se um dia modificarmos o BD ou o
endereço, deveremos mudar todas as páginas, para isso vamos utilizar a função include:
<?php include("conecta.php"); ?>
Para fechar utilize:
<?php mysql_close($conexao); ?>
Ao final da estrutura </html>.
Universidade Guarulhos Página 13
Universidade Guarulhos Página 14
Aula 2
Consultas Para realizar consultas no BD (MySQL) com o PHP, vamos utilizar o código:
<?php
$dados = mysql_query('SELECT * FROM usuarios');
$linhas = mysql_num_rows ($dados);
echo "A tabela usuários tem $linhas linhas.<br />";
$colunas = mysql_num_fields ($dados);
echo "A tabela usuários tem $colunas colunas.<br />";
$nome_col0 = mysql_field_name($dados, 0);
echo "O noma da primeira coluna é <strong>$nome_col0 </strong>, ela é
identificada pelo índice 0.<br />";
$nome_col1 = mysql_field_name($dados, 1);
echo "O nome da segunda coluna é <strong>$nome_col1 </strong>, ela é
identificada pelo índice 1.<br />";
?>
A linha $dados = mysql_query('SELECT * FROM usuarios'); realiza a função de fazer
uma consulta (mysql_query) e a instrução SQL é 'SELECT * FROM usuarios'.
Ao armazenar a consulta na variável $dados, podemos utilizá-la em diversas partes do programa.
Na linha $linhas = mysql_num_rows ($dados); a função mysql_num_rows retorna
quantas linhas existem no BD, se valendo dos dados armazenados na variável $dados, criada na linha
anterior.
mysql_num_fields, número de campos, mysql_field_name, o nome do campo e neste caso,
os parâmetros são, $dados criado no início e a coluna desejada, 0, 1, 2, etc.
Agora vamos consultar os dados do BD.
<?php
$usu_id = mysql_result($dados, 0, "usu_id");
echo "<br /> O Id do primeiro usuário é: $usu_id<br />";
?>
A função mysql_result é a responsável pela consulta. Os parâmetros são:
$dados – criado no início;
0 – o registro, a linha;
usu_id – o campo, coluna.
Exercício:
Crie o BD, a conexão, a página índex e retorne todos os dados do registro 0.
Inserção de dados Bem, consultar não é lá tão interessante, nem ao menos desafiador. Vamos inserir dados no BD.
Para inserir dados no BD é simples. Crie um formulário na página gravar.php.
<form method="POST">
<input type="text" name="usu_nome" id="usu_nome" size="20" />
Universidade Guarulhos Página 15
<input type="submit" name="Gravar" id="Gravar" value="Submit" />
</form>
Crie um link na página índex para a página gravar.php desta forma:
<a href="gravar.php">Gravar</a>
E da mesma forma para a index.
<a href="index.php">Index</a>
É claro que temos de incluir a programação para conexão ao BD e seu fechamento.
Vamos criar a programação, antes do <html> para receber os dados do formulário, assim:
$usu_nome = $_POST['usu_nome'];
$usu_email = $_POST['usu_email'];
$usu_senha = $_POST['usu_senha'];
$usu_foto = $_POST['usu_foto'];
Para gravar, escreva:
mysql_query("INSERT INTO usuarios (usu_nome, usu_email, usu_senha,
usu_foto) VALUES ('$usu_nome', '$usu_email', '$usu_senha',
'$usu_foto')");
Explicando...
mysql_query – comando o php para o mysql.
INSERT INTO tabela (campos) VALUES (‘variáveis do formulário’) – comando SQL
Questão.
Mas para cada visita que se fizer a esta página, um registro em branco será gravado, isto não é lá
muito legal... Solucione.
Ok, eu sei, você quis resolver, mas a preguiça falou mais alto, volte e FAÇA!
Agora sim, você aprendeu, mas quer ter certeza, confira.
<?php
include("conecta.php");
$gravar = $_POST['Gravar'];
if($gravar == 'Submit'){
$usu_nome = $_POST['usu_nome'];
$usu_email = $_POST['usu_email'];
$usu_senha = $_POST['usu_senha'];
$usu_foto = $_POST['usu_foto'];
mysql_query("INSERT INTO usuarios (usu_nome, usu_email, usu_senha,
usu_foto) VALUES ('$usu_nome', '$usu_email', '$usu_senha',
'$usu_foto')");
}
?>
Questão.
Como exibir todos os dados do BD?
Olha que idéia boa!
Vamos construir um menu que será incluído em todas as páginas?
Universidade Guarulhos Página 16
Universidade Guarulhos Página 17
Aula 3
Exclusão de dados Questão, qual item deverá ser excluído?
Então vamos exibi-los. Todos!
Vamos criar duas páginas, uma chamada excluir.php e outra para confirmar a exclusão e evitar
exclusões por engano, chamada excluir_confirm.php.
Método do while.
excluir.php
<?php include("conecta.php"); ?>
<HTML>
<HEAD>
<TITLE>Linguagem de Programação IV - 2010 B1</TITLE>
</HEAD>
<BODY>
<h1>Excluir dados (e exibi-los também!)</h1>
<?php include("menu.php");
$dados = mysql_query('SELECT * FROM usuarios ORDER BY usu_id ASC');
$registros = mysql_num_rows($dados);
$registro = 0;
do
{
$usu_id = mysql_result($dados, $registro, "usu_id");
$usu_nome = mysql_result($dados, $registro, "usu_nome");
$usu_email = mysql_result($dados, $registro, "usu_email");
$usu_foto = mysql_result($dados, $registro, "usu_foto");
echo "<table width='50%' border='1' cellpadding='1' cellspacing='1'>
<tr>
<td>$usu_id</td>
<td>$usu_nome</td>
<td>$usu_email</td>
<td>$usu_foto</td>
<td align='right'><a
href='excluir_confirm.php?usu_id=$usu_id'>Excluir</a></td>
</tr>
</table>";
$registro++;
}
while ($registro < $registros);
?>
</BODY>
</HTML>
<?php mysql_close($conexao); ?>
Vamos estudar esta parte.
Primeiro criamos uma variável $registro como valor 0 para que o comando do while comece por
este valor, então iniciamos este com o do.
A partir da { até a } tudo será feito ao menos uma vez, mas oquê?
$usu_id = mysql_result($dados, $registro, "usu_id");
$usu_nome = mysql_result($dados, $registro, "usu_nome");
Universidade Guarulhos Página 18
$usu_email = mysql_result($dados, $registro, "usu_email");
$usu_foto = mysql_result($dados, $registro, "usu_foto");
Realizamos todas as consultas ao BD.
echo "<table width='50%' border='1' cellpadding='1' cellspacing='1'>
<tr>
<td>$usu_id</td>
<td>$usu_nome</td>
<td>$usu_email</td>
<td>$usu_foto</td>
<td align='right'><a
href='excluir_confirm.php?usu_id=$usu_id'>Excluir</a></td>
</tr>
</table>";
Então solicitamos a impressão com o comando echo de uma tabela com todas as variáveis criadas
acima. Observe o comando <td align='right'><a
href='excluir_confirm.php?usu_id=$usu_id'>Excluir</a></td>, que serve para
criar um link para a página do usuário.
$registro++;
}
Depois a variável $registro++, adiciona 1 ao último registro encontrado e se encerra o do.
while ($registro < $registros);
excluir_confirm.php
<?php include("conecta.php"); ?>
<HTML>
<HEAD>
<TITLE>Confirmação de exclusão</TITLE>
</HEAD>
<BODY>
<?php
include("menu.php");
//note que o id do usuário vem pela URL, logo, não use $_POST e sim
$_GET
$registro = $_GET['usu_id'];
$dados = mysql_query("SELECT * FROM usuarios WHERE usu_id=$registro");
$id = mysql_result($dados, '$registro', "usu_id");
$nome = mysql_result($dados, '$registro', "usu_nome");
$email = mysql_result($dados, '$registro', "usu_email");
$foto = mysql_result($dados, '$registro', "usu_foto");
?>
<form name="form" id="form" method="post" action="">
<?php
echo "O usuário $nome, id $id, email $email <img src='$foto'> vai ser
excluído!!! Ha! Ha! Ha! Já era!!!!<br />Tem certeza?";
//$excluir = "DELETE FROM usuarios WHERE usu_id = '$registro'";
?><br />
<input type="submit" name="submit" value="sim">
</form>
<?php
$confirma = $_POST['submit'];
if($confirma == "sim") {
$excluir = "DELETE FROM usuarios WHERE usu_id = '$registro'";
mysql_query($excluir);
Universidade Guarulhos Página 19
}
?>
</BODY>
</HTML>
<?php mysql_close($conexao); ?>
Onde está o problema?
Se simplesmente dispararmos o comando $excluir = "DELETE FROM usuarios WHERE
usu_id = '$registro'";, ao acessar a página o registro será excluído. Para evitar tal ação,
criamos um formulário que peça a confirmação.
<form name="form" id="form" method="post" action="">
<?php
echo "O usuário $nome, id $id, email $email <img src='$foto'> vai ser
excluído!!! Ha! Ha! Ha! Já era!!!!<br />Tem certeza?";
?><br />
<input type="submit" name="submit" value="sim">
</form>
Coloque uma frase para alertar e um botão com o valor “sim”.
Por fim, ao receber o valor “sim”, o comando irá ser executado.
<?php
$confirma = $_POST['submit'];
if($confirma == "sim") {
$excluir = "DELETE FROM usuarios WHERE usu_id = '$registro'";
mysql_query($excluir);
}
?>
Método for.
Este problema foi levantado pelo Marcos Paulo Alvarenga e o script desenvolvido pela Jéssica Barbara
da Silva Ribas ([email protected]).
<?php include("conecta.php"); ?>
<HTML>
<HEAD>
<TITLE>Linguagem de Programação IV - 2010 B1</TITLE>
</HEAD>
<BODY>
<h1>Excluir dados (e exibi-los também!)</h1>
<?php
$dados = mysql_query('SELECT * FROM usuarios ORDER BY usu_id ASC');
$linhas = mysql_num_rows($dados);
$colunas = mysql_num_fields($dados);
echo "<table border='1' cellpadding='1' wicht='50%'>";
echo "<tr><th>Identificação</th>";
echo "<th>Nome</th>";
echo "<th>email</th>";
echo "<th>senha</th>";
echo "<th>Foto</th></tr>";
for($registro=0; $registro < $linhas; $registro++){
echo "<tr>";
for ($campo=0; $campo < $colunas; $campo++){
$usuario=mysql_result($dados ,$registro ,$campo);
echo "<td width=20%> $usuario </td>";
}
Universidade Guarulhos Página 20
echo "</tr>";
}
echo "</table>";
?>
</BODY>
</HTML>
<?php mysql_close($conexao); ?>
Com a metodologia for é muito mais simples, mas...
O problema:
Crie um novo site que servirá de apostila de tudo que iremos aprender.
Crie um BD com uma tabela usuários e outra chamada aulas, com os campos que considerar
necessário.
Faça uma página index e uma página chamada menu com a técnica aprendida anteriormente. Cada
nova aula deverá exibir um novo item no menu.
Utilize a metodologia for, mas crie uma tabela com os nomes das colunas e um link no nome do
usuário para a página de detalhe.
Faça o algoritmo!
Universidade Guarulhos Página 21
Aula 4
Página do usuário
<?php include("conecta.php"); ?>
<HTML>
<HEAD>
<TITLE>Página do usuário</TITLE>
</HEAD>
<BODY>
<?php
include("menu.php");
//note que o id do usuário vem pela URL, logo, não use $_POST e sim
$_GET
$registro = $_GET['usu_id'];
$dados = mysql_query("SELECT * FROM usuarios WHERE usu_id=$registro");
$id = mysql_result($dados, '$registro', "usu_id");
$nome = mysql_result($dados, '$registro', "usu_nome");
$email = mysql_result($dados, '$registro', "usu_email");
$foto = mysql_result($dados, '$registro', "usu_foto");
echo "<img src='img/$foto'><br />Bem vindo à página do $nome !<br />O
id dele é: $id <br />Mande um e-mail para ele!!! $email .<br />";
echo "<a href='editar.php?usu_id=$usu_id'>Editar</a>";
?>
</BODY>
</HTML>
<?php mysql_close($conexao); ?>
E como cheguei a esta página?
Na página excluir, que vimos acima, veja o link:
echo "<table width='50%' border='1' cellpadding='1' cellspacing='1'>
<tr>
<td width='5%'><a
href='usuario.php?usu_id=$usu_id'>$usu_id</a></td>
<td width='30%'><a
href='usuario.php?usu_id=$usu_id'>$usu_nome</a></td>
<td width='30%'>$usu_email</td>
<td width='30%'>$usu_foto</td>
<td width='5%' align='right'><a
href='excluir_confirm.php?usu_id=$usu_id'>Excluir</a></td>
</tr>
</table>";
Como funciona?
Na barra de endereço, para acessar um registro específico, basta adicionar ?campo=registro, ou seja, no
nosso caso, usuarios.php?usu_id=1.Para navegar entre registros, basta mudar o nº da url.
Para enviar para o registro certo, cri um link com a página?campo=$variável do registro.
Mas o objetivo é excluir os registros, então...
Exclusão de registros
<?php include("conecta.php"); ?>
<HTML>
<HEAD>
<TITLE>Linguagem de Programação IV - 2010 B1</TITLE>
Universidade Guarulhos Página 22
</HEAD>
<BODY>
<h1>Excluir dados (e exibi-los também!)</h1>
<?php
//método do while....
include("menu.php");
$dados = mysql_query('SELECT * FROM usuarios ORDER BY usu_id ASC');
$registros = mysql_num_rows($dados);
$registro = 0;
do
{
$usu_id = mysql_result($dados, $registro, "usu_id");
$usu_nome = mysql_result($dados, $registro, "usu_nome");
$usu_email = mysql_result($dados, $registro, "usu_email");
$usu_foto = mysql_result($dados, $registro, "usu_foto");
echo "<table width='50%' border='1' cellpadding='1' cellspacing='1'>
<tr>
<td width='5%'><a
href='usuario.php?usu_id=$usu_id'>$usu_id</a></td>
<td width='30%'><a
href='usuario.php?usu_id=$usu_id'>$usu_nome</a></td>
<td width='30%'>$usu_email</td>
<td width='30%'>$usu_foto</td>
<td width='5%' align='right'><a
href='excluir_confirm.php?usu_id=$usu_id'>Excluir</a></td>
</tr>
</table>";
$registro++;
}
while ($registro < $registros);
?>
</BODY>
</HTML>
<?php mysql_close($conexao); ?>
Criamos a função de listagem de dados e um novo link > Excluir < que leva à página
excluir_confirm.php, assim garantiremos que não se exclua apenas por acessar a página excluir.php.
Na página excluir_confirm.php
<?php include("conecta.php"); ?>
<HTML>
<HEAD>
<TITLE>Confirmação de exclusão</TITLE>
</HEAD>
<BODY>
<?php
include("menu.php");
//note que o id do usuário vem pela URL, logo, não use $_POST e sim
$_GET
$registro = $_GET['usu_id'];
$dados = mysql_query("SELECT * FROM usuarios WHERE usu_id=$registro");
$id = mysql_result($dados, '$registro', "usu_id");
$nome = mysql_result($dados, '$registro', "usu_nome");
$email = mysql_result($dados, '$registro', "usu_email");
$foto = mysql_result($dados, '$registro', "usu_foto");
?>
<form name="form" id="form" method="post" action="">
<?php
Universidade Guarulhos Página 23
echo "O usuário $nome, id $id, email $email <img src='$foto'> vai ser
excluído!!! Ha! Ha! Ha! Já era!!!!<br />Tem certeza?";
?><br />
<input type="submit" name="submit" value="sim">
</form>
<?php
$confirma = $_POST['submit'];
if($confirma == "sim") {
$excluir = "DELETE FROM usuarios WHERE usu_id = '$registro'";
mysql_query($excluir);
}
?>
</BODY>
</HTML>
<?php mysql_close($conexao); ?>
Universidade Guarulhos Página 24
AULA 5
Edição de dados
<?php include("conecta.php");
$registro = $_GET['usu_id'];
$gravar = $_POST['Gravar'];
if($gravar == 'Submit'){
$Eusu_nome = $_POST['usu_nome'];
$Eusu_email = $_POST['usu_email'];
$Eusu_senha = $_POST['usu_senha'];
$Eusu_foto = $_POST['usu_foto'];
mysql_query("UPDATE usuarios SET usu_nome='$Eusu_nome',
usu_email='$Eusu_email', usu_senha='$Eusu_senha',
usu_foto='$Eusu_foto' WHERE usu_id=$registro");
}
?>
<HTML>
<HEAD>
<TITLE>Página do usuário</TITLE>
</HEAD>
<BODY>
<?php
include("menu.php");
//note que o id do usuário vem pela URL, logo, não use $_POST e sim
$_GET
$dados = mysql_query("SELECT * FROM usuarios WHERE usu_id=$registro");
$id = mysql_result($dados, '$registro', "usu_id");
$nome = mysql_result($dados, '$registro', "usu_nome");
$email = mysql_result($dados, '$registro', "usu_email");
$foto = mysql_result($dados, '$registro', "usu_foto");
//echo "<img src='img/$foto'><br />Bem vindo à página do $nome !<br
/>O id dele é: $id <br />Mande um e-mail para ele!!! $email .";
?><br />
<form method="POST">
<input type="text" name="usu_id" id="usu_id" size="20" value="<?php
echo $id; ?>" />
<input type="text" name="usu_nome" id="usu_nome" size="20"
value="<?php echo $nome; ?>" />
<input type="text" name="usu_email" id="usu_email" size="20"
value="<?php echo $email; ?>" />
<input type="text" name="usu_foto" id="usu_foto" size="20"
value="<?php echo $foto; ?>" />
<input type="submit" name="Gravar" id="Gravar" value="Submit" />
</form>
</BODY>
</HTML>
<?php mysql_close($conexao); ?>
Editar os dados é muito simples. Exiba-os dentro de um formulário, nos campos textfield e apenas
reescreva as variáveis.
Universidade Guarulhos Página 25
AULA 6
Login
<?php include("conecta.php");
$usu_email = $_POST["usu_email"];
$usu_senha = $_POST["usu_senha"];
$resultado = mysql_query("SELECT * FROM usuarios where
usu_email='$usu_email'");
$linhas = mysql_num_rows ($resultado);
if($linhas==0)
{
echo "<html><head><title>Ops!</title></head><body>";
echo "<p align=\"center\">Cara, você não consegue lembrar nem
seu usuário???</p>";
echo "<p align='center'><a href='login.html'>Tente de novo,
burro!</a></p>";
echo "</body></html>";
}
else
{
if ($usu_senha != mysql_result($resultado, 0, "usu_senha"))
{
echo "<html><head><title>Ops!</title></head><body>";
echo "<p align='center'>Agora é a senha?! Caramba!!!</p>";
echo "<p align=\"center\"><a href=\"login.html\">Vai tente
mais uma vez...</a></p>";
echo "</body></html>";
}
else
{
setcookie("email", $usu_email);
setcookie("senha", $usu_senha);
header ("Location: usuarios.php");
}
}
mysql_close($conexao); ?>
Ranqueamento do menu Em construção...
mysql_query("UPDATE scs_paginas SET pag_clic=pag_clic+1 WHERE
pag_id='$_GET[pag_id]'");
Universidade Guarulhos Página 26
AULA 7
Upload de arquivos Para criar um formulário de upload de arquivos, com gravação em BD, primeiro vamos criar um
formulário da seguinte forma:
<form method="post" action="" enctype="multipart/form-data">
<p>Nome<br>
<input type="text" name="usu_nome" id="usu_nome" size="20"
/></p>
<p>e-mail<br>
<input type="text" name="usu_email" id="usu_email" size="20"
/></p>
<p>Senha<br>
<input type="password" name="usu_senha" id="usu_senha"
size="20" /></p>
<p>Foto<br>
<input type="file" name="usu_foto" id="usu_foto" size="20"
/></p>
<input type="submit" name="Gravar" id="Gravar" value="Submit" />
</form>
Note que no form adicionamos a função enctype="multipart/form-data" que serve para
realizar o envio do arquivo.
Agora a parte do PHP. Semelhante ao que já fizemos, para gravar dados simples, mas com o adendo do
arquivo.
<?php
include("conecta.php");
//gatilho de disparo
$gravar = $_POST['Gravar'];
if($gravar == 'Submit'){
//recebe os dados
$usu_nome = $_POST['usu_nome'];
$usu_email = $_POST['usu_email'];
$usu_senha = $_POST['usu_senha'];
//$usu_foto = $_POST['usu_foto']; substituída pela variável $arq
//upload
$dir = "img";
$arq = $_FILES['usu_foto']['name'];
$arq_temp = $_FILES['usu_foto']['tmp_name'];
move_uploaded_file($arq_temp,"$dir/$arq");
//grava no BD
mysql_query("INSERT INTO usuarios (usu_nome, usu_email, usu_senha,
usu_foto) VALUES ('$usu_nome', '$usu_email', '$usu_senha', '$arq')");
}
?>
A diferença ficou por conta da variável $arq que substituiu a variável $usu_foto no comando SQL.
Universidade Guarulhos Página 27
AULA 8
Login, logout e proteção de sessão A função do login e do logout são de extrema importância para a segurança dos sites, seus usuários e
dados.
Existem duas maneiras básicas de se “logar” numa página, via cookies e propagação de páginas. Com o
uso de cookies, maneira de iremos estudar, é mais seguro e invisível para o usuário, no entando, o
outro lado da moeda é que o usuário deve ter esta opção ativa no navegador, que por padrão já vem
ativa, isto não gera trabalho ao usuário.
O promeiro passo é ter um BD com uma tabela de usuários e senhas, exemplo:
Agora vamos construir as páginas que irão interagir com o BD.
Página index.php (login.php)
Esta é a página de login. Ela deve ter um formulário com um campo par ao usuário digitar o e-mail e
outro para a senha, veja o html.
<form name="form1" method="post" action="">
<p>e-Mail<br />
<input type="text" name="email" id="email" /></p>
<p>Senha<br />
<input type="password" name="senha" id="senha" /></p>
<input type="submit" name="entrar" id="entrar"
value="Submit" />
</form>
Agora vamos ao PHP
Faça a requisição de conexão com o BD.
<?php require_once("conecta.php");?>
Universidade Guarulhos Página 28
Agora vamos criar a sessão. Primeiro precisamos pensar que o usuário deverá digitar o login e senha e
somente APÓS clicar em “ENTRAR” o sistema deverá criar a sessão, para isto, crie a função de disparo
if(isset($_POST['entrar'])){
<?php
//dispara somente depois de clicar em "entrar"
if(isset($_POST['entrar'])){
//recebe os dados do form
$email = $_POST['email'];
$senha = $_POST['senha'];
//realiza a pesquisa do e-mail
$usuario = mysql_query("SELECT * FROM usuarios WHERE
usu_email='$email'");
//retorna o nº de linhas
$registros = mysql_num_rows($usuario);
//se for 0, nehum registro, retorna à página de login
if ($registros == 0){
//retorno à página login com o disparo de erro
"?usu_inex=true"
header("location: index.php?usu_inex=true");
}else{
//senão, se existir o usuário, compara a senha e retorna o
erro
if($senha != mysql_result($usuario, 0, "usu_senha")){
header("location: index.php?senha_errada=true");
}else{
//se tudo estiver certo, cria a sessão, os cookies
session_start();
$_SESSION['usu_email'] = $email;
$_SESSION['usu_senha'] = $senha;
header("location: protegida.php");
}
}
}
?>
Você notou esta estranha função header("location:index.php?usu_inex=true"); ?
Para que serve?
Como ela está condicionada ao if anterior, se não for obedecido irá retornar com uma informação na
URL que será disparada no formulário. O mesmo vale para a header("location:
index.php?senha_errada=true");.
E o formulário então ficará assim:
<form name="form1" method="post" action="">
<p>e-Mail<br />
<input type="text" name="email" id="email" accesskey="e"
tabindex="1"></p>
<!-- a frase de erro gerada pelo PHP (linha 15) -->
<?php if(isset($_GET['usu_inex'])){?>
<font color="red">e-Mail inexistente. Tente outro e-
mail.</font>
<!-- somente aparecerá se digitar algo errado -->
<?php } ?>
<p>Senha<br />
Universidade Guarulhos Página 29
<input type="password" name="senha" id="senha" accesskey="s"
tabindex="2"></p>
<?php if(isset($_GET['senha_errada'])){?>
<font color="red">Senha errada. Tente novamente.</font>
<?php } ?><br />
<input type="submit" name="entrar" id="entrar"
value="Submit" accesskey="l" tabindex="3">
</form>
Criamos uma função simples no PHP que se a URL contiver a frase informada na função “estranha”,
aqui o PHP disparará uma frase amigável ao usuário. Veja a URL:
http://localhost/ung/index.php?usu_inex=true
Agora vamos criar a página protegida pelo sistema:
<?php include("conecta.php"); ?>
<?php include("valida_sessao.php"); ?>
<?php include("logout.php"); ?>
<html>
<head>
<title>Protegida</title>
</head>
<body>
<h1>Protegida!</h1>
<form method="post" action="">
<input type="submit" id="logout" name="logout"
value="logout" />
</form>
</body>
</html>
<?php mysql_close($conexao); ?>
Se você for sagaz deve ter notado que existem vários includes, mas programação que é bom, nada!
Vamos cria-las em páginas separadas para poder reaproveitar os códigos em diversos pontos, bastando
colocar estes includes, sabichão...
valida_sessao.php
Veja os comentários
<?php
//inicia a sessão
session_start();
//recebe os dados criados na página login
if(isset($_SESSION['usu_email']))
$usu_email = $_SESSION['usu_email'];
if(isset($_SESSION['usu_senha']))
$usu_senha = $_SESSION['usu_senha'];
//se não forem vazios(empty) realiza a busca no BD
if(!(empty($usu_email) OR empty($usu_senha)))
{
$busca = mysql_query("SELECT * FROM usuarios WHERE
usu_email='$usu_email'");
//se encontrar 1 registro...
if(mysql_num_rows($busca)==1)
{
//...e se esse registro tiver a senha diferente do BD...
if($usu_senha != mysql_result($busca, 0, "usu_senha"))
Universidade Guarulhos Página 30
{
//...desfaça a sessão
unset($_SESSION['usu_email']);
unset($_SESSION['usu_senha']);
header("location: index.php");
exit;
}
}
else
{
unset($_SESSION['usu_email']);
unset($_SESSION['usu_senha']);
header("location: index.php");
exit;
}
}
//se o usuário simplesmente copiar e colar o endereço, será
redirecionado
else
{
header("location: index.php");
exit;
}
?>
logout.php
<?php
//logout. Depende do disparo do botão "logout" no <form>
if(isset($_POST['logout']))
{
session_start();
$_SESSION = array();
session_destroy();
header("location: index.php");
}
?>
É claro que os nomes dependem dos formulários criados.
Como eu espero que você fique rico de tantas páginas que for criar, pense no seguinte, não seria
interessante criar um padrão para os nomes para poder reaproveitar sempre os mesmos códigos?
Universidade Guarulhos Página 31
Aula 9
XML O eXtensible Markup Language é um arquivo desenvolvido pelo W3C segue os padrões do HTML, no
entanto, as tags básicas do html como <body>, <h1>, <img>, entre outras são substituídas por tags
criadas pelo desenvolvedor, mas claro que não serão interpretadas pelo navegador. A principal função
do XML é a comunicação entre sistemas. Veja o exemplo:
Figura 10 - exemplo de XML
Neste caso, os nomes das tags foram escolhidas para atenderem os metadados do banco de dados,
assim será possível gerar, ler e importar dados de um XML.
Para gerar o XML com o PHP é preciso seguir o mesmo princípio de geração de um txt.
<?php
//atribua o nome e a extensão do arquivo a ser criado
$arquivo = "usuarios.xml";
$cria = fopen($arquivo, "w");
//monte o cabeçalho do XML
$xml = "<?xml version='1.0' encoding='ISO-8859-1'?>";
fwrite($cria, $xml);
fwrite($cria, "<registro> ");
do
{
$usu_id = mysql_result($dados, $registro, "usu_id");
$usu_nome = mysql_result($dados, $registro, "usu_nome");
Universidade Guarulhos Página 32
$usu_email = mysql_result($dados, $registro, "usu_email");
$usu_senha = mysql_result($dados, $registro, "usu_senha");
$usu_foto = mysql_result($dados, $registro, "usu_foto");
$tag = "<usuario> ";
$tag.= "<id>$usu_id</id> ";
$tag.= "<nome>$usu_nome</nome> ";
$tag.= "<email>$usu_email</email> ";
$tag.= "<senha>$usu_email</senha> ";
$tag.= "<foto>$usu_email</foto> ";
$tag.= "</usuario> ";
fwrite($cria, $tag);
$registro++;
}
while ($registro < $registros);
fwrite($cria, "</registro>");
fclose($cria);
Leitura do XML
<?php
include("menu.php");
$xml = simplexml_load_file('usuarios.xml'); /* Lê o arquivo XML e
recebe um objeto com as informações */
/* Percorre o objeto e imprime na tela as informações de cada contato
*/
foreach ($xml as $contato){
$a = "Id: " . $contato->id . "<br />";
$a .= "Nome: " . $contato->nome . "<br />";
$a .= "Email: " . $contato->email. "<br />";
$a .= "Senha: " . $contato->senha. "<br />";
$a .= "Foto: " . $contato->foto. "<br />";
echo "$a <hr />";
}
?>
Importar XML para o MySQL
<?php
//gatilho de disparo para a importação
if(isset($_POST['submit'])){
$arq = $_FILES['arquivo']['name'];
$arq_temp = $_FILES['arquivo']['tmp_name'];
//neste caso o arquivo terá nome determinado
move_uploaded_file($arq_temp,"docs/usuarios.xml");
//função de carregamento do XML
$xml = simplexml_load_file('docs/usuarios.xml');
$x = 0;
foreach ($xml as $regs){
mysql_query("INSERT INTO usuarios (usu_id, usu_nome, usu_email,
usu_senha, usu_foto)
VALUES ('$regs->id', '$regs->nome', '$regs->email', '$regs-
>senha', '$regs->foto')");
if(mysql_affected_rows() != -1){
$x++;
}
Estes são os
nomes das tags
criadas no XML
Campos do BD
Universidade Guarulhos Página 33
}
echo "$x contatos importados com sucesso!";
}else{
echo "<form method='POST' enctype='multipart/form-data'>
<input type='file' name='arquivo' size='20'>
<input type='submit' name='submit' value='Upload'>
</form>";
}
?>
Universidade Guarulhos Página 34
BIBLIOGRAFIA:
BÁSICA: NIEDERAUER, J. Web Interativa com AJAX e PHP. São Paulo: Novatec, 2007.
NIEDERAUER, J. Desenvolvendo Websites com PHP : aprenda a criar Websites dinamicos e interativos
com PHP e bancos de dados. São Paulo: Novatec, 2004.
SILVA, M. S. Construindo sites com CSS e (X)HTML. São Paulo: Novatec, 2008.
COMPLEMENTAR:
SILVA, Camila C. da. Lógica de programação: Aprendendo a programar. Santa Cruz do Rio Pardo:
Editora Viena, 2007.
NIEDERAUER, J. Web interativa com Ajax e PHP. São Paulo, SP : Novatec, 2007
SUPLEMENTAR: Dall'Oglio, P. PHP : programando com orientação a objetivos. São Paulo, SP : Nova-tec, 2007
PERIÓDICOS: Info
PHP Magazine