Escolar Documentos
Profissional Documentos
Cultura Documentos
Reuso e a segurança
PDO é uma classe desenvolvida para trabalhar com procedimentos relacionados a Banco
de Dados. PDO oferece segurança extra.
Os recursos oferecidos são suficiente para trabalhar implementando toda nossa aplicação
sem nos preocuparmos com qual banco estamos utilizando, e que uma mudança posterior
na escolha do banco não trará grandes mudanças na aplicação.
Configurando o PDO
Listagem 1: Habilitando PDO no Linux
extension=pdo.so
extension=pdo_mysql.so
extension=pdo_pgsql.so
extension=pdo_sqlite.so
extension=php_pdo.dll
extension=php_pdo_mysql.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
Os exemplos que se seguem utilizam o padrão de projeto MVC (Model View Controller), que
Um arquivo de conexão com o banco em PDO será o ponto de conexão da aplicação com o
banco.
class Conexao {
return self::$instance;
}
?>
class PojoUsuario {
private $cod_usuario;
private $nome;
private $email;
private $senha;
private $ativo;
private $perfil;
public function getCod_usuario() {
return $this->cod_usuario;
}
?>
A classe DAO será responsável por realizar as consultas, inserções, deleções e edições no
banco. O DAO é responsável por realizar processos no banco e retornar POJOs (se
chamado Singleton, que em resumo faz que com que o objeto seja criado apenas uma vez
na memória.
Listagem 5: DAO para a Classe Usuario
<?php
class DaoUsuario {
return self::$instance;
}
$p_sql = Conexao::getInstance()->prepare($sql);
$p_sql->bindValue(":nome", $usuario->getNome());
$p_sql->bindValue(":email", $usuario->getEmail());
$p_sql->bindValue(":senha", $usuario->getSenha());
$p_sql->bindValue(":ativo", $usuario->getAtivo());
$p_sql->bindValue(":cod_perfil", $usuario->getPerfil()-
>getCod_perfil());
return $p_sql->execute();
} catch (Exception $e) {
print "Ocorreu um erro ao tentar executar esta ação, foi gerado
um LOG do mesmo, tente novamente mais tarde.";
GeraLog::getInstance()->inserirLog("Erro: Código: " .
$e->getCode() . " Mensagem: " . $e->getMessage());
}
}
$p_sql = Conexao::getInstance()->prepare($sql);
$p_sql->bindValue(":nome", $usuario->getNome());
$p_sql->bindValue(":email", $usuario->getEmail());
$p_sql->bindValue(":senha", $usuario->getSenha());
$p_sql->bindValue(":ativo", $usuario->getAtivo());
$p_sql->bindValue(":cod_perfil", $usuario->getPerfil()->
getCod_perfil());
$p_sql->bindValue(":cod_usuario", $usuario->getCod_usuario());
return $p_sql->execute();
} catch (Exception $e) {
print "Ocorreu um erro ao tentar executar esta ação, foi gerado
um LOG do mesmo, tente novamente mais tarde.";
GeraLog::getInstance()->inserirLog("Erro: Código: " . $e->
getCode() . " Mensagem: " . $e->getMessage());
}
}
return $p_sql->execute();
} catch (Exception $e) {
print "Ocorreu um erro ao tentar executar esta ação, foi gerado
um LOG do mesmo, tente novamente mais tarde.";
GeraLog::getInstance()->inserirLog("Erro: Código: " . $e->
getCode() . " Mensagem: " . $e->getMessage());
}
}
?>
return $p_sql->execute();
} catch (Exception $e) {
print "Ocorreu um erro ao tentar executar esta ação, foi gerado
um LOG do mesmo, tente novamente mais tarde.";
GeraLog::getInstance()->inserirLog("Erro: Código: " . $e->
getCode() . " Mensagem: " . $e->getMessage());
}
}
PDO irá pegar sua SQL e implementar os escapes necessários e segurança necessária. A
única coisa que é necessário fazer é passar os parâmetros definidos no SQL com o método