Trabalho PHP - PowerPoint PPT Presentation

emma-cortez
trabalho php n.
Skip this Video
Loading SlideShow in 5 Seconds..
Trabalho PHP PowerPoint Presentation
Download Presentation
Trabalho PHP

play fullscreen
1 / 20
Download Presentation
Trabalho PHP
75 Views
Download Presentation

Trabalho PHP

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Trabalho PHP Website baseado em PHP, JavaScript e bases de dados PostgreSQL André Costa @ T2 - SIEM - MIEEC/FEUP

  2. Índice • Introdução • Estrutura da base de dados • Template e usabilidade • Organização de código • Conclusão e discussão do resultado final André Costa @ T2 - SIEM - MIEEC/FEUP

  3. Introdução Desenvolvi um website escrito em PHP capaz de gerir uma base de dados com alguma complexidade de encontro com as especificações presentes no guião de trabalho disponibilizado. Este website teria de ser capaz de ler, criar e modificar entradas em várias tabelas com dependências entre si; ter um sistema de autenticação e vários níveis de permissões/restrições relativamente ao acesso às diferentes funções disponíveis pelos utilizadores. Também foi importante implementar algumas medidas de controlo, em JavaScript, nos formulários de entrada que o utilizador possa interagir. Desta forma, o website encontra-se mais protegido contra ataques sob a forma de SQL Injectione ajuda os utilizadores mais desatentos sobre as regras de preenchimento. André Costa @ T2 - SIEM - MIEEC/FEUP

  4. Estrutura da Base de Dados Como sugerido no guião, optei por organizar a base de dados da seguinte forma: Clientes (código, nome, morada, telefone, estado); Maquinas (código, descrição, capacidade, operador, estado); Peças (código, descrição, cor, peso, cliente, estado); Encomendas (número, código da peça, código do cliente, código da máquina, quantidade, data de entrega, estado); Stocks (código da peça, quantidade em armazém, quantidade disponível, estado); Users (ID, username, password, permissões, nome, email); (O script para a criação da base de dados encontra-se disponível na pasta «extra» do trabalho.) É de realçar a adição da coluna “estado” em todas as tabelas, à excepção da dos users. Esta variável actua como flag para se saber se a entrada foi ou não eliminada, permitindo excluí-la dos resultados sem eliminá-la definitivamente, sendo assim possível consultar recuperar entradas eliminadas através do painel de controlo do PostgreSQL. André Costa @ T2 - SIEM - MIEEC/FEUP

  5. Template e usabilidade Por motivos de constrangimento de tempo e maior foco na execução das diferentes funcionalidades propostas para o website, decidi reciclar o template que desenvolvi para o primeiro trabalho, modificando-o de acordo com as novas exigências deste projecto. O menu foi adaptado, estando dividido por “Home”, redirecciona para a página de entrada, por “Base de Dados” e “Área Pessoal”. O segundo contém as funcionalidades de consulta, pesquisa e adição de entradas na base de dados. Estas funções só são possíveis de aceder após efectuar o login. É possível aceder aos campos de registo e loginno canto superior direito do template. Após ser efectuado o login, o nome do utilizador será apresentado nessa área, junto ao botão de logout. Um novo utilizador terá sempre somente a possibilidade de consultar e pesquisar entradas e de alterar o seu perfil. André Costa @ T2 - SIEM - MIEEC/FEUP

  6. 1 2 Header 3 Body Footer Legenda: 1 – Zona de login / registo e de estado de sessão; 2 – Menu geral; 3 – Submenu com as várias funções de gestão de base de dados. André Costa @ T2 - SIEM - MIEEC/FEUP

  7. Template e usabilidade Em todas as opções para o acesso à base de dados aparece uma primeira página com um dropdown para escolher em qual tabela quer efectuar a acção escolhida. No caso da acção de pesquisa, também irá aparecer também um dropdownpara escolher a categoria da pesquisa e uma textboxpara submeter os dados. As acções de consultar e pesquisar remetem para uma página de apresentação de resultados que será apresentada no próximo dispositivo. Só os utilizadores com permissões de administrador é que têm acesso às colunas de modificação, eliminação e ao botão de criação de uma nova entrada nessa página de apresentação. André Costa @ T2 - SIEM - MIEEC/FEUP

  8. Vista de administrador dos resultados: André Costa @ T2 - SIEM - MIEEC/FEUP

  9. Vista de utilizador normal dos resultados: André Costa @ T2 - SIEM - MIEEC/FEUP

  10. Template e usabilidade A opção de “adicionar” uma nova entrada do menu ou o botão de “criar nova entrada” abrem um novo formulário de preenchimento. O botão de “modificar” uma entrada também retorna a mesma página, mas com o formulário preenchido com os valores da entrada de origem. Estas acções devolvem uma mensagem após a conclusão da mesma. O botão de “eliminar” devolve uma mensagem para uma nova página após a conclusão desta acção. A intenção de “modificar” e “eliminar” tem de ser validada confirmando o alerta retornado ao clicar no respectivo botão. André Costa @ T2 - SIEM - MIEEC/FEUP

  11. Nova entrada (encomenda): André Costa @ T2 - SIEM - MIEEC/FEUP

  12. Modificar entrada (encomenda): André Costa @ T2 - SIEM - MIEEC/FEUP

  13. Template e usabilidade A “área pessoal” e o “registo” também partilham de semelhanças, sendo que o primeiro encontra-se preenchido com os valores de origem da conta do utilizador. O login consiste simplesmente nos dois primeiros campos de texto apresentados na função anterior. André Costa @ T2 - SIEM - MIEEC/FEUP

  14. Nova conta de utilizador: André Costa @ T2 - SIEM - MIEEC/FEUP

  15. Organização de Código Optei por utilizar uma organização funcional na organização do código, tanto na arrumação dos ficheiros pelas diferentes pastas, como dentro dos próprios scripts desenvolvidos. Esta abordagem tem os prós e contras que serão discutidos no próximo capítulo. A divisão por pastas foi a seguinte: André Costa @ T2 - SIEM - MIEEC/FEUP

  16. Organização de Código Pastas: • <root> – Páginas acessíveis no browser; • css – Folhas de estilo; • database – Interacções com a base de dados (connectsequeries); • display – Páginas de apresentação do body; • img – Imagens utilizadas no website; • includes – Bibliotecas de ferramentas (tratamento de resultados, validação de formulários, mensagens, etc.); • modules – Scripts de geração de conteúdo e de tratamento de resultados da base de dado. • actions – subgrupo nos módulos de scripts que efectuam uma mudança de estado relevante na interface ou na base de dados. André Costa @ T2 - SIEM - MIEEC/FEUP

  17. Organização de Código Regra geral, os scripts de display não são partilhados entre interfaces, salvo excepções (novo-modifica.php). Em contrapartida, os scripts de modules têm várias funções que são partilhadas entre inúmeras interfaces (sendo o maior exemplo o fromDB.php). André Costa @ T2 - SIEM - MIEEC/FEUP

  18. display/header • display/footer Organização de Código • display/mostra • modules/fromDB • modules/fromResult • database/getQuery • includes/messages • includes/treatResult • includes/translateField Exemplo de esquema de funcionamento para uma das possíveis interacções do utilizador (consultar): Scripts da interface com o utilizador Scripts de geração da tabela User Input André Costa @ T2 - SIEM - MIEEC/FEUP

  19. Conclusão e discussão do resultado final Ficaram vários componentes adicionais por implementar: • Criar painel de controlo de administração. Este painel seria acedido por um “superadmin” (novo nível de permissões) poderia modificar ou eliminar utilizadores. Assim seria possível modificar os níveis de permissão sem ser necessário aceder ao painel de controlo PostgreSQL; • Criar uma plataforma para clientes (mais um nível de permissões) onde só fosse possível consultar os produtos e efectuar encomendas; • Implementar rotinas de verificação na criação e modificação de entradas de forma a ser impossível existirem duas entradas iguais. • Aumentar o nível de sensibilidade no tratamento dos formulários (só permitir números em formulários numéricos); Penso que os componentes implementados estão relativamente robustos e funcionais. André Costa @ T2 - SIEM - MIEEC/FEUP

  20. Conclusão e discussão do resultado final A abordagem da organização de código por funcionalidades tem a vantagem de ser mais fácil isolar e reutilizar funções entre as várias instâncias da aplicação. A desvantagem desta abordagem está que na criação de uma nova instância (por exemplo, na modificação de uma entrada) torna-se mais difícil fazer debugging quantas mais dependências (includes) existirem. Existiram alguns atributos do PHP e do JavaScript que geraram alguma confusão na produção do código, especialmente as regras de utilização da função header(“string”) e a utilização de POSIX Regular Expressions para delimitar intervalos de caracteres válidos para o tratamento de formulários. Também deparei-me com um bug em que aparentemente duas rotinas idênticas não funcionam da mesma forma (modificar e adicionar). Não fui capaz de identificar a causa (mas identifiquei a relação do bug com os POSTs gerados anteriormente). André Costa @ T2 - SIEM - MIEEC/FEUP