Leonardo Lacerda Alves. Desenvolvimento de aplicações em PHP e HTML com banco-de-dados para Web



Documentos relacionados
INTRODUÇÃO AO DESENVOLVIMENTO WEB

Programando em PHP. Conceitos Básicos

Utilizando o correio eletrônico da UFJF com Thunderbird e IMAP

Módulo e-rede Magento v1.0. Manual de. Instalação do Módulo. estamos todos ligados

PHP: CONCEITOS ESSENCIAIS PARA IMPLEMENTAÇÃO DE APLICAÇÕES WEB

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Programação Web Prof. Wladimir

Desenvolvendo Websites com PHP

Módulo e-rede Prestashop v1.0. Manual de. Instalação do Módulo. estamos todos ligados

Módulo e-rede OSCommerce v1.0. Manual de. Instalação do Módulo. estamos todos ligados

Conteúdo Programático de PHP

Linguagem de. Aula 06. Profa Cristiane Koehler

3. No painel da direita, dê um clique com o botão direito do mouse em qualquer espaço livre (área em branco).

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource Rev: 02

Índice. Manual Backup Online. 03 Capítulo 1: Visão Geral

Manual AGENDA DE BACKUP

Satélite. Manual de instalação e configuração. CENPECT Informática cenpect@cenpect.com.br

CONSTRUÇÃO DE BLOG COM O BLOGGER

SUMÁRIO Acesso ao sistema... 2 Atendente... 3

Web Design Aula 11: Site na Web

TUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH!

Manual de Instalação ( Client / Server ) Versão 1.0

NetEye Guia de Instalação

Procedimentos para Reinstalação do Sisloc

Módulo e-rede VirtueMart v1.0. Manual de. Instalação do Módulo. estamos todos ligados

Manual do MySuite. O MySuite é a solução adotada pela MKData para gerenciar o atendimento aos clientes.

Conteúdo Dinâmico. Introdução. Interação Browser x Servidor Web. Interação Browser x Servidor Web

Outlook Apresentação

BACKUP ONLINE PASSOS PARA CONFIGURAÇÃO INICIAL DO PRODUTO

Procedimentos para Instalação do Sisloc

Scriptlets e Formulários

Software de monitoramento Módulo CONDOR CFTV V1 R1

1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2.

Criando Banco de Dados, Tabelas e Campos através do HeidiSQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Manual AGENDA DE BACKUP

MANUAL DO USUÁRIO SORE Sistema Online de Reservas de Equipamento. Toledo PR. Versão Atualização 26/01/2009 Depto de TI - FASUL Página 1

Gerenciador de Congressos de Iniciação Científica Manual de Instruções

Módulo e-rede VirtueMart v1.0. Manual de. Instalação do Módulo. estamos todos ligados

02 - Usando o SiteMaster - Informações importantes

Manual das funcionalidades Webmail AASP

Manual do Usuário. E-DOC Peticionamento Eletrônico TST

O programa Mysql acompanha o pacote de instalação padrão e será instalado juntamente com a execução do instalador.

Módulo e-rede OpenCart v1.0. Manual de. Instalação do Módulo. estamos todos ligados

Mini-curso de PHP. Aulas ministradas por: André Luis de Paula Arthur Kalsing Diego Silva

MANUAL DO PVP SUMÁRIO

LINGUAGEM DE PROGRAMAÇÃO WEB

Procedimento para instalação do BLACKBERRY Software de Imagem via Celular

AP_ Conta Aplicativo para digitação e envio de contas médicas no padrão TISS

Módulo e-rede OSCommerce v1.0. Manual de. Instalação do Módulo. estamos todos ligados

Laboratório - Exploração do FTP

Faça um Site PHP 5.2 com MySQL 5.0 Comércio Eletrônico

Módulo e-rede Prestashop v1.0. Manual de. Instalação do Módulo. estamos todos ligados

O código acima descreve o formulário com uma caixa de texto e dois botões

Mais sobre uso de formulários Site sem Ajax

Menu Utilitários. Atualização do Banco de Dados Atualização e organização dos arquivos existentes

Guia para o Google Cloud Print

Sistema de Instalação e Criação da Estrutura do Banco de Dados MANUAL DO INSTALADOR. Julho/2007. Ministério da saúde

Curso de Aprendizado Industrial Desenvolvedor WEB

MANUAL DE UTILIZAÇÃO SISTEMA DE CADASTRO INTRANET

Aula 03 - Projeto Java Web

INSTALAÇÃO DO SISTEMA CONTROLGÁS

Bem-vindo ao Guia de Introdução - Utilitários

Ferramentas para Multimídia e Internet

