















Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
A apostila demonstra as funções de Acesso, Inserção, Alteração e Remoção em uma Base de Dados MySQL e utilização de Sessão e upload de imagens
Tipologia: Notas de estudo
Oferta por tempo limitado
Compartilhado em 27/04/2016
3
(2)2 documentos
1 / 23
Esta página não é visível na pré-visualização
Não perca as partes importantes!
















Em oferta
Instituto Federal Farroupilha Campus São Borja
(em construção) Resumo: A apostila demonstra as funções de Acesso, Inserção, Alteração e Remoção em uma Base de Dados MySQL e utilização de Sessão. [email protected] *Esse material pode ser utilizado, editado e compartilhado por qualquer pessoa para fins de aprendizado.
Para testarmos nossas aplicações web, precisamos de um servidor para rodar nossos scripts php. A ferramenta XAMPP permite tornar nosso próprio computador em um servidor, bastando para isso acessar o endereço http://127.0.0.1 ou então http://localhost e o caminho do arquivo pretendido do servidor.
Para a instalação do xampp no ubuntu, abra o terminal e digite: 1 → sudo add-apt-repository ppa:upubuntu-com/web 2 → sudo apt-get update 3 →sudo apt-get install xampp Se não houver erros, você pode abrir a ferramenta digitando em um navegador http://localhost Se não foi possível a instalação, vá até a página do software e baixe o pacote manualmente. Após o download, abra o terminal e navegue até a pasta em que ele se encontra. Normalmente na pasta Downloads. Exemplo: Após estar na pasta onde se encontra o arquivo baixado, torne o arquivo executável com o comando: chmod +x xampp-linux-x64-5.6.8-0-installer.run (o nome do arquivo depende do período em que o download for realizado).
Para realizar a conexão e interação entre nossa aplicação PHP e o banco de dados MySQL, devemos utilizar uma API ( Application Programming Interface). As APIs definem classes, métodos e funções que nossas aplicações terão que chamar. MySQL fornece API escrito em várias linguagens para conexão com a base de dados, e uma delas é escrita em PHP, que pode ser utilizada através de extensões em PHP. Para conectar nossa aplicação com a base de dados, podemos utilizar as extensões mysqli ou mysql. mysqli permite acessar funcionalidades providas pelo MySQL 4.1 ou posterior, ou seja, é uma extensão mais moderna. Esse tutorial se limitará a demonstrar as funcionalidades dessa extensão.
Para realizar a conexão com a base de dados, duas das formas são: mysql_connect - procedural mysqli_connect – orientado a objetos, mais moderno e com novas funcionalidades. É um mysql_connect “melhorado”. Ambos criam uma conexão com o servidor MySQL. Na literatura, ainda encontramos uma maior quantidade de referências ao conector procedural, portanto, cabe ao programador decidir o paradigma a a ser utilizado. Neste tutorial, veremos exemplos utilizando mysqli_connect.
Onde $host = Endereço do servidor, $username = Nome de usuário para permissão de acesso , $passwd = Senha de acesso, $dbname = Nome da base de dados a ser acessada, $port= Número da porta para tentar realizar a conexão, $socket = Soquete que deve ser usado Todos os parâmetros são opcionais. Se não forem passados, o conector tentará realizar a conexão com valores pré-definidos. Nosso arquivo de conexão é mostrado na figura: Onde localhost é o endereço do servidor MySQL, root é o usuário, senha em branco (se não existir senha de acesso para esse usuário) e cadastro é o nome de um BD previamente criado (A criação da base de dados não está no escopo deste tutorial). mysqli retorna um objeto representando a conexão com o BD (bando de dados). No exemplo, atribuímos esse objeto à variável $conexao. Se não tivermos nenhuma mensagem de erro, é por que a conexão foi realizada com sucesso. Após realizada a conexão, nossa aplicação está pronta para interagir com nosso banco de dados. → Note que em todas as páginas que necessitam de acesso à base de dados, precisaremos escrever essa função, fazendo as devidas verificações quanto a falhas (verificações, tratamento de erros, exceções e etc) – o único cuidado que tomamos em nosso exemplo é utilizando or die() que é executada se a conexão não for realizada. → Portanto, é bastante importante deixarmos essa função responsável pela conexão Figura 2 : Arquivo conecta.php
em um único arquivo separado dos demais códigos, e então importamos esse arquivo sempre que precisarmos da conexão. Isso é demonstrado na próxima seção.
Para garantir a não duplicidade de informações dos usuários em nossa tabela de usuários (em um sistema de login os dados de login não podem ser repetidos), primeiramente devemos realizar uma consulta para verificar a existência de um usuário com os mesmos dados ( Aqui utilizamos nome e senha, no entanto, um sistema de login geralmente utiliza EMAIL, CPF ou etc ao invés de login). No início do código, devemos importar o arquivo que contém o código mostrado na figura2, utilizando a função include() (ver também include_once() e require_once() no manual do php) , como demonstrado na figura abaixo. Utilizamos a variável $consulta_select apenas para montarmos a string de consulta com os dados vindos do formulário. Executando a consulta Figura 3 : inclusão do arquivo de conexão e montagem da string de consulta Figura 4 : realizando a consulta
podemos ter dados iguais. Para garantirmos que a a inserção dos dados do usuário foi realizada com sucesso, podemos utilizar a função mysqli_affected_rows($conexao). Essa função retorna o número de linhas afetadas na tabela. Então se o número de linha for maior que zero, é por quê a inserção foi realizada com sucesso
Apesar de utilizarmos mysqli, até aqui utilizamos uma forma procedural, com funções recebendo alguns parâmetros como objetos e strings. No paradigma orientado a objetos, os próprios objetos possuem métodos, dessa forma, não passamos objetos como parâmetros para funções, e sim utilizamos os métodos do próprio objeto. Abaixo é realizado o mesmo cadastro, porém utilizando orientação a objetos.
na verdade está executando o construtor da classe mysqli. Desta vez fizemos passando valores como parâmetros de forma explícita ao construtor. Notem que ao invés de utilizarmos a função mysql_query passando como parâmetros o objeto $conexao e uma string, aqui utilizamos o método query pertencente ao próprio objeto $conexao. Podemos ainda garantir que a inclusão foi realizada com sucesso
Temos uma base de dados com o cadastro de vários alunos. Esse cadastro recebe dados como nome, idade, e-mail, telefone, curso, etc. Em determinado local do nosso sistema, temos um campo de busca desses alunos, onde é possível listá-los de acordo com alguma característica, como idade, por exemplo. Suponha que queremos listar todos os alunos que possuem idade menor que 18 anos. Montamos e realizamos a consulta Essa consulta poderá retornar várias linhas como resultado. Para podermos manipular esse resultado no PHP, devemos transformá-lo em um array. Para isso, utilizamos a função mysqli_fetch_array(). Essa função guarda as linhas de resultado em um array utilizando índices associativos, ou seja, podemos acessar qualquer coluna da tabela que a consulta retornou. Considere que queremos mostrar apenas o nome e o curso dos alunos que a consulta retornou (note que a consulta retornou todas as colunas – realizamos um SELECT * ), para isso utilizamos os nomes das colunas que queremos mostrar como índices. O array chamado $alunos possui como índices todas as colunas da nossa tabela tb_alunos (isso porque nossa consulta selecionou todas as colunas). A variável $alunos contém os dados do primeiro aluno que a busca retornou. Se quisermos mostrar todos, por exêmplo, utilizamos um laço de repetição.
Guardar senhas e logins em texto puro no nosso BD, é bastante inseguro, uma vez que as informações ficam visíveis, e, qualquer usuário que obter acesso ao banco de dados, terá acesso direto à essas informações. Para melhorar a segurança dos dados armazenados, podemos utilizar alguns algoritmos de criptografia, isto é, ao invés de armazenarmos os dados tal qual o usuário informou, codificamos eles antes de armazená-los.
Note no código acima que antes de redirecionar o usuário para uma “pagina_restrita.php”, utilizamos a função session_start(). Essa função verifica se já existe um id de sessão para este usuário, se não existir, ela cria um. Dessa forma, podemos chamar session_start() em todas as páginas do nosso site que utilize sessão. Com a sessão já iniciada, podemos criar variáveis de sessão para esse usuário. Quando iniciada a sessão, é criado um array chamado $_SESSION. As variáveis de sessão são armazenadas nesse array. Considere que após o login queremos guardar o nome (login) do usuário para que apareça na página destino (“pagina_restrita.php”) “Bem Vindo Fulano. Sair”. Fazendo $_SESSION['nome'] = 'AndersonFortes', criamos uma variável de sessão que armazena 'Anderson' e pode ser acessada através de $_SESSION['nome']. Claro que não faz sentido armazenarmos a string 'AndersonFortes', mas sim o nome do usuário que realizou o login, que temos gravado na variável $login. Dessa forma teríamos
Agora quando redirecionar-nos o usuário para a página restrita, teremos como identificar esse usuário nessa página. Você deve pensar: E se o usuário digitar o endereço do site mais /pagina_restrita.php? Ele conseguirá acessar o conteúdo naturalmente? Depende. Em pagina_restrita.php devemos ter um script de verificação se esse usuário fez o login ou não. O conteúdo só será mostrado se ele realmente fez o login. Sabemos que o usuário que realizou o login possui seu login armazenado em $_SESSION['nome']. Então basta no início da página restrita, verificarmos se essa variável já foi iniciada. Note que para verificar se a variável já foi iniciada utilizamos a função isset (), que verifica se determinada variável foi inicializada ou não. Caso exista a variável $_SESSION['nome'], o usuário realizou o login e então o conteúdo da página restrita deve ser mostrado. Caso contrário, é dada a opção dele realizar login.
Existem basicamente duas formas de armazenar imagens oriundas do upload realizado pelo usuário. Uma delas é utilizando armazenamento na própria tabela no banco de dados. Para isso, o espaço para o armazenamento de imagens na tabela deve ser declarado como tipo BLOB. No entanto, muitos especialistas alegam que é mais eficiente o armazenamento em diretórios ao invés de tabelas. Armazenar imagens no banco de dados é computacionalmente mais caro pois requer codificação para manipular as imagens. Apesar disso, o armazenamento em banco de dados é simples e funcional em qualquer ambiente e em alguns casos a aplicação não tem total acesso a diretórios do servidor. Portanto, cabe decidir o tipo de armazenamento conforme a necessidade de cada aplicação. Veremos a seguir como fazer o armazenamento de imagens em um diretório do servidor.
Suponha que possuímos em nosso sistema um formulário de cadastro do usuário, mas que agora desejamos também que nesse cadastro seja necessário o envio de uma foto para o servidor. Vamos ao formulário. Primeiramente temos que definir o enctype do formulário como “multipart/form- data” para que o formulário aceite arquivos.
Podemos observar que agora temos no navegador o botão de selecionar arquivo: Note também que enviamos os dados para um arquivo chamado realizaUpload.php e enviamos os dados utilizando método POST.
Os arquivos enviados pelo formulário são guardados em um array chamado $_FILES. Portanto, nosso arquivo enviado poderá ser referenciado através de $_FILES['arquivo'], onde 'arquivo' é o nome que demos ao input de upload em nosso formulário (<input type='file' name='arquivo'... >) Podemos então acessar as informações sobre o nosso arquivo: $_FILES['arquivo']['name'] obtemos o nome do arquivo. $_FILES['arquivo']['type] obtemos o tipo do arquivo. $_FILES['arquivo']['size'] obtemos o tamanho do arquivo em Bytes. $_FILES['arquivo']['error'] se o arquivo foi enviado de forma correta, $_FILES["arquivo"] ["error"] terá valor 0.