Curso PHP UNIFACS 2014.1 – Databases & Sessions

589 visualizações

Publicada em

Publicada em: Software
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
589
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
24
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Curso PHP UNIFACS 2014.1 – Databases & Sessions

  1. 1. Curso PHP @JonataWeber 2014 Databases & Sessions
  2. 2. PHP Sessions • Como identificar um usuário na internet? • Sessōes trabalham com identificador único (UID) • Armazenamento temporário
  3. 3. PHP Sessions<?php! ! // inicia um PHP Session! session_start();! ! // guarda uma informação na sessão! $_SESSION['message'] = 'Hello, Session!';! ! // recupera uma informação da sessão! echo $_SESSION['message'];! ! // remove parte da sessão ! unset($_SESSION['message']);! ! // remove a sessão inteira ! session_destroy();!
  4. 4. Databases • Necessidade de Persistir e Recuperar dados por tempo indeterminado • Geralmente possui armazenamento não-volátil
  5. 5. Drivers Nativos • Uma API diferente para cada banco de dados • mysqli, pgsql, mssql, etc. • Melhor opção até o PHP 5.1.0
  6. 6. MySQL Extension • Será removida nas próximas versões • Funções iniciadas com mysql_* • mysql_connect, mysql_query, mysql_num_rows, etc… • Substituir por mysqli ou PDO Depreciada no PHP 5.5.0
  7. 7. MySQLi Extension http://php.net/mysqli <?php! // mysqli! $mysqli = new mysqli("localhost", "root", "mysqlpwd", “test");! ! $result = $mysqli->query("SELECT 'Olá, usuário MySQL!' AS _message FROM DUAL");! ! $row = $result->fetch_assoc();! ! echo $row['_message'];!
  8. 8. PDO Extension http://www.php.net/pdo <?php! ! // PDO! $pdo = new PDO('mysql:host=localhost;dbname=test', 'root', ‘mysqlpwd');! ! $statement = $pdo->query("SELECT 'Olá, usuário MySQL!' AS _message FROM DUAL");! ! $row = $statement->fetch(PDO::FETCH_ASSOC);! ! echo $row['_message'];!
  9. 9. PDO Extension • Não irá traduzir suas consultas SQL • Conexão com múltiplos banco de dados usando a mesma API • Mais importante: PDO evita ataques de SQL Injections • PDO Statements + Bind Parameters
  10. 10. SQL Injection <?php! ! $pdo = new PDO('sqlite:/path/db/users.db');! $pdo->query("SELECT name FROM users WHERE id = ".$_GET['id']); // <-- NO!! SELECT name FROM users WHERE id = 50! http://yourdomain.com/users?id=50 Resultado:
  11. 11. SQL Injection SELECT name FROM users WHERE id = 50;DELETE FROM users! E se… http://yourdomain.com/users?id=50%3BDELETE+FROM+users Resultado: <?php! ! $pdo = new PDO('sqlite:/path/db/users.db');! $pdo->query("SELECT name FROM users WHERE id = ".$_GET['id']); // <-- NO!!
  12. 12. SQL Injection Como evitar? <?php! ! $pdo = new PDO('sqlite:/path/db/users.db');! $stmt = $pdo->prepare('SELECT name FROM users WHERE id = :id');! $stmt->bindParam(':id', $_GET['id'], PDO::PARAM_INT); // <-- Automatically sanitized by PDO! $stmt->execute();! Maiores informações: https://www.owasp.org/index.php/SQL_Injection
  13. 13. Front Controller • Padrão Arquitetural • Bastante utilizado em Aplicações Web • Responsável pelo Fluxo da Aplicação • Evita duplicação de código • Manipulação de Sessões, Caching, Filtro de dados, Autenticação, etc.
  14. 14. Referências • http://www.phptherightway.com/ • http://www.php.net/

×