U3 Sistemas Análise e Desenvolvimento de Softwares ===== Manual de Rede Interna ===== Manual. Rede Interna

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

ÍNDICE MANUAL SITE ADMINISTRÁVEL TV. 1. Introdução 2. Acessando o site administrável/webtv SITE ADMINISTRÁVEL 3. CONFIGURAÇÕES

Ministério da Cultura

Portal Sindical. Manual Operacional Empresas/Escritórios

Programação para Internet I

CONFIGURAÇÃO MINIMA EXIGIDA:

Manual Instalação, Configuração e Atualização FullCopyConvert Data FullCopyConvertService

Usar Atalhos para a Rede. Logar na Rede

LICENCIAMENTO V14 USANDO REPRISE LICENSE MANAGER

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1

COMO FUNCIONA UM FORMULÁRIO

Omega Tecnologia Manual Omega Hosting

0,5 pelo negrito das palavras ID, Nome, e Analisar em outro momento.

CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO

Instalando o Lazarus e outros sistemas de suporte. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

CONTRA CONTROLE DE ACESSOS E MODULARIZADOR DE SISTEMAS

- Acessar o sistema. Para acessar o sistema digite o endereço eletronico e clique em login na barra de menus.

Formulário (Send & Recieve) Prof. Celso H. Masotti

CAPÍTULO 8 Conexões de banco de dados para programadores ASP.NET

Manual Captura S_Line

11 - Q34826 ( FCC DPE - SP - Oficial de Defensoria Pública / Noções de Informática / Internet e intranet; )

SSE 3.0 Guia Rápido Parametrizando o SISTEMA DE SECRETARIA Nesta Edição Configurando a Conexão com o Banco de Dados

Manual Prescrição Fácil

Instrução de Trabalho Base de Conhecimento

1 Sumário O Easy Chat Conceitos Perfil Categoria Instalação O Aplicativo HTML...

Iniciação à Informática

Manual do Visualizador NF e KEY BEST

Follow-Up Acompanhamento Eletrônico de Processos (versão 3.0) Manual do Sistema. 1. Como acessar o sistema Requisitos mínimos e compatibilidade

Manual de Utilização do PLONE (Gerenciador de página pessoal)

UNIVERSIDADE FEDERAL DE GOIÁS CERCOMP (CENTRO DE RECURSOS COMPUTACIONAIS) TUTORIAL DE USO DO WEBMAIL - UFG

ÍNDICE. 1. Introdução O que é o Sistema Mo Porã Como acessar o Site Mo Porã Cadastro do Sistema Mo Porã...

ftp://ftp.cr-df.rnp.br/pub/netinfo/training/rnp/kit-bsb/html/guia.zip novembro 1996 Tutorial - Autoria em World Wide Web

Manual de uso do RM Portal Acessando o portal

Transcrição:

Leonardo Lacerda Alves Desenvolvimento de aplicações em PHP e HTML com banco-de-dados para Web www.lacerda.eti.br Junho de 2003

Leonardo Lacerda Alves www.lacerda.eti.br 3 APRESENTAÇÃO Este mini-curso tem o objetivo de oferecer a você a oportunidade de desenvolver sua primeira aplicação web completa, conhecendo a organização fundamental do ambiente web e os fundamentos da Estão incluidos implementação de programas web desenvolvidos Código-fonte do programaexemplo em PHP. Apache Desenvolvido para os alunos do 5º período de PHP sistemas de informação, exige conhecimentos mínimos de linguagem C, banco-de-dados, navegação na Internet, uso do ambiente Windows e formatação de documento de textos. MySQL Interbase Manual PHP Manual MySQL Apostila Desenvolvimento de aplicações em PHP e HTML com banco-de-dados para Web. Por Leonardo Lacerda Alves Jun. 2003 Direitos reservados. Itabira.

4 Desenvolvimento de aplicações em PHP e HTML com banco-de-dados para Web SUMÁRIO 1.Introdução... 6 2.Requisitos mínimos e instalação do ambiente... 9 Servidor web... 9 Sistema Gerenciador de Banco de dados... 9 Editor HTML... 9 Iniciando os programas... 9 3.Especificações do sistema de Atendimento-eletrônico... 11 4.Implementação do Atendimento-eletrônico... 12 Página inicial (I)... 12 Cadastro de usuário... 13 Configuração: Banco-de-dados... 14 Cadastro de usuário: inclui usuário... 15 Página inicial (II)... 18 Autenticação de usuários... 19 Menu principal (I)... 19 Categorias de atendimento... 21 Listar categorias... 23

