PHP e MySQL. Programação de Servidores Marx Gomes Van der Linden. http://marx.vanderlinden.com.br/



Documentos relacionados
UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET. Programação para Internet I

PHP INTEGRAÇÃO COM MYSQL PARTE 2

TECNOLOGIA WEG II PHP com SGBD MYSQL

BANCO DE DADOS WEB. Professor Luciano Roberto Rocha

Armazenamento organizado facilitando SCRUD; Agiliza processo de desenvolvimento de sistemas;

PHP e MySQL Autenticação de Usuários

PHP (Seções, Cookies e Banco de Dados)

Banco de Dados com PHP

Programação Web Prof. Wladimir

Internet e Programação Web

13 Conectando PHP com MySQL 13.1 Introdução

Treinamento em PHP. Aula 7. Ari Stopassola Junior

Construindo Aplicações Web com. PHPe MySQL. André Milani. Novatec

Curso PHP Aula 08. Bruno Falcão

Programação WEB II. PHP e Banco de Dados. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza

Conexão com Banco de Dados, Inserção, exclusão e atualização de registros

Desenvolvimento de Aplicações para Internet Aula 9

QUESTÃO 4 QUESTÃO 3 QUESTÃO 6 QUESTÃO 5. O código a seguir imprimirá Resultado = 33. <?php $var = 3; echo Resultado =. ($var + 3);?

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

ETEC Dr. Emílio Hernandez Aguilar. Manual Simplificado: MySQL

TECNOLOGIA WEG II PHP com SGBD MYSQL:

PHP Seguro Ernani Azevedo (PROCERGS DRE/ARS Unix)

MySQL. # apt-get install mysql-server. # apt-get install php5-mysql

Prof. Roberto Franciscatto 4º Semestre - TSI - CAFW. Free Powerpoint Templates Page 1

FTIN FORMAÇÃO TÉCNICA EM INFORMÁTICA. Módulo de Programação Prof. Bruno Maciel

Criação Pagina PHP & MySQL

INTRODUÇÃO. No entanto, o que pode ser considerado um produto (resultado) da criação de BDs?

Programação Web com PHP. Prof. Wylliams Barbosa Santos Optativa IV Projetos de Sistemas Web

Segurança em Sistemas Web. Addson A. Costa

Autor: Ricardo Francisco Minzé Júnior - ricardominze@yahoo.com.br Desenvolvendo aplicações em camadas com PHP 5.

Manipulação de Dados em PHP (Visualizar, Inserir, Atualizar e Excluir) Parte 2

Front-End Uso da Linguagem Turbo Delphi para Acesso ao Banco de Dados Mysql

APOSTILA DE LINGUAGEM DE PROGRAMAÇÃO IV

COMANDO DA AERONÁUTICA ESCOLA DE ESPECIALISTAS DE AERONÁUTICA SUBDIVISÃO DE ADMISSÃO E DE SELEÇÃO

Desenvolvimento de Aplicações para Internet Aula 8

ESPECIFICAÇÃO DE PROGRAMAS. PROGRAMADOR Joel Victor. Introdução

Fernando Freitas Costa. Pós-Graduando em Gestão e Docência Universitária. blog.fimes.edu.br/fernando nando@fimes.edu.br

Leonardo Gresta Paulino Murta

DOCUMENTAÇÃO FABULA FRAMEWORK

Como Configurar uma conta de no Microsoft Outlook 2013.

Controle de acesso. .com.br

Programação com Acesso a Banco de Dados

Guia de instalação. Versão 1.10

Seja Muito Bem-Vindo! Mas Por Quê? MySQLi Com e Sem Orientação a Objetos

ECD1200 Equipamento de Consulta de Dados KIT DE DESENVOLVIMENTO

Processo de Envio de

MANUAL DE UTILIZAÇÃO Aplicativo Controle de Estoque Desktop

Backups Via FTP (File Transfer Protocol)

Desenvolvimento orientado a objetos com PEAR: DB/MDB2, DB_DataObject, HTML_QuickForm e DB_DataObjectFormBuilder

Como Configurar uma conta de no Microsoft Outlook 2010.

Sumário. Capítulo 1 Revisão de PHP Capítulo 2 Melhorando o processamento de formulários... 46

Manual Comunica S_Line

MySQL: Controle de Acesso

Prova de pré-requisito

Transações Seguras em Bancos de Dados (MySQL)

PRO2511. MySQL databases Parte III. Escola Politécnica da Universidade de São Paulo. Departamento de Engenharia de Produção

Obs: É necessário utilizar um computador com sistema operacional Windows 7.

Escrito por Sáb, 15 de Outubro de :19 - Última atualização Seg, 26 de Março de :32

MANUAL DE UTILIZAÇÃO Aplicativo Controle de Estoque Mobile

AULA APLICAÇÕES PARA WEB SESSÕES E LOGIN E SENHA

Cartões Pré-pagos. Cartões Pré-pagos

Introdução ao PHP. Prof. Késsia Marchi

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

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

CRUD GERAL E LOGIN Sumário

Configuração do cliente de Outlook 2010 para usuários DAC

