SlideShare une entreprise Scribd logo
1  sur  14
Télécharger pour lire hors ligne
Curso PHP
@JonataWeber
2014
Databases & Sessions
PHP Sessions
• Como identificar um usuário na
internet?
• Sessōes trabalham com identificador
único (UID)
• Armazenamento temporário
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();!
Databases
• Necessidade de Persistir e
Recuperar dados por tempo
indeterminado
• Geralmente possui armazenamento
não-volátil
Drivers Nativos
• Uma API diferente para cada banco
de dados
• mysqli, pgsql, mssql, etc.
• Melhor opção até o PHP 5.1.0
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
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'];!
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'];!
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
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:
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!!
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
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.
Referências
• http://www.phptherightway.com/
• http://www.php.net/

Contenu connexe

Similaire à Curso PHP UNIFACS 2014.1 – Databases & Sessions

Qualitypress - Segurança em Aplicações Web com PHP
Qualitypress - Segurança em Aplicações Web com PHPQualitypress - Segurança em Aplicações Web com PHP
Qualitypress - Segurança em Aplicações Web com PHPQuality Press
 
Instalando o MySQL em menos de 10 minutos
Instalando o MySQL em menos de 10 minutosInstalando o MySQL em menos de 10 minutos
Instalando o MySQL em menos de 10 minutosAlexandre Almeida
 
Sessões (in portuguese)
Sessões (in portuguese)Sessões (in portuguese)
Sessões (in portuguese)Bruno Pedro
 
Aula 11 - Controle de sessão em PHP - Programação Web
Aula 11  - Controle de sessão em PHP - Programação WebAula 11  - Controle de sessão em PHP - Programação Web
Aula 11 - Controle de sessão em PHP - Programação WebDalton Martins
 
Prog web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosProg web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosRegis Magalhães
 
Sistemas operacionais aula 01
Sistemas operacionais   aula 01Sistemas operacionais   aula 01
Sistemas operacionais aula 01Professor Douglas
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2PrinceGuru MS
 
Diapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfDiapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfJ0071
 
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHPLabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHPCarlos Santos
 
Integração de Sistemas usando tecnologias open source
Integração de Sistemas usando tecnologias open sourceIntegração de Sistemas usando tecnologias open source
Integração de Sistemas usando tecnologias open sourceTiago Peczenyj
 
Estruturas de Sistemas Operacionais
Estruturas de Sistemas OperacionaisEstruturas de Sistemas Operacionais
Estruturas de Sistemas OperacionaisIsaac Vieira
 

Similaire à Curso PHP UNIFACS 2014.1 – Databases & Sessions (20)

PHP MySQL Aula 08
PHP MySQL Aula 08PHP MySQL Aula 08
PHP MySQL Aula 08
 
Sapo Sessions PHP
Sapo Sessions PHPSapo Sessions PHP
Sapo Sessions PHP
 
Qualitypress - Segurança em Aplicações Web com PHP
Qualitypress - Segurança em Aplicações Web com PHPQualitypress - Segurança em Aplicações Web com PHP
Qualitypress - Segurança em Aplicações Web com PHP
 
Instalando o MySQL em menos de 10 minutos
Instalando o MySQL em menos de 10 minutosInstalando o MySQL em menos de 10 minutos
Instalando o MySQL em menos de 10 minutos
 
Aula 5
Aula 5Aula 5
Aula 5
 
Sessões (in portuguese)
Sessões (in portuguese)Sessões (in portuguese)
Sessões (in portuguese)
 
Aula 11 - Controle de sessão em PHP - Programação Web
Aula 11  - Controle de sessão em PHP - Programação WebAula 11  - Controle de sessão em PHP - Programação Web
Aula 11 - Controle de sessão em PHP - Programação Web
 
Prog web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosProg web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhos
 
Sessao
SessaoSessao
Sessao
 
Aula 5 - Cookies e sessões em PHP
Aula 5 - Cookies e sessões em PHPAula 5 - Cookies e sessões em PHP
Aula 5 - Cookies e sessões em PHP
 
Aula 5 - Cookies e Sessões em PHP
Aula 5 - Cookies e Sessões em PHPAula 5 - Cookies e Sessões em PHP
Aula 5 - Cookies e Sessões em PHP
 
Sistemas operacionais aula 01
Sistemas operacionais   aula 01Sistemas operacionais   aula 01
Sistemas operacionais aula 01
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
 
Aula 5 - Cookies e Sessões em PHP
Aula 5 - Cookies e Sessões em PHPAula 5 - Cookies e Sessões em PHP
Aula 5 - Cookies e Sessões em PHP
 
Diapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfDiapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdf
 
Cakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudouCakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudou
 
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHPLabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
 
Integração de Sistemas usando tecnologias open source
Integração de Sistemas usando tecnologias open sourceIntegração de Sistemas usando tecnologias open source
Integração de Sistemas usando tecnologias open source
 
Estruturas de Sistemas Operacionais
Estruturas de Sistemas OperacionaisEstruturas de Sistemas Operacionais
Estruturas de Sistemas Operacionais
 

Plus de Jonata Weber

Programando sua carreira
Programando sua carreiraProgramando sua carreira
Programando sua carreiraJonata Weber
 
Curso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – FrameworksCurso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – FrameworksJonata Weber
 
Curso PHP UNIFACS 2014.1 – 2ª aula
Curso PHP UNIFACS 2014.1 – 2ª aulaCurso PHP UNIFACS 2014.1 – 2ª aula
Curso PHP UNIFACS 2014.1 – 2ª aulaJonata Weber
 
Curso PHP UNIFACS 2014.1 – 1a Aula
Curso PHP UNIFACS 2014.1 – 1a AulaCurso PHP UNIFACS 2014.1 – 1a Aula
Curso PHP UNIFACS 2014.1 – 1a AulaJonata Weber
 
Padrões de Projeto em Aplicações Web
Padrões de Projeto em Aplicações WebPadrões de Projeto em Aplicações Web
Padrões de Projeto em Aplicações WebJonata Weber
 
PHP Orientado a Objetos - 1a Parte
PHP Orientado a Objetos - 1a PartePHP Orientado a Objetos - 1a Parte
PHP Orientado a Objetos - 1a ParteJonata Weber
 
SIMCIT 2013 - Mini-curso PHP
SIMCIT 2013 - Mini-curso PHPSIMCIT 2013 - Mini-curso PHP
SIMCIT 2013 - Mini-curso PHPJonata Weber
 
Curso PHP - 2a. Aula (2013.2)
Curso PHP - 2a. Aula (2013.2)Curso PHP - 2a. Aula (2013.2)
Curso PHP - 2a. Aula (2013.2)Jonata Weber
 
Curso PHP - 1a. Aula (2013.2)
Curso PHP - 1a. Aula (2013.2)Curso PHP - 1a. Aula (2013.2)
Curso PHP - 1a. Aula (2013.2)Jonata Weber
 

Plus de Jonata Weber (9)

Programando sua carreira
Programando sua carreiraProgramando sua carreira
Programando sua carreira
 
Curso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – FrameworksCurso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – Frameworks
 
Curso PHP UNIFACS 2014.1 – 2ª aula
Curso PHP UNIFACS 2014.1 – 2ª aulaCurso PHP UNIFACS 2014.1 – 2ª aula
Curso PHP UNIFACS 2014.1 – 2ª aula
 
Curso PHP UNIFACS 2014.1 – 1a Aula
Curso PHP UNIFACS 2014.1 – 1a AulaCurso PHP UNIFACS 2014.1 – 1a Aula
Curso PHP UNIFACS 2014.1 – 1a Aula
 
Padrões de Projeto em Aplicações Web
Padrões de Projeto em Aplicações WebPadrões de Projeto em Aplicações Web
Padrões de Projeto em Aplicações Web
 
PHP Orientado a Objetos - 1a Parte
PHP Orientado a Objetos - 1a PartePHP Orientado a Objetos - 1a Parte
PHP Orientado a Objetos - 1a Parte
 
SIMCIT 2013 - Mini-curso PHP
SIMCIT 2013 - Mini-curso PHPSIMCIT 2013 - Mini-curso PHP
SIMCIT 2013 - Mini-curso PHP
 
Curso PHP - 2a. Aula (2013.2)
Curso PHP - 2a. Aula (2013.2)Curso PHP - 2a. Aula (2013.2)
Curso PHP - 2a. Aula (2013.2)
 
Curso PHP - 1a. Aula (2013.2)
Curso PHP - 1a. Aula (2013.2)Curso PHP - 1a. Aula (2013.2)
Curso PHP - 1a. Aula (2013.2)
 

Curso PHP UNIFACS 2014.1 – Databases & Sessions

  • 2. PHP Sessions • Como identificar um usuário na internet? • Sessōes trabalham com identificador único (UID) • Armazenamento temporário
  • 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. Databases • Necessidade de Persistir e Recuperar dados por tempo indeterminado • Geralmente possui armazenamento não-volátil
  • 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. 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. 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. 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. 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. 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. 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. 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. 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.