Leonardo Lacerda Alves www.lacerda.eti.br 5 Questões e mensagens... 24 5.Conclusão... 25 6.Referências bibliográficas... 26

6 Desenvolvimento de aplicações em PHP e HTML com banco-de-dados para Web 1.INTRODUÇÃO Em conseqüência da expansão da Internet, interconexão entre diferentes ambientes de redes e reaproveitamento de máquinas e sistemas operacionais antigos, a arquitetura web tem adquirido grande relevância e criado demandas e desafios para o desenvolvimento de programas em Internet e intranets das corporações. As intranets, por sua vez, possuem conceitos idênticos aos da Internet, se utilizando de ferramentas e protocolos de comunicação similares. O seu escopo, porém, diferentemente do que ocorre na Internet, é permitir a troca de dados apenas entre computadores de uma mesma rede local, normalmente, mesmo que esteja ligada a rede pública de computadores, a Internet [6]. A camada multimídia da Internet é a WWW World Wide Web ou simplesmente Web, a qual é fornecida pelo protocolo HTTP Hypertext Transfer Protocol ou Protocolo de Transferência de Hipertexto e permite a troca de documentos, imagens e outros recursos web de forma transparente em relação ao computadorservidor [2]. Um recurso web é acessado por um programa-cliente, isto é, utilizado pelo usuário. O programa-cliente, normalmente conhecido como navegador ou browser (folheador), acessa os recursos através de um esquema de endereçamento uniforme conhecido como URL Uniform Resource Locator no formato protocolo://endereço_ip:porta/diretorios/arquivo [9]. O servidor é responsável por servir os recursos web e o faz simplesmente enviando os arquivos disponíveis ao programa-cliente, logo que recebe uma requisição, assim como aponta a figura 1.1. Existem porém duas classes de aplicações web. A primeira delas chamada de client-side, ou local, sendo executada no computador-cliente, responsável pela requisição de um recurso web. Na figura 1.1 observa-se um processo client-side sendo executado sem qualquer conexão com sistemas computacionais externos.

Leonardo Lacerda Alves www.lacerda.eti.br 7 Figura 1.1: Programa client-side A segunda classe de aplicações web são executadas pelo servidor para o qual foi realizada uma requisição de recurso www. Nesse caso, o recurso é denominado recurso-dinâmico, e o servidor é totalmente responsável pelo processamento de dados e o redirecionamento da saída para o computador-cliente, o qual por sua vez, conforme demonstrado na figura 1.2, não tem acesso aos processos e dados de origem. Figura 1.2: Programa server-side Inúmeros ambientes computacionais foram criados para possibilitar o desenvolvimento de programas dessa segunda classe ou server-side, normalmente em linguagens de programação existentes e interpretadas no momento da requisição. Dentre os mais populares foram consideradas o VB-Script e ASP.NET, linguagens de programação restritas à arquitetura Microsoft e normalmente

8 Desenvolvimento de aplicações em PHP e HTML com banco-de-dados para Web implementadas em Visual Basic ou C#; Java Servlets Pages (JSP), criada pela Sun, baseada na linguagem Java e independente de sistema operacional; e PHP, a qual é a única a contar com um interpretador open-source gratuito e com código-fonte aberto suportado por variados sistemas operacionais e servidores http. O PHP, objeto deste trabalho, foi um conjunto de aplicações desenvolvidas em linguagem Perl, por Rasmus Lerdof em 1995, com o simples propósito de criar interações entre usuários de Internet e sites nos quais era instalado. Somente após 1997, através da contribuição de outras pessoas ao projeto, PHP tornou-se uma linguagem de programação, chegando à versão 4 em 2000 com todos os atributos abordados neste tutorial, e presente em mais de 20% dos domínios públicos na Internet [7]. O conhecimento prévio da linguagem C++ é desejável, mas o presente artigo deve servir como introdução à PHP mesmo àqueles que não saibam programar nessa linguagem. Este tutorial está organizado sobre a seguinte estrutura: no ítem 2 são discriminados os requisitos mínimos para a construção do programa com possibilidade de testes, e também instruções sobre como instalar o servidor Interbase, o servidor web e o banco-de-dados através do qual o programa-exemplo irá funcionar; no ítem 3 são expostas as especificações do programa-exemplo o qual será construído em PHP, com formatação em HTML e armazenamento de informações em banco-de-dados Interbase; no ítem 4 iniciamos a implementação do programa ao mesmo tempo que criamos atalhos para outros documentos existentes no CD-ROM, o qual é oferecido juntamente com este curso; no ítem 5 concluimos nosso curso fornecendo mais detalhes sobre a engenharia de aplicações para web.