JDBC Java Database Connectivity

Desenvolvimento de Aplicativos Web em PHP

Interagindo com Banco de Dados

O que é uma sessão. maneira de preservar dados através de acessos subsequentes.

22/05/2012 CRIANDO UM PROJETO COM TELAS ESTRUTURA DA APLICAÇÃO LOGIN BANCO DE DADOS TAREFAS PHP MYSQL PARTE 2

MySQL: Inserção e Seleção em Tabelas

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

Conceitos de OO AUTOLOAD. <?php function autoload($class_name) { require_once $class_name. '.php'; } $obj = new MyClass1(); $obj2 = new MyClass2();?

Desenvolvimento Web TCC Turma A-1

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro Maio/ 2015

Sumário. Capítulo 1 O que é o PHP? Capítulo 2 Instalação do PHP Capítulo 3 Noções básicas de programação... 25

Manual do usuário. Softcall Java. versão 1.0.5

PHP: Cookies e Sessões

Manual de Administração

Secretaria da Educação do Estado do Rio Grande do Sul. Manual: Sistema de Controle Patrimonial Inventário

Desenvolvimento de Aplicações para Internet Aula 7

Sensor de temperatura Parte 5 Cleiton Bueno Preparando o ambiente do Banco de dados Mysql

C A P I T U L O 10 F U N Ç Õ E S I N T E R N A S P H P P A R A B A N C O D E D A D O S

Sistema de Gerenciamento Remoto

SISTEMA GERENCIAMENTO DE PRODUTOS PHP E MySQL 1. APRESENTAÇÃO

Nota Fiscal de Serviço Eletrônica ISSQN NFSE DANFE. Manual de Utilização

Manual Captura S_Line

FAÇA FÁCIL: DRIVER IGS PARA COMUNICAÇÃO DE PROTOCOLOS PROPRIETÁRIOS INTRODUÇÃO

PHP & Segurança: Uma União Possível

UTILIZANDO O BANCO DE DADOS

Manual de Instalação ProJuris8

Banco de Dados. Prof. Leonardo Barreto Campos 1

MANUAL. Perfil de Professor

Transcrição:

PHP e MySQL Programação de Servidores Marx Gomes Van der Linden http://marx.vanderlinden.com.br/

PHP e MySQL PHP possui 3 interfaces para se comunicar com um banco de dados MySQL. O conjunto de funções mysql_* O conjunto de funções mysqli_* A interface orientada a objeto PEAR::DB Uso geral para vários SGBDs diferentes http://marx.vanderlinden.com.br/ 2

mysql_connect mysql_connect($servidor, $usuario, $senha) Conecta ao servidor MySQL com os parâmetros especificados. Retorna um identificador de conexão em caso de sucesso, ou FALSE em caso de erro. http://marx.vanderlinden.com.br/ 3

mysql_error mysql_error() Retorna a última mensagem de erro emitida pelo MySQL die($msg) Exibe a mensagem especificada e encerra o programa. Usado apenas para debug. http://marx.vanderlinden.com.br/ 4

mysql_select_db mysql_select_db($nomedb, [$link]) Seleciona o banco de dados a ser usado. Retorna TRUE ou FALSE, em caso de sucesso e erro, respectivamente. Se $link não for especificado, utiliza a última conexão aberta. http://marx.vanderlinden.com.br/ 5

mysql_close mysql_close($link) Fecha a conexão com o banco de dados. Normalmente não é necessário: a conexão é fechada automaticamente após término da execução da página. Se $link não for especificado, utiliza a última conexão aberta. Retorna TRUE ou FALSE, em caso de sucesso e erro, respectivamente. http://marx.vanderlinden.com.br/ 6

Exemplo $link = mysql_connect('localhost', 'root', ''); if(!$link) die("erro ao conectar: ". mysql_error()); if(!mysql_select_db('music2')) die("erro ao selecionar o banco de dados:". mysql_error()); mysql_close(); http://marx.vanderlinden.com.br/ 7

Separando a conexão Geralmente, o código que realiza a conexão ao banco de dados é mantido em um arquivo separado contendo apenas estes comandos, com as informações necessários. O código, então, é incluído no início de cada arquivo. http://marx.vanderlinden.com.br/ 8

Separando a conexão http://marx.vanderlinden.com.br/ 9

mysql_query mysql_query($sql, [$link]) Envia uma consulta SQL ao servidor identificado por $link (opcional). Em caso de falha, retorna FALSE. http://marx.vanderlinden.com.br/ 10

mysql_query mysql_query($sql, [$link]) Em caso de sucesso: Para comandos que não resultam em uma tabela (INSERT, UPDATE, etc...), retorna TRUE. Para comandos que resultam em uma tabela (SELECT, SHOW, etc...), retorna um recurso que representa o resultado. http://marx.vanderlinden.com.br/ 11

mysql_num_[rows fields] mysql_num_rows ($res) Retorna o número de colunas do resultado especificado. mysql_num_fields ($res) Retorna a quantidade de campos do resultado especificado. http://marx.vanderlinden.com.br/ 12