Leonardo Lacerda Alves www.lacerda.eti.br 9 2.REQUISITOS MÍNIMOS E INSTALAÇÃO DO AMBIENTE SERVIDOR WEB Um servidor web é necessário para servir páginas e outros recursos pelo protocolo HTTP. O Apache, um dos mais populares servidores, é oferecido no CD-ROM o qual acompanha este curso, sendo gratuito e livre para cópia. A instalação do servidor se dá através da instalação do programa PHPTriad. SISTEMA GERENCIADOR DE BANCO DE DADOS Dois SGBDs acompanham este curso, ambos gratuitos e livres para cópia. O primeiro, objeto do curso, é o Interbase em sua versão 6, produzido pela Borland Corporation; o segundo é o MySQL, um dos mais rápidos SGBDs usados em aplicações web, instalável através do PHPTriad. EDITOR HTML PHPTriad Instale o PHPTriad no diretório c:\apache do seu computador. Configure a variável session.save_path em c: \apache \ php \ php. ini para / temp A aplicação Sothink suporta a edição de documentos para web no formato HTML. É gratuito para uso pessoal e educacional e está disponível com todas as funções, com instalador no CD-ROM. INICIANDO OS PROGRAMAS Apache Após instalar o programa PHPTriad, o servidor Apache estará disponível no endereço c:\apache. Para acioná-lo, clique no botão Iniciar > Programs > PHPTriad > Start Apache.

10 Desenvolvimento de aplicações em PHP e HTML com banco-de-dados para Web MySQL Após instalar o programa PHPTriad, o servidor MySQL estará disponível sob o endereço c:\apache\mysql. Para acioná-lo, clique no botão Iniciar > Programs > PHPTriad > Start MySQL. Interbase A instalação do Interbase pode acontecer em qualquer diretório do seu disco rígido. Para acioná-lo, clique no botão Iniciar > Configurações > Painel de Controle > Interbase Manager. Na tela do programa (Fig. 3.1), clique em Start, caso ele esteja fechado (Stopped), como também poderá configurá-lo para ser iniciado automaticamente quando o Windows for ligado (Start Mode como Automatic). Fig. 3.1. Configuração do Interbase Sothink A instalação do Sothink pode ocorrer em qualquer diretório do seu disco rígido. Para acioná-lo, clique no botão Iniciar > Programas > SourceTec > Sothink HTML Editor 2.5 > Sothink HTML Editor. A inicialização demorará cinco segundos.

Leonardo Lacerda Alves www.lacerda.eti.br 11 3.ESPECIFICAÇÕES DO SISTEMA DE ATENDIMENTO- ELETRÔNICO O sistema deve contar com os seguintes módulos de funções: Cadastro de dados dos usuários Cadastro de dados dos administradores Cadastro de categorias por um administrador Escrita de questões e mensagens por todos Escrita de respostas por todos Leituras de mensagens e respostas por todos Consultas ao banco-de-dados por todos Acesso autenticado por usuário e senha Acesso ao sistema: Principal Cadastro Usuários Administradores Acesso autenticado Alteração de cadastro Leitura de mensagens Escrita de mensagens Listagens ao banco-de-dados

12 Desenvolvimento de aplicações em PHP e HTML com banco-de-dados para Web 4.IMPLEMENTAÇÃO DO ATENDIMENTO-ELETRÔNICO PÁGINA INICIAL (I) Forneceremos um atalho para o cadastro e o acesso direto ao sistema autenticado por senha. Porém, neste primeiro momento, só criaremos nosso primeiro atalho para o cadastro. Execute o Sothink, crie um arquivo novo e graveo com o nome index.htm no diretório do seu projeto web. Baseado na aparência apresentada na figura 4.1, desenha página através do recurso Design do programa, crie o atalho para a PÁGINA DE CADASTRO, de nome cadastrousuarios.php, e deixe espaço para o que, no futuro, será o formulário de identificação. World Wide Web Em um servidor WWW, o primeiro recurso aberto pelo navegador se chama index, podendo ter as extensões. php,.htm,.html ou outras especificadas. A este recurso web damos o nome de Index ou página inicial. O diretório do seu projeto deve ser c:\apache\htdocs\suporte Agora teste sua página, digitando o endereço http://localhost/suporte em seu navegador. Figura 4.1: página inicial

Leonardo Lacerda Alves www.lacerda.eti.br 13 CADASTRO DE USUÁRIO.htm ou.php? Uma página com a extensão. htm ou.html são enviadas do servidor web ao navegador sem alterações. No Sothink, com a página index.htm aberta, acione File > Save as... para gravar a página atual com um outro nome, escolhendo cadastrousuarios.php e certificando-se de que o diretório atual é o mesmo do seu projeto. Páginas com extensão.php são processadas no servidor antes de serem enviadas. Nessa página cadastrousuarios.php, haverá um formulário através do qual criamos a conta de usuários-cliente e usuários-administradores do nosso sistema. Clique sobre a tabela da página e pressione Delete para excluí-la. No local onde existia um formulário, crie um formulário através do Menu Insert > Form Field > Form..., informando o nome (name) Cadastro, Método de envio (method) Post e Programa processador (Action) incluiusuario.php. Insira uma tabela, agora com nove linhas (rows) e duas colunas (cols) em seu interior, e crie os campos para os dados Nome (one-line text box), Sobrenome (oneline text box), Sexo (radio button), E-mail (one-line text box), Observações (text area) e se é Atendente (check box), Senha (one-line text box), Confirmação de senha, Confirmação de atendente (one-line text box), todos através do menu Insert > Form Field. Ao final do formulário insira dois botões (push button) um para envio do formulário (submit) e outro para limpá-lo (reset). Insira também um campo oculto - Hidden Field - em qualquer local dentro do formulário, com o nome codigo e valor 0. Com este último campo servirá como um controle para nós e não aparecerá na tela do usuário. A aparência da tela ficará como na Figura 4.2.

14 Desenvolvimento de aplicações em PHP e HTML com banco-de-dados para Web Figura 4.2: Cadastro de usuário Ao clicar no botão [Enviar], todos os dados serão enviados (POST) ao programa especificado na cláusula action, do formulário, em nosso caso o programa incluiusuario.php. CONFIGURAÇÃO: BANCO-DE-DADOS O nosso banco-de-dados usado por nós será o Interbase 6, o qual fica armazenado em um arquivo, em algum endereço particular. Como o endereço do arquivo, seu nome, o usuário e a senha são dados necessários em todos os scripts do nosso sistema, ele será centralizado em um script externo, o qual será usado como uma biblioteca. A Figura 4.3 apresenta todo o script denominado conf_bd.php. Figura 4.3: Script do arquivo conf_bd.php <? $bd = "localhost:c:\apache\htdocs\suporte\bd.gdb"; $bdusuario = "sysdba"; $bdsenha = "masterkey";?>

Leonardo Lacerda Alves www.lacerda.eti.br 15 CADASTRO DE USUÁRIO: INCLUI USUÁRIO A página incluiusuario.php é responsável por capturar os campos do formulário apresentado na Figura 4.2, informando sobre possíveis erros ou gravando as informações no banco-de-dados. Para criar esta página, abra a página cadastrousuarios.php, acione File > Save as... e grave a página como incluiusuario.php. Apague o conteúdo do formulário, inclusive tabela e seus dados internos, mantendo apenas os títulos do programa, propaganda e seção de cadastro de usuários. Crie um novo parágrafo com uma mensagem de sucesso: Dados gravados com sucesso. E em outro parágrafo escreva uma mensagem de erro: Foram encontrados erros em seu formulário. Finalmente iremos trabalhar diretamente com HTML. Acesse a seção HTML do editor Sothink e insira o código em PHP da Figura 4.4. Figura 4.4: Código de incluiusuario.php <? /* Funções indicam que a página não deve ser armazenada no navegador do usuário */ header("cache-control: no-store, no-cache, must-revalidate"); header("pragma: no-cache"); // inclui configuração de banco-de-dados include_once("conf_bd.php"); /* Captura e Verifica integridade dos dados */ // substr retorna os 30 primeiros caracteres $nome = substr($nome,0,30); // empty retorna verdadeiro se não houver texto if (empty($nome)) { // $erro[] cria um vetor com o nome $erro e // inclui a expressão ao final do vetor $erro[] = 'Nome obrigatório';