Exemplo $res = mysql_query( 'SELECT * FROM cd NATURAL JOIN artista'); if(!$res) die("erro na consulta SQL: ". mysql_error()); $nlinhas = mysql_num_rows($res); $ncampos = mysql_num_fields($res); echo "A tabela retornada tem $ncampos campos e $nlinhas linhas."; http://marx.vanderlinden.com.br/ 13

Exemplo Resultado: A tabela retornada tem 5 campos e 7 linhas. http://marx.vanderlinden.com.br/ 14

mysql_fetch_(row assoc) mysql_fetch_row($res) Retorna uma linha do resultado como um array numérico, e avança o ponteiro interno do recurso para a próxima posição. Retorna FALSE se não há mais linhas no resultado. mysql_fetch_assoc($res) Como mysql_fetch_row, mas retorna a linha como um array associativo. http://marx.vanderlinden.com.br/ 15

Exemplo: mysql_fetch_row $res = mysql_query( 'SELECT * FROM cd NATURAL JOIN artista'); $nlinhas = mysql_num_rows($res); $ncampos = mysql_num_fields($res); echo "A tabela retornada tem $ncampos campos e $nlinhas linhas:<br>"; while($linha = mysql_fetch_row($res)){ echo implode(', ', $linha), '<br>'; } http://marx.vanderlinden.com.br/ 16

Saída http://marx.vanderlinden.com.br/ 17

Exemplo: mysql_fetch_assoc $res = mysql_query( 'SELECT * FROM cd NATURAL JOIN artista'); $nlinhas = mysql_num_rows($res); $ncampos = mysql_num_fields($res); echo "A tabela retornada tem $ncampos campos e $nlinhas linhas:<br>"; while($linha = mysql_fetch_assoc($res)){ echo "Artista: <strong>$linha[nome]</strong><br>"; echo "Título do CD: $linha[titulo]<br>"; echo "Lançamento: <em>$linha[lancamento]</ em><br>"; echo '<hr>'; http://marx.vanderlinden.com.br/ 18 }

Saída http://marx.vanderlinden.com.br/ 19

Exemplo require_once('bd.php'); $usuario = $_POST['usuario']; $senha = $_POST['senha']; $sql = "SELECT * FROM usuarios WHERE login = '$usuario' AND senha = '$senha'"; mysql_query($sql); http://marx.vanderlinden.com.br/ 20

Uso SELECT * FROM usuarios WHERE login = 'admin' AND senha = 'dj5c4v' http://marx.vanderlinden.com.br/ 21

SQL Injection SELECT * FROM usuarios WHERE login = 'admin' -- ' AND senha = '' http://marx.vanderlinden.com.br/ 22

Exemplo 2 require_once('bd.php'); $nome = $_GET['nome']; $sql = "SELECT * FROM clientes WHERE nome = '$nome'"; mysql_query($sql); http://marx.vanderlinden.com.br/ 23

Uso SELECT * FROM clientes WHERE nome = 'Ruppert Barnes' http://marx.vanderlinden.com.br/ 24

SQL Injection SELECT * FROM clientes WHERE nome = '' OR '1' http://marx.vanderlinden.com.br/ 25

mysql_real_escape_string mysql_real_escape_string($string) Retorna um string com os valores de escape adicionados aos caracteres \x00, \n, \r, \, ', " e \x1a, no string original. Sempre deve ser usada em qualquer string oriunda de uma fonte externa que vai ser incluída em uma consulta SQL. Evita a maioria dos ataques de SQL Injection. http://marx.vanderlinden.com.br/ 26

Exemplo require_once('bd.php'); $usuario = mysql_real_escape_string($_post['usuario']); $senha = mysql_real_escape_string($_post['senha']); $sql = "SELECT * FROM usuarios WHERE login = '$usuario' AND senha = '$senha'"; mysql_query($sql); http://marx.vanderlinden.com.br/ 27

Tentativa de Ataque SELECT * FROM usuarios WHERE login = 'admin\' -- ' AND senha = '' http://marx.vanderlinden.com.br/ 28

magic_quotes_gpc Há uma configuração de PHP que automaticamente adiciona caracteres de escape a qualquer variável submetida via GET ou POST magic_quotes_gpc On Off Útil por razões de segurança, mas pode entra em conflito com mysql_real_escape_string http://marx.vanderlinden.com.br/ 29

Problema com magic_quotes_gpc SELECT * FROM usuarios WHERE login = 'O\\\'Reilly' AND senha = 'grt4gf' http://marx.vanderlinden.com.br/ 30

Lidando com magic_quotes get_magic_quotes_gpc() Retorna TRUE ou FALSE, de acordo com o valor da configuração magic_quotes_gpc stripslashes($string) Retorna uma string sem os caracteres de escape, desfazendo o efeito de magic_quotes_gpc http://marx.vanderlinden.com.br/ 31

Lidando com magic_quotes_gpc SELECT * FROM usuarios WHERE login = 'O\'Reilly' AND senha = 'grt4gf' http://marx.vanderlinden.com.br/ 32

http://xkcd.com/327 http://marx.vanderlinden.com.br/ 33

http://xkcd.com/327 http://marx.vanderlinden.com.br/ 34