16 Desenvolvimento de aplicações em PHP e HTML com banco-de-dados para Web $sobrenome = substr($sobrenome,0,30); if (empty($sobrenome)) { $erro[] = 'Sobrenome obrigatório'; if (($sexo!= 'M') and ($sexo!= 'F')) { $sexo = 'M'; $email = substr($email,0,40); if (empty($email)) { $erro[] = 'E-mail obrigatório'; else { $sql = "select count(*) from usuario where usemail = '"; $sql.= $email. "'"; $conexao = ibase_connect($bd,$bdusuario,$bdsenha) or die("impossível conectar"); // conecta ou imprime erro $resultado = ibase_query($sql,$conexao); $linha = ibase_fetch_row($resultado); ibase_free_result($resultado); ibase_close($conexao); if ($linha[0] > 0) { $erro[] = 'E-mail já cadastrado'; $nota = substr($nota,0,1000); if ($atendente == 'S') { if ($chaveatendente!= "sou sim") { $erro[] = 'Chave de atendente não confere'; $atendente = 'N'; $senha1 = substr($senha1,0,30); if (empty($senha1)) { $erro[] = 'Senha obrigatória'; else if ($senha1!= $senha2) { $erro[] = 'Senha e confirmação de senha não conferem'; // strlen retorna o tamanho do texto else if (strlen($senha1) < 6) { $erro[] = 'Senha deve ter pelo menos 6 caracteres'; /* Se código é 0, registro novo */ // isset informa se o identificador está definido if (($codigo == 0) and (!isset($erro))) { /* Obtem o próximo código */

Leonardo Lacerda Alves www.lacerda.eti.br 17 $conexao = ibase_connect($bd,$bdusuario,$bdsenha) or die("impossível conectar"); // conecta-se ou imprime erro $sql = "select max(uscodigo) from usuario"; $resultado = ibase_query($sql,$conexao); // consulta $linha = ibase_fetch_row($resultado); // obtem registro $codigo = $linha[0] + 1; // soma 1 ao max retornado /* Grava registro novo em BD */ $sql = "insert into usuario (uscodigo, usnome, ussobrenome,"; $sql.= "ussexo, usemail, usnota, usatendente, ussenha)"; $sql.= " values (". $codigo. ", '". $nome. "', '"; $sql.= $sobrenome. "', '". $sexo. "', '". $email; $sql.= "', '". $nota. "', '". $atendente. "', '"; $sql.= $senha1. "')"; $resultado = ibase_query($sql,$conexao) or die ("Impossível gravar dados"); // grava ou erro /* Envia commit e fecha BD */ ibase_commit($conexao); ibase_close($conexao);?> <HTML><HEAD><TITLE></TITLE> <META http-equiv=content-type content="text/html; charset=windows-1252"> <META content="mshtml 5.50.4522.1800" name=generator></head> <BODY text=#000000 vlink=#000000 alink=#000000 link=#000000 background=""><p align=center><font face=verdana color=#dd0000 size=6><strong>suporte on-line</strong><font face=arial color=#000000 size=2><br>a ajuda mais próxima de você</font></font></p> <P align=center><font face=arial size=4>cadastro DE USUÁRIO</FONT></P><P> </P> <P align=center> <? if (!isset($erro)) {?> <FONT face=arial size=4>dados gravados com sucesso.</font></p> <? else {?> <FONT face=arial size=4>foram encontrados erros em seu formulário:</font> <P></P>

18 Desenvolvimento de aplicações em PHP e HTML com banco-de-dados para Web <UL type=square> <? foreach($erro as $erromsg) { echo "<LI>$erromsg"; echo "</li></ul>";?> <P align=center><font face=arial size=4><a target="" href="index.htm">voltar</a></font></p></body></html> Figura 4.4: Código de incluiusuario.php PÁGINA INICIAL (II) Já com a possibilidade de cadastrar usuários, entre clientes e atendentes, é necessário que um usuário se identifique, através do seu e-mail e senha. Retorne à página inicial, em index.htm, e crie um formulário - form - de acesso, com os campos email e senha1 (one-line text box), e um botão [Acessar]. Configure o atributo action do seu formulário para acessar.php, e o método de acesso igual a POST. Sua página inicial agora ficará como na figura 4.5. Figura 4.5: Tela inicial com formulário de acesso e atalho para cadastro

Leonardo Lacerda Alves www.lacerda.eti.br 19 AUTENTICAÇÃO DE USUÁRIOS Somente após cadastrado no sistema, um usuário pode ter acesso aos programas de criação de categorias, escrita de questões, leitura de mensagens, busca no banco-de-dados e outros recursos. Para isso é necessário um processo de autenticação, o qual começa na página inicial (Figura 4.5), (1) com o usuário informando seu e-mail e senha, (2) passa pela identificação do e-mail e verificação da corretude da senha e (3) grava no servidor web um certificado de autenticidade, o qual é conferido a cada ação do usuário. Dessa maneira, o processo de autenticação se repete a cada nova abertura de página, devendo, como a configuração do banco-de-dados (Figura 4.3). O processo de autenticação é descrito na Figura 4.6.. MENU PRINCIPAL (I) Estando o usuário autenticado, ele deve ter acesso aos principais recursos: escrever nova questão, ver questões respondidas e as que estiverem pendentes e cadastrar categorias caso seja um atendente. A partir da página inicial, em index.htm, grave-a como principal.php, desenhe a página para que pareça a Figura 4.7.

20 Desenvolvimento de aplicações em PHP e HTML com banco-de-dados para Web Figura 4.7: Página principal para usuários autenticados A página principal.php só pode estar disponível caso o usuário esteja autenticado. As páginas acessadas a partir dessa também exigem autenticação. Assim, todos os atalhos deverão incluir a identificação da sessão. Analisemos a Figura 4.8.. Quatro seções estão disponíveis aos usuários: escrever questão, busca de mensagens, listas de questões respondidas e questões pendentes. Os administradores contam com mais uma seção: categorias. Conforme exibido na Figura 4.8, todas essas seções estão em arquivos isolados de principal.php, sendo incorporados ao menu com a função include_once( ).

Leonardo Lacerda Alves www.lacerda.eti.br 21 CATEGORIAS DE ATENDIMENTO Somente um arquivo é necessário para permitir o cadastro de categorias do nosso sistema. O formulário existente no menu principal nos leva para categoria.php, com o código da categoria selecionado, o qual permite editar o nome da categoria ou exclui-la, ou código igual a 0, o que indica uma operação de inclusão. A Figura 4.9 exibe o corpo do script categoria.php, o qual pode ser construído sobre a estrutura do arquivo principal.php, sendo bastante abrir o segundo e acionar o menu File > Save as... Figura 4.9: Script categoria.php <? include ("autenticar.php"); include ("conf_bd.php"); if (!isset($oper)) { if ($codigo == 0) { $oper = "I"; $descricao = ""; else { // categoria escolhida $sql = "select cadescricao from categoria "; $sql.= "where cacodigo = '". $codigo. "'"; $conexao = ibase_connect($bd,$bdusuario,$bdsenha) or die("impossível conectar"); $resultado = ibase_query($sql,$conexao) or die("impossível localizar"); ibase_close($conexao); $linha = ibase_fetch_row($resultado); // rtrim retira espaços a direita do texto $descricao = rtrim($linha[0]); ibase_free_result($resultado); $oper = "A"; else { // oper já definida if ($oper == "I") { $sql = "select max(cacodigo) from categoria"; $conexao = ibase_connect($bd,$bdusuario,$bdsenha) or die("impossível conectar"); $resultado = ibase_query($sql,$conexao) or die("impossível localizar");

22 Desenvolvimento de aplicações em PHP e HTML com banco-de-dados para Web ibase_close($conexao); $linha = ibase_fetch_row($resultado); ibase_free_result($resultado); $codigo = $linha[0] + 1; $sql = "insert into categoria (cacodigo, "; $sql.= "cadescricao) values ("; $sql.= $codigo. ",'"; $sql.= $descricao."')"; else if ($oper == "A") { $sql = "update categoria set cadescricao='"; $sql.= $descricao. "' where cacodigo = "; $sql.= $codigo; else if ($oper == "E") { $sql = "delete from categoria where cacodigo = "; $sql.= $codigo; // incluir, atualizar ou excluir $conexao = ibase_connect($bd,$bdusuario,$bdsenha) or die("impossível conectar"); ibase_query($sql,$conexao) or die("impossível localizar"); ibase_commit($conexao); ibase_close($conexao); $oper = "Fim"; // fim de oper já definida?><html><head><title></title> <META http-equiv=content-type content="text/html; charset=windows-1252"> <META content="mshtml 5.50.4522.1800" name=generator></head> <BODY text=#000000 vlink=#000000 alink=#000000 link=#000000> <P align=center><font face=verdana color=#dd0000 size=6><strong>suporte on-line</strong><font face=arial color=#000000 size=2><br>a ajuda mais próxima de você</font></font></p> <P align=center><font face=arial size=4>categorias</font></p> <P align=center><font face=arial>[ <A href="principal.php">menu principal</a> ]</FONT></P> <script LANGUAGE=PHP> if ($oper == "Fim") { echo "<P align=center><font face=arial size=4>"; echo "Banco-de-dados atualizado</font></p>"; </script> <P align=left> <FORM title=categoria action=categoria.php method=post><font face=arial></font></p>

Leonardo Lacerda Alves www.lacerda.eti.br 23 <P align=left><font face=arial> <SCRIPT language=php> echo "<INPUT type=hidden name=codigo VALUE='".$codigo."'>"; echo "<INPUT type=hidden value='".$sessid."' name=sessid>"; </SCRIPT> <TABLE cellspacing=3 cellpadding=3 width="100%" border=0> <TBODY> <TR> <TD width="50%" background=""> <P align=right>operação:</p></td> <TD> <SCRIPT language=php> $opi = $opa = $ope = ""; if ($oper == "I") { $opi = " checked"; else if ($oper == "A") { $opa = " checked"; else if ($oper == "E") { $ope = " checked"; $tmp1 = "<INPUT type=radio name=oper value="; echo $tmp1."i".$opi.">inclusão"; echo $tmp1."a".$opa.">atualização"; echo $tmp1."e".$ope.">exclusão"; </SCRIPT> </TD></TR> <TR> <TD> <P align=right><font face=arial>descrição: </FONT></P></TD><TD><INPUT maxlength=30 value="<? echo $descricao;?>" name=descricao></td></tr> </TBODY></TABLE></FONT></P><P align=center><input type=submit value=confirma name=enviar></p><p align=left><font face=arial></font></form> </P></BODY></HTML> Figura 4.9: Script categorias.php LISTAR CATEGORIAS A lista de categorias em uma caixa drop-down é usada na página principal do nosso sistema, no cadastro de categorias e na escrita de nova questão. Por isso o script para listagem em PHP e HTML é incluido pelo arquivo listarcategoria.php, descrito na Figura 4.10. Figura 4.10: Script listarcategorias.php

24 Desenvolvimento de aplicações em PHP e HTML com banco-de-dados para Web <? include_once("conf_bd.php"); // cria função que recebe valor como parâmetro function listarcategorias ($codcat) { // usa variáveis locais na função global $bd, $bdusuario, $bdsenha; $conexao = ibase_connect($bd,$bdusuario,$bdsenha); $sql = "select cacodigo, cadescricao from categoria "; $sql.= "order by cadescricao"; $resultado = ibase_query($sql,$conexao); while ($linha = ibase_fetch_row($resultado)) { // rtrim retira espaços em branco a esquerda do texto echo "<OPTION value=". rtrim($linha[0]); if ($linha[0] == $codcat) { echo " selected"; echo ">"; echo rtrim($linha[1]). "</OPTION>"; ibase_free_result($resultado); ibase_close($conexao);?> Figura 4.10: Script listarcategorias.php QUESTÕES E MENSAGENS A partir dos conhecimentos adquiridos, tente construir o código de escrita das questões, listagem das questões em ordem de data decrescente, leitura das mensagens, resposta e busca.

Leonardo Lacerda Alves www.lacerda.eti.br 25 5.CONCLUSÃO O modelo de desenvolvimento para web considera os mesmos princípios da engenharia de software de execução no lado cliente, embora certos atributos sejam tratados com maior atenção quando em ambiente web, uma vez que segurança, confiabilidade, portabilidade, legibilidade de código e capacidade de escrita são condições críticas para o projeto de uma aplicação web, além do natural desempenho ser critério básico para a execução em um servidor, em intranet ou Internet. Projetos de engenharia de aplicações web devem começar na Funcesi em alguns meses, o que representa uma oportunidade adicional para pesquisarmos sobre tais softwares e adquirirmos novos conhecimentos.

26 Desenvolvimento de aplicações em PHP e HTML com banco-de-dados para Web 6.REFERÊNCIAS BIBLIOGRÁFICAS [1] ALVES, Leonardo Lacerda; BITTENCOUT, Fabricio Roulim. PHP: conceitos essenciais para implementação de aplicações web. 7 Faces. Funcesi: Itabira, v. 4, n.1, jan. a jun. 2003. [2]AMOR, Daniel. A revolução do e-business: vivendo e aprendendo em um mundo interconectado. São Paulo: Makron Books, 2000. 606 p. [3]BAKKEN, Stig Sæther. Introduction to PHP. Internet < www. zend. com / zend / art / intro. php>. 17/Abr/2000. [4]BARRETO, Maurício V.S.; et al. Aplicações web com PHP. Internet: <www. vivas. com. br>, Jun/2000. 104 p. [5]BRUFAU, Marc; CASALS, Xavier; MAS, David. Conceptes avançats de sistemes operatius. Distribució d aplicacions mitjançant web. (apunts de l assignatura en format transparència). Departament d Arquitectura de Computadors. 2001. [6]GRALLA, Preston. Como funcionam as intranets. Editora Quark, São Paulo, 1996. 206 p. [7]LERDOF, Rasmus et al. PHP Manual. Internet: <www. php. net / docs. php>, 08/Out/2002. [8]REILLY, George V. ASP best practices. Microsoft Corporation. Internet: <support. microsoft. com / support / activeserver / AspBestPractices. ppt>, 06/03/2003. [9]ROSA, César Augusto Salabert. Internet: história, conceitos e serviços. São Paulo: Érica, 1998. [10]SEBESTA, Robert W. Conceitos de Linguagens de Programação. 4. ed. Porto Alegre: Bookman, 2000. 624 p.