0% acharam este documento útil (0 voto)
17 visualizações89 páginas

Programador PHP - Relâmpago

Enviado por

theeder77
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
17 visualizações89 páginas

Programador PHP - Relâmpago

Enviado por

theeder77
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 89

PROGRAMADOR PHP

RELÂMPAGO
Se Torne um Programador PHP em Tempo Recorde
INTRODUÇÃO

A linguagem de programação PHP (Hypertext Preprocessor) é ainda


uma das linguagens mais utilizadas na web, cerca de 60% a 70% dos
sites na web usam PHP.

O PHP conta com uma comunidade sempre muito ativa e pronta para
dar suporte aos mais novos.

Você consegue construir desde um blog até sistemas mais avançados


como uma plataforma ead ou até mesmo um marketplace.

Porque você deveria aprender PHP ainda hoje?


PHP é seguro
PHP é de código aberto e gratuito
Alguns dos aplicativos da web mais populares foram criados
usando PHP, como por exemplo, o Facebook e a própria Danki
Code.
A hospedagem PHP está disponível em todos os lugares.
A procura por programadores PHP é grande e os salários
costumam variar de 4 mil a 10 mil.
As possibilidades de trabalhar fora do Brasil são gigantes.

Consulte: Salário: Desenvolvedor PHP (Dezembro de 2022) | Glassdoor

Através do Ebook Programador PHP Relâmpago você conseguirá dar os


seus primeiros passos e criar os seus próprios sistemas web através
de exemplos e projetos práticos que vão do básico ao avançado.
ÍNDICE

PARTE 1 - PHP: O Início


1 História
2 Versões

PARTE 2 - Lógica de Programação


3 Lógica
4 Algoritmo

PARTE 3 - PHP Básico


5 Sintaxe
6 Variáveis
7 Comentários
8 Tipos
9 Constantes
10 Arrays
11 Operadores Lógicos
12 Operadores Aritméticos
13 Operadores de Atribuição
14 Operadores de Comparação
15 Operador de Incremento / Decremento
16 Funções
17 Funções Matemáticas
ÍNDICE

PARTE 4- PHP Intermediário


18 Manipulando Strings
19 Manipulação de Datas
20 Manipulando Arrays
21 Estruturas de Controle
a. Estrutura de Condição
i. if/else
ii. else if
iii. switch
b. Estrutura de Repetição
i. while
ii. for
iii. foreach
iv. do-while

22 Formulários
a. Introdução
b. GET vs POST
i. Quando usar POST
ii. Quando usar GET

PARTE 6 - Banco de Dados - SQL


24 Introdução
25 Tipos de Dados
ÍNDICE

26 Base de Dados
a. CREATE DATABASE
b. DROP DATABASE
c. CREATE TABLE
d. DROP TABLE

27 Operadores Lógicos
a. AND
b. BETWEEN
c. IN
d. LIKE
e. NOT
f. OR

28 Instruções
a. SELECT
b. INSERT
c. UPDATE
d. DELETE

29 Entendendo o WHERE
30 Filtrando com HAVING
31 ORDER BY e LIMIT
32 GROUP BY
33 Relacionamento de Tabelas
34 INNER JOIN, LEFT JOIN, RIGHT JOIN e FULL JOIN
ÍNDICE

PARTE 7 - Banco de dados com PDO


35 Introdução
36 Conexão
37 PDO Statement
38 Inserindo com PDO
39 Editando com PDO
40 Deletando com PDO
41 Selecionando apenas um Registro
42 Selecionando todos os registros de uma tabela com PDO
43 Erros e Exceções

PARTE 8 - Composer
44 Introdução
45 Autoload

PARTE 9 - PHP Avançado


46 include e include_once
47 require e require_once
48 Upload de Arquivos
49 Cookies
50 Sessões
51 Manipulando Arquivos
a. Abrindo, Lendo e Fechando
b. Criando e Escrevendo
52 Filtros no PHP
ÍNDICE

PARTE 10 - MVC: Model - View - Controller


53 Model
54 View
55 Controller

PARTE 11 - Segurança
56 Tratamento de Upload de Arquivos
57 Criptografia
58 SQL Injection
59 Ataques XSS
PHP - O Início

1 História:

O PHP é uma linguagem de programação ideal para iniciantes que


desejam desenvolver sites e sistemas.

Rasmus Lerdof é o autor da primeira versão da linguagem de


programação PHP criada em 1995. A sigla é um acrônimo para PHP:
Hypertext Preprocessor (Pré-Processador de Hipertexto).

Em 1997 e 1998, o PHP/FI contou com o apoio de milhares de usuários


em todo o mundo. Uma pesquisa da Netcraft de maio de 1998
descobriu que quase 60.000 domínios relataram ter cabeçalhos
contendo "PHP", indicando que o servidor host realmente tem o PHP
instalado. Esse número equivale a aproximadamente 1% de todos os
domínios da Internet na época.

01
PHP - O Início

2 Versões:

PHP 3
Na história do PHP, o PHP 3.0 foi a primeira versão que se assemelha
ao PHP como existe hoje.

PHP 4
Em 1998, logo após o lançamento oficial do PHP 3.0, Andi Gutmans e
Zeev Suraski começaram a trabalhar na reescrita do núcleo do PHP.
O objetivo do projeto era melhorar o desempenho de aplicativos
complexos e melhorar a modularização da base de código PHP.

PHP 5
O PHP 5 foi lançado em julho de 2004 após um longo
desenvolvimento e vários lançamentos preliminares. Ele é
alimentado principalmente por seu núcleo Zend Engine 2.0, com um
novo modelo de objeto e dezenas de outros novos recursos.

PHP 7
Após anos de desenvolvimento, foi lançado oficialmente o PHP 7 em
dezembro de 2015. Entre as novidades mais importantes do PHP
versão 7 está seu desempenho.

02
Lógica de Programação

3 Lógica:

Sempre que decidimos fazer alguma atividade em nosso dia a dia,


acabamos seguindo uma sequência lógica. Na maioria das vezes
fazemos isso com tanta naturalidade que nem percebemos, mas
quando o fazemos, podemos ver as etapas que levaram ao
resultado final.

Vamos pensar logicamente nas etapas para se fazer um bolo.

1. Selecionar os ingredientes da receita;


2. Selecionar tigela;
3. Colocar farinha, de acordo com a medida;
4. Selecionar ovos;
5. Colocar manteiga e açúcar a gosto;
6. Colocar leite;
7. Misturar todos os ingredientes na tigela;
8. Despejar a massa na forma;
9. Levar ao forno;
10. Aguardar 40 minutos;
11. Retirar do forno;
12. Servir o bolo.

Quando se trata de programação, definir os passos do que precisa


ser feito é muito importante, pois instruir um computador ainda é
bem diferente de instruir um ser humano.

03
Lógica de Programação

Quando existe a necessidade de desenvolver um programa ou rotina


para o computador executar, precisamos ter clareza sobre a
sequência que precisa ser seguida para atingir o resultado
esperado.

4 Algoritmo

Algoritmos são sequências de passos que seguimos com a intenção


de atingir um objetivo, por exemplo, atravessar a rua, fazer um bolo
ou definir os critérios pelos quais um aluno será aprovado ou
reprovado.

Antes de programar, precisamos saber o que precisa ser feito e


planejar passo a passo, ou seja, criar um algoritmo e avaliar se o
resultado obtido é a solução esperada. Tendo entendido isso,
definimos uma linguagem de programação para implementar
nossos algoritmos, nesse ebook tratamos da linguagem de
programação PHP.

04
PHP Básico - O Início

Um script PHP é executado do lado do servidor, e após isso o


resultado é enviado ao navegador.

5 Sintaxe

Para trabalhar com PHP é necessário seguir a sintaxe padrão da


linguagem.

Um script PHP começa com: <?php e finaliza com ?>

Exemplo:

<?php
// código php aqui
?>

A extensão padrão do PHP é: .php


Sempre que formos trabalhar com PHP é necessário informar a sua
extensão .php

Um script PHP pode contar tags HTML e também um script PHP.

05
PHP Básico

Exemplo de uma página contendo tags HTML e script PHP:

<!DOCTYPE html>
<html>
<head>
<title>Página PHP</title>
</head>
<body>

<?php
echo "Olá, Mundo!";
?>

</body>
</html>

No exemplo acima estamos usando o echo() do PHP para


mostrarmos a frase “Olá, mundo!” em nosso navegador.

6 Variáveis

As variáveis servem para guardar informações.


Em PHP começamos uma variável com $ seguido do nome da
variável.
Exemplo:

<?php Atribuímos a variável $texto, o valor “Olá,


$texto = "Olá, Mundo!"; Mundo!” Uma vez que tenha sido atribuído
um valor a variável nós podemos recuperar
echo $texto; o seu valor posteriormente.
?>

06
PHP Básico

Recomendações para a declaração de nomes das variáveis

As variáveis ​sempre começam com o sinal $ seguido do nome da


variável.

Os nomes de variáveis ​devem começar com uma letra ou caractere


de sublinhado.

O nome de uma variável não pode começar com um número.

Os nomes de variáveis ​podem conter apenas caracteres de a-z,


números e sublinhado.

Os nomes das variáveis ​diferenciam maiúsculas de minúsculas


($idadee e $IDADE são duas variáveis ​diferentes).

07
PHP Básico

7 Comentários

Um comentário não será executado como uma parte do script, a


função dele é de apenas ser lido por quem estiver com acesso ao
código.

Exemplo:

<?php
// Comentário de linha única

# Comentário de linha única

/*
Comentário de múltiplas linhas
*/
?>

8 Tipos

O PHP suporta os tipos de dados: integer, float, string, array e etc.


Confira abaixo alguns dos tipos de dados mais usados em PHP:

String
O tipo String recebe caracteres.
Exemplo:
<?php
$texto = "Olá, Mundo!";
echo $texto;
?>
08
PHP Básico

Integer
O tipo integer é um número não decimal.
Exemplo:
<?php
$x = 2022;
var_dump($x);
?>

Nesse exemplo a função var_dump() irá imprimir / mostrar o valor


da variável $x e o tipo de dado da variável.

Float (usado para números de ponto flutuante)


O tipo float (número de ponto flutuante) é um número com um ponto
decimal.
Exemplo:
<?php
$resultado = 12.34;
echo $resultado;
?>

Boolean
O tipo booleano aceita apenas os valores true ou false.
Esse tipo de dado é muito útil quando queremos validar alguma
condição.

09
PHP Básico

Exemplo:
<?php

$online = true;

if($online){
echo 'O valor da variável: $online é verdadeiro';
}

?>

Array
Um array permite criar uma lista com diversos valores, isso significa
que se você tiver dez nomes para apresentar na tela, não será
necessário criar uma variável específica para cada um desses
nomes. Com um array você conseguirá gravar esses 10 nomes em
uma única variável.
Exemplo:
<?php

$dc = ['Superman', 'Batman', 'Sandman', 'Flash'];


print_r($dc);

?>

Object
Um objeto é o que retorna de uma classe.
No capítulo de orientação a objetos iremos ver com detalhes o que
são classes.

10
PHP Básico

NULL
Esse tipo de dado é usado para indicar que a variável não tem valor,
ou seja, nenhum valor foi atribuído ainda.
Exemplo:

<?php

$nome = "Bruce Wayne";


$nome = null;

if(is_null($nome)){
echo "é nulo";
}

9 Constantes

Constantes são variáveis, mas uma vez que tenham sido definidas
não podem ser alteradas.

Diferente das variáveis, as constantes ficam disponíveis em todo o


projeto.

Para criar uma constante, use a função define()

Sintaxe:
define(name, value, case-insensitive)

11
PHP Básico

Parâmetros:
name: especifica o nome da constante.
value: especifica o valor da constante.
case-insensitive: especifica o nome deve diferenciar maiúsculas e
minúsculas.

Exemplo:

<?php
define("DANKICODE", "Os melhores cursos para você!");
echo DANKICODE;
?>

10 Arrays

Um array permite guardar diversos valores em uma única variável.

Para criar um array use: array() ou []

Exemplo com a função array():

<?php
$conteudos = array("Web", "Games", "Marketing", "Empreendedorismo");
echo "Aprenda sobre " . $conteudos[0] . ", " . $conteudos[1] . ", " . $conteudos[2] . ", " .
$conteudos[3] . " e muito mais.";
?>

12
PHP Básico

Exemplo com a forma curta []

<?php
$conteudos = ["Web", "Games", "Marketing", "Empreendedorismo"];
echo "Aprenda sobre " . $conteudos[0] . ", " . $conteudos[1] . ", " . $conteudos[2] . ", " . $conteudos[3] . " e muito mais.";
?>

11 Operadores Lógicos

and
or
xor
!

operador AND:
Será verdadeiro apenas quando TODAS as expressões comparadas forem verdadeiras.

operador OR:
Quando uma OU outra expressão for verdadeira, então toda a expressão será verdadeira.

operador XOR:
Será verdadeiro se QUALQUER uma das expressões forem verdadeiras.

operador !:
Esse operador inverte o que é TRUE para FALSE, e FALSE para TRUE.

operador &&:
Igual o operador AND

operador ||:
Igual o operador OR

13
PHP Básico

12 Operadores Aritméticos

+ adição
exemplo: $x + $y

- subtração
exemplo: $x - $y

* multiplicação
exemplo: $x * $y

/ divisão
exemplo: $x / $y

% módulo
exemplo: $x % $y

** exponenciação
exemplo: $x ** $y

14
PHP Básico

13 Operadores de Atribuição

=
atribuição simples.

+=
atribuição com adição

-=
atribuição com subtração

*=
atribuição com multiplicação

/=
atribuição com divisão

%=
atribuição com módulos

.=
atribuição com concatenação

15
PHP Básico

14 Operadores de Comparação

== igual

=== idêntico

!= não é igual

<> não é igual

!== não é idêntico

> maior que

< menor que

>= maior ou igual a

<= menor ou igual a

16
PHP Básico

15 Operadores de Incremento / Decremento

++$x pré-incremento - primeiro incrementa e somente depois


realiza a operação.

$x++ pós-incremento - primeiro faz a operação e somente depois


incrementa.

--$x pré-decremento - primeiro decrementa e somente depois faz a


operação.

$x-- pós-decremento - primeiro faz a operação e somente depois


decrementa.

17
PHP Básico

16 Funções

Uma função é um bloco de instruções que pode ser usado


repetidamente dentro do projeto.

Para criar uma função:

Exemplo:
<?php
function exemplo()
{
//código que será executado
}
?>

Obs: Dê um nome que reflita o que a função irá fazer.

Abaixo temos uma função que irá "imprimir" a mensagem "Olá,


mundo!".

Exemplo:
<?php
function olaMundo()
{
echo "Olá, Mundo!";
}

olaMundo();
?>

18
PHP Básico

Iniciamos definindo o nome de olaMundo() para a nossa função, em


seguida abrimos chaves { para indicar que iremos começar a
escrever o código da nossa função, após isso iremos finalizar a
função com as chaves }

Para chamar a função basta escrever o nome dela: olaMundo()

Argumentos de função:

É possível passarmos argumentos em nossas funções.


Os argumentos são passados dentro de () após o nome da função.
Caso deseje adicionar mais argumentos basta separá-los por
vírgula.

Exemplo:
<?php
function area($nome, $categoria){
echo "Curso $nome em $categoria<br>";
}

area("criação de sites", "web e mobile");


area("criação de games", "games");
area("marketing", "negócios");
area("empreendedorismo", "negócios");
?>

19
PHP Básico

Retornar valores:

Para retornarmos valores usamos o return.

Exemplo:
<?php
function soma($x, $y){
return $x + $y;
}
echo soma(4, 9);
?>

17 Funções Matemáticas

No link abaixo você poderá consultar algumas funções matemáticas


que irão ajudar a resolver alguns cálculos matemáticos, como por
exemplo: cosseno, potência, seno, tangente, raiz quadrada e
outras.

Consulte: PHP: Funções Matemáticas - Manual

20
PHP Intermediário

18 Manipulando Strings

Uma string é uma sequência de caracteres alfanuméricos, onde a


sequência de caracteres é delimitada por aspas.

Ou seja, para criar uma nova String, primeiro você precisa abrir as
aspas, colocar uma sequência de caracteres alfanuméricos e
depois fechar as aspas, por exemplo, "senha1234".

As strings se comportam como a maioria das linguagens de


programação.

Funções mais usadas:

explode:
O objetivo da função explodir é dividir a String em partes, após o
que a função retornará uma lista de String contendo todas as
partes da String original, que é um array.

implode:
A função explodir retorna um array contendo partes de uma string,
enquanto a função implode retorna uma string que consiste em
todas as strings do array.

21
PHP Intermediário

substr:
Se você precisar extrair uma parte de uma String, precisará
determinar o comprimento da String e onde começar a extrair a
String que deseja extrair.

substr_replace:
A função substr_replace substitui texto em uma string, esta função
recebe como parâmetros o texto a ser encontrado, o novo texto que
irá substituir, e a string na qual será feita a busca e substituição,
veja a estrutura da função um pouco abaixo.

strlen:
Essa função recebe uma string como parâmetro e retorna o número
total de caracteres que a string possui, que é o comprimento da
string.

strtoupper:
A função strtoupper pega uma string como argumento e retorna a
mesma string com todos os caracteres em maiúsculas.

strtolower:
Se você tiver uma string em que os caracteres desta string são
maiúsculos e minúsculos e deseja que todos os caracteres sejam
minúsculos.

22
PHP Intermediário

19 Manipulação de Datas

A linguagem de programação PHP vem com algumas funções


internas de data e hora que nos ajudarão a lidar com datas de uma
maneira mais fácil.

Você certamente precisará usar datas e horas em seus


sites/sistemas. Por exemplo, você pode querer exibir a data da
última modificação em uma postagem ou mencionar há quanto
tempo um leitor deixou um comentário. Você também pode querer
exibir uma contagem regressiva até que um evento especial ocorra.

O que é o date?

Usando a função date(), podemos formatar a data atual de várias


maneiras:

echo date("d/m/Y"); // retorna a data atual no formato dia/mês/ano


echo date("H:i:s"); // retorna a hora atual no formato horas:minutos:segundos
echo date("d/m/Y H:i:s"); //retorna data e hora atual

23
PHP Intermediário

O que é o timestamp?

A função time() é a maneira mais fácil de obter o timestamp unix da


data atual, basta digitar time() e terá o valor:

echo time();

20 Manipulando Arrays

Array em PHP nada mais é do que uma estrutura de dados que nos
permite gravar e acessar dados de forma heterogênea ou
isomórfica, ou seja, podemos criar um Array para gravar mais de um
tipo de dado, como inserir Integer, String , Object e outros tipos de
valores

Inicialmente podemos criar um array vazio simplesmente chamando


esta função sem passar nenhum argumento, então ela retornará
um novo array vazio.

Exemplo:

$arr = array();

print_r($arr);

24
PHP Intermediário

Se quisermos criar um array com seus elementos iniciais já


definidos, podemos defini-los passando-os como argumentos para
uma função array, onde para cada elemento temos que separá-los
com vírgulas, e para cada elemento precisamos Definir sua chave e
valor separado pelo operador =>, mas também podemos omitir a
chave do elemento, assim ele irá gerar automaticamente o formato
do número na ordem.

Exemplo:

$arr = array(
'chave1' => 'valor1', 'chave2' => 'valor2', 'chave3' => 'valor3'
);

print_r($arr);

Podemos criar arrays usando a sintaxe concisa usando colchetes a


partir do PHP versão 5.4:

Exemplo:

$arr = [
'chave1' => 'valor1', 'chave2' => 'valor2', 'chave3' => 'valor3'
];

print_r($arr);

25
PHP Intermediário

Podemos também definir os elementos do nosso array


dinamicamente sem informar a chave.

Exemplo:

//declarando um array da forma reduzida que foi disponibilizada a partir da versão 5.4
$dc = []; //array vazio

//primeira posição começa em 0


$dc[] = "Batman"; // a chave será igual a 0 e com o valor Batman
$dc[] = "Superman"; // a chave será igual a 1 e com o valor Superman
$dc[] = "Mulher Maravilha"; // a chave será igual a 2 e com o valor Mulher Maravilha

print_r($dc);

Contando quantos elementos existem no nosso array através da


função count()

Exemplo:

$dc = ['Batman', "Superman", "Mulher Maravilha"];


echo count($dc);

Percorrendo um array para fazer iterações através da estrutura de


repetição foreach()
A estrutura foreach() foi criada especialmente para lidarmos com
arrays e objetos.

26
PHP Intermediário
$dc[] = "Batman"; // a chave será igual a 0 e com o valor Batman
$dc[] = "Superman"; // a chave será igual a 1 e com o valor Superman
$dc[] = "Mulher Maravilha"; // a chave será igual a 2 e com o valor Mulher Maravilha

//usando o foreach para apresentarmos todos os valores do array $dc


foreach($dc as $value){
echo $value;
}

21 Estruturas de Controle
a. Estrutura de Condição
if/else
else if
switch

As estruturas condicionais são essenciais para desenvolver a lógica


de qualquer sistema ou aplicativo. Use-os quando algum código
precisar ser executado somente quando uma condição for atendida.

Elas são utilizadas para avaliar certa condição e de acordo com o


resultado, executar uma rotina específica.

27
PHP Intermediário

if else

if/else é um operador condicional, usado quando queremos


executar um bloco de código somente se uma determinada
condição for atendida, por exemplo, exibir conteúdo somente se o
usuário for maior de idade.

<?php
$idade = 18;
if ($idade >= 18) {
// maior de idade;
echo "Maior de idade";
} else {
// menor de idade;
echo "Menor de idade";
}
?>

else if

Use else if se duas ou mais condições precisam ser verificadas.

<

28
PHP Intermediário

Quando nenhuma condição for atendida, usaremos o else.


switch/case

Ao contrário da estrutura if/else, o switch/case avalia apenas as


condições de igualdade. Ou seja, verifica se o valor recebido como
parâmetro é igual a uma das opções especificadas em seu corpo.
Esse comportamento é equivalente ao uso de várias sequências
if/else, mas com uma sintaxe mais enxuta e legível.

Ele começa aceitando uma expressão como parâmetro e verifica se


ela corresponde a algum dos valores especificados.

switch (expressão) {
case valor1:
//código a ser executado se a expressão for igual ao valor1
break;
case valor2:
//código a ser executado se a expressão for igual ao valor2
break;
case valorN:
//código a ser executado se a expressão for igual ao valorN
break;
}

Exemplos usados:
Clique Aqui

29
PHP Intermediário

b. Estrutura de Repetição
while
do-while
for
foreach

Ao trabalhar com estruturas de repetição, precisamos verificar a


existência de um ponto de parada, caso contrário o script entrará
em loop infinito.

while – Um estrutura while é uma estrutura de repetição que avalia


uma expressão e executa um bloco de código enquanto o resultado
da expressão for verdadeiro, caso o resultado seja falso, a
execução do bloco de código é interrompida.

Exemplo:

$count = 1;

while ($count <= 5) {


echo $count;
$count++;
}
// Resultado: 12345

30
PHP Intermediário

do while – A estrutura do while é muito semelhante com a estrutura


while, mas a verificação da expressão fica depois do bloco de
código.

$check = false;

do {
echo 'Danki Code';
} while ($check == true);
// Resultado: Danki Code

for – A estrutura for é uma das estruturas de repetição mais


famosas, sua sintaxe é bem diferente, definimos 3 comandos
internos separados por ponto e vírgula.
Primeiro definimos um contador, depois uma expressão de
verificação e, finalmente, uma instrução para modificar o contador.

for ($i = 1; $i <= 5; $i++) {


echo $i;
}
// Resultado: 1 2 3 4 5

31
PHP Intermediário

foreach – A estrutura foreach é uma estrutura de repetição


simplificada, ela foi feita para ser a primeira alternativa quando se
pretende iterar(navegar) pelos itens de um array, mas não se limita
somente a array, pode ser utilizada com dois ou três parâmetros.

$var = array('batman', 'superman', 'mulher maravilha');

foreach ($var as $value) {


echo $value;
}
// Resultado: batman, superman, mulher maravilha

Usando dois ou mais parâmetros.

foreach ($var as $key => $value) { Exemplos usados


echo "{$key} = {$value}"; Clique Aqui
}
// Resultado: 0 = batman 1 = superman 2 = mulher maravilha

22 Formulários

Introdução

A forma mais comum para o envio de dados é através do uso de


formulário HTML. Um formulário é construído através do uso da TAG
<form> e nesta é definido o script para onde este formulário deve
ser enviado, no caso, o atributo action e também, o método em que

32
PHP Intermediário

as informações deverão ser submetidas, no caso, temos que definir


se o formulário será enviado através do métodos GET ou então do
método POST no atributo de nome method da TAG.

Como criar um formulário:

Em HTML, o formulário TAG é <form>. Na definição, a TAG <form>


possui 2 atributos, são eles: action e method.

O atributo action é a URL absoluta para o PHP Script, então é para


onde queremos enviar o formulário.

O atributo method especifica o tipo de solicitação, ou seja: GET ou


POST

Cada input contido no formulário deve conter um atributo name,


pois os valores estão associados à propriedade name de cada input.

<form action="" method="">


<input type="text" name="nome" id="">
<input type="email" name="email" id="">
<input type="submit" name="enviar" value="Enviar">
</form>

33
PHP Intermediário

GET ou POST

GET envia parâmetros na própria URL, visto que esses parâmetros


não são "secretos" e as pessoas podem acessá-los tranquilamente.

Saída na url ao usarmos o GET:


minhapagina?nome=bruce&email=brucewayne@gmail.com

Recuperando valores vindo do formulário quando definimos o


method como GET:

Exemplos usados
Clique Aqui

34
PHP Intermediário

O POST é utilizado quando é necessário enviar parâmetros no corpo


da requisição, ou seja, nenhum parâmetro será passado pela URL,
permitindo maior controle ao trabalhar com dados sensíveis (ex:
dados de cartão de crédito, senhas, etc).

Recuperando valores vindo do formulário quando definimos o


method como POST:

Exemplos usados
Clique Aqui

35
Banco de Dados - SQL

24 Introdução

Um banco de dados armazena informações sobre um determinado


domínio. De forma mais simples, é um agrupamento de dados
relacionados a um mesmo assunto que precisa ser salvo para
segurança ou para uma conferência futura.

É comum que as empresas tenham muitas informações que


precisam ser organizadas e disponibilizadas dentro do negócio para
que a equipe e a gestão consultem posteriormente.

É interessante ter um sistema gerenciador de banco de dados


(SGBD), para manipular as informações e simplificar a rotina da
empresa.

Existem vários tipos de SGBDs disponíveis hoje, e cada um é


adequado para as necessidades do cliente. Os mais comuns são:
Oracle, MySQL, SQL Server, PostgreSQL e outros.

25 Tipos de Dados

Em sua versão 8 encontramos os tipos: string, numeric, date e time.

Um desenvolvedor SQL deve decidir antes de criar as tabelas de sua


base de dados quais serão os tipos de dados definidos para cada
coluna em suas tabelas.

36
Banco de Dados - SQL
Ponto decimal com M dígitos no total (precisão) e D casas decimais
DECIMAL(M,D)
(escala); o padrão é 10,0; M vai até 65 e D até 30

Ponto flutuante com precisão M e escala D; o padrão é 10,2; D vai


FLOAT(M,D)
até 24

CHAR(M) String que ocupa tamanho fixo entre 0 e 255 caracteres

BOOL / BOOLEAN Valores binários 0 / 1; Na verdade, é um alias para o tipo TINYINT(1)

VARCHAR(M) String de tamanho variável, até 65535 caracteres

BLOB / Campo com tamanho máximo de 65535 caracteres binários; ‘Binary


MEDIUMBLOB/ Large Objects’, são usados para armazenar grandes quantidades de
TINYBLOB dados, como imagens.

MEDIUMTEXT Permite armazenar até 16.777.215 caracteres

LONGTEXT Permite armazenar até 4.294.967.295 caracteres

INT Permite armazenar até 2147483647

TINYINT Permite armazenar até 127

BIGINT Permite armazenar até 9223372036854775807

DATE Uma data de 01/01/1000 a 31/12/9999, no formato YYYY-MM-DD

Uma combinação de data e hora de 01/01/1000 00:00:00 a


DATETIME
31/12/9999 23:59:59, no formato YYYY-MM-DD HH:MM:SS

TIME Hora apenas, no formato HH:MM:SS

Ano nos formatos de 2 ou 4 dígitos; Se forem 2 (YEAR(2)), ano vai de


YEAR(M)
1970 a 2069; para 4 (YEAR(4)), vai de 1901 a 2155. O padrão é 4.

37
Banco de Dados - SQL

26 Base de Dados

CREATE DATABASE
A declaração CREATE DATABASE permite criar um novo banco de dados.

Exemplo:
CREATE DATABASE pacientes;

DROP DATABASE
A declaração DROP DATABASE irá excluir uma base de dados já existente.

Exemplo:
DROP DATABASE pacientes;

CREATE TABLE
A declaração CREATE TABLE permite a criação de uma nova tabela.

Exemplo:
CREATE TABLE pacientes (id int, nome varchar(255), endereco varchar(255));

DROP TABLE
A declaração DROP TABLE irá excluir uma tabela já existente.

Exemplo:
DROP TABLE pacientes;

38
Banco de Dados - SQL

27 Operadores Lógicos

AND
Será verdadeiro se todas as condições forem verdadeiras.

BETWEEN
O BETWEEN permite consultar valores que estão dentro de alguma faixa.

Exemplo:
Um valor que esteja entre 10 e 100

IN
O IN irá verificar se o valor de uma coluna está presente em uma lista de expressões.

LIKE
O LIKE irá retornar um registro se algum padrão for encontrado.

Exemplo:
LIKE 10
Caso exista, todos os registros com valor 10 serão retornados.

NOT
Irá retornar um registro caso a condição não seja verdadeira.

OR
Será verdadeiro se alguma das condições for verdadeira.

39
Banco de Dados - SQL

28 Instruções SQL

SELECT
A instrução SELECT irá selecionar registros de uma tabela.
Exemplo:
SELECT * FROM pacientes;

INSERT INTO
A instrução INSERT INTO irá inserir novos registros em uma tabela.
Exemplo:
INSERT INTO pacientes VALUES ("Bruce", "Wayne");

UPDATE
A instrução UPDATE é usada para editar registros de uma tabela.
Exemplo:
UPDATE pacientes SET coluna = valor WHERE condicao;

DELETE
A instrução DELETE irá excluir registros de uma tabela.
Exemplo:
DELETE FROM pacientes WHERE condicao;

40
Banco de Dados - SQL

29 Entendendo o WHERE

A cláusula WHERE é usada para filtrar registros que atendam a uma


condição.

Exemplo:
SELECT * FROM paises WHERE pais = 'Brasil';

Operadores que podem ser usados com a cláusula WHERE:


= igual.
> maior que.
< menor que.
>= maior ou igual.
<= menor ou igual.
<> diferente.
BETWEEN filtra valores que estão dentro de alguma faixa.
LIKE filtra valores que correspondam a um padrão.
IN filtra se o valor de uma coluna está presente em uma lista de expressões.

SELECT
A instrução SELECT irá selecionar registros de uma tabela.
Exemplo:
SELECT * FROM pacientes;

INSERT INTO
A instrução INSERT INTO irá inserir novos registros em uma tabela.
Exemplo:
INSERT INTO pacientes VALUES ("Bruce", "Wayne");

41
Banco de Dados - SQL

UPDATE
A instrução UPDATE é usada para editar registros de uma tabela.
Exemplo:
UPDATE pacientes SET coluna = valor WHERE condicao;

DELETE
A instrução DELETE irá excluir registros de uma tabela.
Exemplo:
DELETE FROM pacientes WHERE condicao;

30 Filtrando com HAVING

A cláusula HAVING especifica uma condição de pesquisa para um


grupo ou conjunto de registros e define critérios para limitar os
resultados obtidos agrupando os registros. É importante observar
que esta cláusula só pode ser usada em conjunto com GROUP BY.

O HAVING é diferente do WHERE. O WHERE limita os resultados obtidos


sempre que a cláusula FROM é utilizada, enquanto a cláusula HAVING
filtra o retorno do agrupamento e requer o uso de GROUP BY.

31 ORDER BY e LIMIT

Com ORDER BY você será capaz de ordenar os registros em ordem


crescente ou decrescente.

42
Banco de Dados - SQL

Por padrão os resultados já são mostrados em ordem crescente.


Para mostrar em ordem decrescente informe DESC.

Exemplo:
SELECT * FROM pacientes ORDER BY idade DESC;

32 GROUP BY

Entre outras coisas, a cláusula GROUP BY pode ser usada para


agrupar registros por tipo existente.

Exemplo:
Imagine que temos uma sala cheia de pessoas que nasceram em
países diferentes.

Se quiséssemos descobrir a altura média das pessoas em uma sala


por país, primeiro pedimos às pessoas que se dividissem em grupos
com base no país em que nasceram.

Após a divisão nos respectivos grupos, poderíamos calcular a altura


média de qualquer um desses grupos.

É assim que as instruções GROUP BY funcionam. Primeiro definimos


como queremos agrupar as informações, e então podemos realizar
cálculos ou agregações nos grupos.

43
Banco de Dados - SQL

33 Relacionamento de Tabelas

Um relacionamento de tabela é necessário quando temos várias


tabelas com informações que podem e devem ser
cruzadas/vinculadas, por exemplo: categorias e produtos. Cada
registro da tabela de produtos será vinculado a um registro da
tabela de categorias.

34 INNER JOIN, LEFT JOIN, RIGHT JOIN

INNER JOIN

Este é o tipo de padrão de JOIN caso nenhum JOIN for especificada.


Ele retorna todas as linhas onde há pelo menos uma
correspondência em ambas as tabelas.

Exemplo:
SELECT colunas
FROM tabela1
INNER JOIN tabela2
ON tabela1.coluna=tabela2.coluna;

Onde tabela1.coluna é o nome da primeira tabela concatenado com


um ponto e com o nome da coluna com chave primária ou
estrangeira da tabela, e tabela2.coluna é o nome da segunda tabela
concatenado com um ponto e com a chave estrangeira ou primária
dessa tabela que se relaciona com a chave da primeira tabela.

44
Banco de Dados - SQL

LEFT JOIN

O LEFT JOIN retorna todas as linhas da tabela à esquerda e as linhas


correspondentes da tabela à direita. As linhas da tabela da
esquerda serão retornadas mesmo que não tenham
correspondência na tabela da direita. As linhas da tabela da
esquerda que não correspondem à tabela da direita terão valores
nulos na tabela da direita.

RIGHT JOIN

O RIGHT JOIN retorna todas as linhas da tabela da direita e as linhas


correspondentes da tabela da esquerda. Ao contrário do LEFT JOIN,
ela retorna todas as linhas da tabela à direita, mesmo que não haja
correspondência na tabela à esquerda.

Exemplos usados
Clique Aqui

45
Banco de dados com PDO

35 Introdução

PDO é uma classe desenvolvida especificamente para trabalhar com


procedimentos relacionados a banco de dados. O interessante de
usar esse tipo de classe é a abstração de qual banco estamos
usando e a segurança extra que essa classe nos oferece.

Quando falamos em "abstração de banco de dados" queremos dizer


simplesmente que o PDO nos oferece recursos suficientes para
trabalharmos na implementação de toda a nossa aplicação sem
precisarmos nos preocupar com qual banco de dados utilizamos, ou
seja, mudar posteriormente não trará grandes problemas na
seleção do banco de dados de sua aplicação.

36 Conexão

Iremos criar uma nova instância de classe, o drive (será o mysql),


nome do banco de dados, user e senha do banco de dados.

Exemplo simples:

<?php
$conn = new PDO('mysql:host=localhost;dbname=meuBancoDeDados', "user",
"senha");
?>

46
Banco de dados com PDO

Precisamos tratar os erros para que eles sejam mostrados caso a


nossa conexão não seja bem sucedida.

Exemplo com tratamento de erros:

<?php
try {
$pdo = new PDO('mysql:host=' . HOST . ';dbname=' . "minhabasededados", "user",
"senha", array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $pdo;
} catch (Exception $e) {
echo '<h2>Erro ao conectar</h2>';
} Exemplos usados
?> Clique Aqui

37 PDO Statement

O PDO suporta "prepared statements" (comandos SQL pré-


compilados) e “stored procedures” (procedimentos armazenados no
banco de dados). Os "prepared statements" são úteis porque
permitem criar instruções SQL genéricas e executá-las várias vezes,
substituindo os parâmetros reais por valores específicos de
execução.

47
Banco de dados com PDO

38 Inserindo com PDO


$banco = new PDO('mysql:host=localhost;dbname=nome_do_banco_de_dados',
'username','password');

$sql = $banco->prepare("INSERT INTO `usuario` VALUES(null, ?, ?, ?)");


$sql->execute([$nome, $email, $senha]);

echo "Usuário adicionado com sucesso!";

39 Editando com PDO

$banco = new PDO('mysql:host=localhost;dbname=nome_do_banco_de_dados',


'username','password');
$sql = $banco->prepare("UPDATE `usuario` set nome = ?, email = ?, senha = ? WHERE
id = ?");
$sql->execute([$nome, $email, $senha, $id]);

echo "Usuário editado com sucesso!";

40 Deletando com PDO

$id = 7;
$banco = new PDO('mysql:host=localhost;dbname=nome_do_banco_de_dados',
'username','password');
$sql = $banco->prepare("DELETE FROM `usuario` WHERE id = ?");
$sql->execute([$id]);

48
Banco de dados com PDO

41 Selecionando apenas um registro

$banco = new PDO('mysql:host=localhost;dbname=nome_do_banco_de_dados',


'username','password');

$id = 1;
$sql = $banco->prepare("SELECT * FROM `usuario` WHERE id = ?");
$sql->execute(["id"]);
$usuarios = $sql->fetch();

echo $usuarios['nome'];

42 Selecionando todos os registros de uma tabela com PDO

$banco = new PDO('mysql:host=localhost;dbname=nome_do_banco_de_dados',


'username','password');

$sql = $banco->prepare("SELECT * FROM `usuario`");


$sql->execute();
$usuarios = $sql->fetchAll();

foreach ($usuarios as $value) {


Exemplos usados
echo $value['nome'];
} Clique Aqui

49
Banco de dados com PDO

43 Erros e Exceções

O tratamento de exceções do PDO do PHP permite que você traga


erros e evite que seu programa pare de funcionar durante o uso.
Você pode usar manipuladores de exceção para exibir mensagens
de erro personalizadas, registrar erros ou executar outras ações.

50
Composer

44 Introdução

O Composer é um gerenciador de dependências para PHP. É através


deste gerenciador que você será capaz de utilizar bibliotecas de
terceiro.

Quando for necessário utilizar alguma biblioteca, é imprescindível


nos dias atuais incluir a biblioteca por meio do Composer.

Um gerenciador de dependências serve basicamente para analisar


todas as ações relacionadas às dependências do projeto.

Confira abaixo alguns dos principais gerenciadores de dependência:

Bower para gerenciar dependências do frontend (Javascript e CSS).


NPM ideal para gerenciar dependências Nodejs.
Composer é usado para dependências com PHP.
Maven para dependências com Java.

51
Composer

Instalando o Composer

Primeiro, você precisa baixá-lo em seu site, nele vocÊ encontrará


toda a documentação, além do link para baixar o instalador.

Site oficial: https://getcomposer.org/ Clique Aqui

Ao concluir a instalação usando o comando composer no prompt,


você poderá ver o resultado como este:

Comando:
composer

Exemplos usados
Clique Aqui

52
Composer

45 Autoload

O autoload nos permite utilizar classes sem usar o require() ou o


include().

Uma aplicação PHP, por menor que seja, deve ser dividida em vários
arquivos para manter a organização. Portanto, os arquivos devem
ser incluídos para usar o código neles contidos. Para isso, utilizamos
o que chamamos de autoloading no PHP, que é basicamente a lógica
de carregar automaticamente nossos arquivos.

Fazendo o autoloading

Crie um projeto e navegue até a pasta dele através do terminal/cmd


e rode o comando composer init

O comando composer init nos pede algumas informações sobre o


projeto, como nome do pacote, versão etc.

Feito isso o arquivo composer.json é criado e podemos iniciar nossa


aplicação.

Iremos definir agora a estrutura de pastas/arquivos que queremos.


A nossa estrutura ficará da seguinte forma:

53
Composer
src/
---App/
composer.json
index.php
vendor

Dentro de src/ criamos a pasta App que é onde teremos todo a


nossa aplicação.

Para que o composer faça o autoload das classes precisamos


alterar o arquivo composer.json mapeando esse namespace para
que ele entenda onde se encontrará os arquivos que precisam ser
carregados.

"require": {},
"autoload": {
"psr-4": {
"App\\": "src/App"
}
}

Após alterar o arquivo composer.json é necessário rodar o comando


composer dump-autoload para que nossa estrutura seja
reconhecida:

Agora podemos criar nossas classes e ver o autoloading


funcionando na prática.

54
Composer

Crie as pastas: Controllers, Models e Views dentro de src/App e um


arquivo/classe chamado Application dentro de App

src/
---App/
------Application.php
------Controllers
------Models
------Views
composer.json
vendor
index.php

Dentro do arquivo Application.php nós iremos apresentar a


mensagem "rodando" no construtor da nossa class Application

<?php
O arquivo responsável por fazer o
namespace App; carregamento das classes se chama
autoload.php e está presente na
class Application pasta vendor que foi gerada após
{ rodamos o comando composer init
public function __construct()
{
echo "rodando";
Exemplos usados
} Clique Aqui
}

?>

55
PHP Avançado

46 include e include_once

include:

A função include() do PHP tem como objetivo incluir um arquivo


dentro de outro arquivo quando acessado.

Caso aconteça algum problema ao incluir o arquivo, será exibido um


aviso de que o arquivo não pode ser incluído, mas a página
continuará a ser exibida normalmente sem o arquivo.

Exemplo:

<?php
include("arquivo.php");
?>

include_once:

A função include_once() é igual à função include().


A única diferença é que uma função com "once" permite que
apenas um arquivo seja incluso, isso significa que se esse arquivo
for incluso várias vezes ele será ignorado.

Exemplo:

<?php
include_once("umarquivo.php");
?>
56
PHP Avançado

47 require e require_once

require:

A função require() do PHP faz a mesma coisa que a função include(),


a única diferença é que se você incluir um arquivo que não exista ou
que não seja encontrado, um erro fatal será gerado, interrompendo
a execução de qualquer script depois.

Exemplo:

<?php
require("umarquivo.php");
?>

require_once:

Da mesma forma que a função include_once() é igual à função


include(), a require_once() também é idêntica à require().

Exemplo:

<?php
require_once("umarquivo.php"); Exemplos usados
?>
Clique Aqui

57
PHP Avançado

48 Upload de Arquivos

Quando trabalhamos com formulários pode ser necessário realizar o


envio de arquivos. Através de validações somos capazes de
controlar quais tipos de arquivos podem ser enviados. Ao fazermos
esses tipos de validações garantimos que apenas os tipos de
arquivos definidos por nós possam ser enviados e dessa forma os
nossos sistemas se tornam mais seguros.

Exemplo de formulário para upload de arquivo:

<h1>Upload de Arquivos - Danki Code</h1>


<form action="upload.php" method="post" enctype="multipart/form-data">
<label for="arquivo">Arquivo</label>
<input type="file" required name="arquivo" id="arquivo">
<input type="submit" value="Enviar" name="enviar">
</form>

É necessário que o atributo: enctype="multipart/form-data" tenha


sido informado, caso contrário o upload não irá funcionar.

O input que carrega o arquivo precisa ser do tipo “file”.

58
PHP Avançado

Exemplo do script PHP que irá realizar o upload:

<?php

$arquivo = $_FILES['arquivo'];

if (isset($arquivo['tmp_name']) && empty($arquivo['tmp_name']) != true) {


move_uploaded_file($_FILES['arquivo']['tmp_name'], "arquivos/" . $arquivo['name']);
echo "Arquivo enviado com sucesso";
}

?>

** Atenção **
Nenhuma validação foi feita no código acima e isso pode ser
extremamente prejudicial ao nosso sistema. No capítulo de
Segurança iremos ver como validar os arquivos antes de enviá-los
ao sistema.

Exemplos usados
Clique Aqui

59
PHP Avançado

49 Cookies

Os cookies podem ser usados ​para armazenar informações sobre os


visitantes para uso futuro. Um cookie pode ou não ter uma data de
expiração, se ativo permanecerá ativo mesmo que o visitante feche
ou desligue o computador.

Um exemplo simples são os sites que não pedem para você redigitar
sua senha para fazer login, os cookies também são muito úteis em
lojas virtuais, uma vez que um cookie é colocado em seu carrinho de
compras, você pode voltar ao site e encontrar itens você adicionou
anteriormente ao seu carrinho.

Exemplo:

<?php

// Cria um cookie chamado 'batman' com o valor 'Bruce'


setcookie('batman', 'Bruce');

// Cria o mesmo cookie acima só que irá durar três dias


setcookie('batman', 'Bruce', (time() + (3 * 24 * 3600)));

// Cria o novo cookie para durar duas horas


setcookie('superman', 'Clark', (time() + (2 * 3600)));
?>

Normalmente usamos três parâmetros, são eles:


nome do cookie (1), valor do cookie (2) e duração do cookie (3).

60
PHP Avançado

Porém, você pode adicionar mais 4 parâmetros, confira mais aqui:


https://www.php.net/setcookie

Clique Aqui

Se você não definir um tempo de vida (duração) do cookie, ele


durará enquanto o navegador permanecer aberto. Para definir o
tempo de vida do cookie, basta adicionar o número de segundos
desejado ao resultado da função time(), por exemplo: cinco horas
são 18000 segundos, então seria: 18000 + time() ou (3600 * 5) +
time().

Dica: cada hora tem 3600 segundos e cada dia tem 86400 segundos.

Se você deseja recuperar o valor do cookie posteriormente em


outra página do seu site, use este exemplo:

<?php

// cookie 'batman' definido anteriormente:


$valor = $_COOKIE['batman']; // Bruce

// Pega o valor do cookie 'superman' definido anteriormente:


$valor = $_COOKIE['superman']; // Clark
?>

61
PHP Avançado

Alterando o valor de um cookie

<?php
// Cria o cookie meu_cookie
setcookie('meu_cookie', 'Novo valor do cookie');

// Mostra os dados do cookie


echo $_COOKIE['meu_cookie'];
?>

Para excluir um cookie

Adicione uma data no passado e o cookie será destruído:

<?php
// Apagando o cookie meu_cookie
setcookie('meu_cookie', '', time() - 3600);
?>

$_COOKIE e $_SESSION são muito utilizados para sistemas de login,


além disso, são excelentes para passar dados de uma página para
outra sem ter que criar variáveis adicionais para isso.

Link dos exemplos:


Clique Aqui

62
PHP Avançado

50 Sessões

As sessões são uma maneira simples de armazenar dados para uso


durante toda a visita de um usuário. As sessões são pessoais para
cada visitante, e uma vez que esse valor tenha sido salvo na sessão,
ele poderá ser usado em qualquer lugar do site.

Esses valores permanecerão em uso para o visitante até que ele


feche o navegador ou a sessão seja destruída.

Iniciando uma sessão

Antes de armazenar qualquer informação em variáveis ​de sessão,


você deve primeiro iniciar a sessão. Para iniciar uma nova sessão,
basta chamar a função session_start() Isso cria uma nova sessão e
gera um ID de sessão exclusivo para o usuário.

O código PHP no exemplo abaixo simplesmente inicia uma nova


sessão.

<?php
// Iniciando uma sessão
session_start();
?>

IMPORTANTE: Você deve chamar a função session_start() no início da


página, ou seja, antes de qualquer saída gerada pelo script do seu
navegador.
63
PHP Avançado

Salvando dados na sessão

Você pode armazenar todos os seus dados de sessão como pares


chave-valor na variável super global $_SESSION[]. Os dados
armazenados podem ser acessados ​durante a sessão. Considere o
seguinte script que cria uma nova sessão e registra duas variáveis ​
de sessão.

<?php
// Iniciando uma sessão
session_start();

// Guardando dados na sessão


$_SESSION["nome"] = "Bruce";
$_SESSION["sobrenome"] = "Wayne";
?>

Acessando os dados definidos na sessão

Para acessar os dados da sessão que definimos em nosso exemplo


anterior, simplesmente recrie a sessão chamando session_start() e,
em seguida, passe a chave correspondente para o array $_SESSION.

<?php O código PHP no exemplo


// Iniciando uma sessão ao lado produz a seguinte
session_start(); saída.
Oi Bruce Wayne
// Acessando os dados da sessão
echo 'Oi, ' . $_SESSION["nome"] . ' ' . $_SESSION["sobrenome"];
?>

64
PHP Avançado

Para destruir uma sessão

Se você deseja remover determinados dados da sessão, basta


remover a chave correspondente da matriz $_SESSION, conforme
mostrado no exemplo a seguir:

<?php
// Inicia a sessão
session_start();

if (isset($_SESSION["sobrenome"])) {

// Remove o dado sobrenome da sessão


unset($_SESSION["sobrenome"]);

// Destrói a sessão e todos os dados inseridos nela


session_destroy();
}
?>
Cada sessão do PHP tem um valor de tempo limite, ela é medida em
segundos e determina quanto tempo a sessão deve permanecer
ativa sem nenhuma atividade do usuário. Você pode ajustar o
período de tempo limite alterando o valor da variável
session.gc_maxlifetime no arquivo de configuração PHP do seu
servidor host (php.ini).

Link dos exemplos:


Clique Aqui

65
PHP Avançado

51 Manipulando Arquivos

Abrindo, Lendo e Fechando

Abrindo um arquivo

Você pode abrir um novo arquivo para leitura através da permissão


do arquivo "r".

O primeiro parâmetro refere-se ao caminho de onde o arquivo que


você deseja abrir está.

Exemplo:

Lendo um arquivo com a função fgets()

Para ler um arquivo você para você pode o usar o fgets()


O primeiro refere-se ao caminho de onde o arquivo que você deseja
ler está.

66
PHP Avançado

Caso deseje fechar um arquivo use a função fclose()

Criando e Escrevendo

Criando e lendo um arquivo para escrita com o fopen()

A função fopen() possui dois parâmetros, o primeiro refere-se ao


caminho de onde você deseja salvar o seu arquivo e o segundo
refere-se a permissão do arquivo.
No exemplo acima usamos o "w" que permite apenas a escrita no
arquivo.
exemplo:

52 Filtros no PHP

Um filtro em PHP é usado para validar e filtrar dados provenientes


de fontes inseguras.

Testar, validar e filtrar a entrada do usuário ou outros dados é uma


parte importante de uma aplicação web.

Os filtros do PHP foram projetados para tornar a filtragem de dados


mais fácil e simples.

67
PHP Avançado

Quase todas as aplicações Web dependem de entradas externas.


Isso geralmente vem do usuário ou de outra aplicação (como um
serviço da Web). Usando filtros, você pode ter certeza de que sua
aplicação tem o valor correto.

Você deve sempre filtrar dados externos!

A filtragem de entrada é um dos problemas de segurança mais


sérios e você pode corrigi-los limpando e validando os dados
enviados através de um formulário para o seu servidor.

Validando e Limpando

Existem dois tipos de filtros:

Filtros de limpeza
São usados para permitir ou não determinados caracteres.

Vamos limpar o valor enviado como email para não aceitar


caracteres ilegais.

<?php
$email = "atendimento@dankicode.com";

//removendo caracteres ilegais.


$email = filter_var($email, FILTER_SANITIZE_EMAIL);

?>

68
PHP Avançado

Filtros de validação
São usados para validar a entrada de dados.

Vamos validar o valor enviado como email.

<?php
$email = "atendimento@dankicode.com";

//removendo caracteres ilegais.


$email = filter_var($email, FILTER_SANITIZE_EMAIL);

//validando o email
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
echo ("$email é um endereço de email válido.");
} else {
echo ("$email não é um endereço de email válido.");
}
?>

Exemplos usados:
Clique Aqui

69
MVC: Model - View - Controller

O MVC é importante no desenvolvimento de sistemas porque


fornece uma estrutura básica para a criação de aplicativos
desenvolvidos nessa linguagem. Ele pode ser facilmente mantido e
dimensionado usando o planejamento da arquitetura de software.

Entenda o que significa MVC

53 Model / Modelo

O model é responsável por acessar os dados do aplicativo. Pode ser


dividido em classes de domínio que representam o estado dos
objetos (dados) e as regras de negócio aplicadas a eles, além das
interfaces para as lojas que são utilizadas para manipular esses
objetos no banco de dados.

54 View / Visão

A View é responsável por processar e formatar a saída do


programa, seja uma interface gráfica/textual com o usuário final ou
um arquivo de texto criado a partir de dados armazenados na
memória principal do computador.

70
MVC: Model - View - Controller

55 Controle / Controlador

O controller atua como um intermediário entre visualizações e


modelagem: pesquisar (obter), adicionar (enviar), alterar (inserir),
remover (excluir). Após receber o pedido, realiza todo o
processamento necessário para dar uma resposta adequada ao
pedido feito pelo cliente.

Link do Projeto MVC:


Clique Aqui

71
Segurança no PHP

Hoje, a criptografia de dados é tão importante que se tornou básica,


uma prática essencial. As formas de quebrar sistemas de
criptografia estão constantemente sendo pesquisadas, mas ainda
precisamos usar o maior potencial de segurança à nossa disposição
para tornar a nossa aplicação o mais segura possível.

56 Tratamento de Upload de Arquivos

Precisamos validar os arquivos carregados pelo usuário antes de


enviá-los ao nosso servidor.

Iremos fazer quatro validações simples, mas que irão deixar o


sistema mais seguro.

1) Verifique se o arquivo existe.


2) Verifique se o arquivo carregado está vazio.
3) Verifique o tamanho do arquivo.
4) Verifique o(s) tipo(s) de arquivos que serão aceitos.

1) Para verificar se um arquivo existe:

if (empty($_FILES["arquivo"]['tmp_name'])) {
echo "nenhum arquivo foi carregado";
}

72
Segurança no PHP

2)

if ($_FILES["arquivo"]['size'] === 0) {
echo "arquivo sem tamanho";
}

3)

if ($_FILES["arquivo"]['size'] >= 1000000) {


echo "tamanho grande";
}

4)

if ($_FILES["arquivo"]['type'] != "image/png") {
die("formato não permitido.");
}

Após isso podemos enviar o arquivo para o nosso servidor:

move_uploaded_file($_FILES['arquivo']['tmp_name'], "arquivos/" . $_FILES["arquivo"]


['name']);
echo "Arquivo enviado com sucesso";

73
Segurança no PHP

Código completo abaixo:

if (empty($_FILES["arquivo"]['tmp_name'])) {
echo "nenhum arquivo foi carregado";
}else{
if ($_FILES["arquivo"]['size'] === 0) {
echo "arquivo sem tamanho";
} else {
if ($_FILES["arquivo"]['size'] >= 1000000) {
echo "tamanho grande";
} else {
if ($_FILES["arquivo"]['type'] != "image/png") {
die("formato não permitido.");
}else{
move_uploaded_file($_FILES['arquivo']['tmp_name'], "arquivos/" .
$_FILES["arquivo"]['name']);
echo "Arquivo enviado com sucesso";
}
}
}
}

Exemplo usado:
Clique Aqui

57 Criptografia

Há alguns métodos de encriptação, como por exemplo: md5, crypt,


base64 e password_hash

74
Segurança no PHP

Iremos dar preferência para o uso do password_hash

Password Hash

A função password_hash() cria uma senha hash usando o algoritmo


padrão bcrypt.

Exemplo:

<?php
$password = $_POST['senha'];

$hash = password_hash($password, PASSWORD_DEFAULT);

// CASO A SENHA ESTEJA CORRETA


if (password_verify($password, $hash)) {
echo "Senha correta";
}

// CASO A SENHA ESTEJA INCORRETA


else {
echo "Senha incorreta";
}
Exemplo usado:
Clique Aqui

75
Segurança no PHP

58 SQL Injection

SQL Injection é uma das formas mais comuns de ataque na qual um


invasor pode injetar ou manipular consultas geradas pela aplicação,
que são enviadas diretamente para um banco de dados relacional.

A técnica de ataque mais simples usada pelo SQL Injection é


"falsificar" o formulário de login de uma aplicação.

A melhor maneira de proteger sites contra ataques de SQL Injection


é usar parâmetros SQL. Parâmetros SQL são valores que são
adicionados à consulta SQL em tempo de execução e de forma
controlada.

Utilizando Prepared Statements para proteger contra ataques de


SQL Injection:

Exemplo

$id = 7;
$banco = new PDO('mysql:host=localhost;dbname=nome_do_banco_de_dados',
'username','password');
$sql = $banco->prepare("DELETE FROM `usuario` WHERE id = ?");
$sql->execute([$id]);

76
Segurança no PHP

59 Ataques XSS

Cross-site scripting (XSS) é uma das principais (e mais comuns)


vulnerabilidades de segurança em sites e aplicativos da web. Ele
permite que um invasor insira um código malicioso em uma página
da Web, que é executado no navegador de um usuário que visita
essa página da Web. Isso pode causar muitos problemas, desde o
roubo de dados confidenciais até a instalação de malware nos
dispositivos dos usuários.

Geralmente, os ataques ocorrem devido à falha na validação dos


dados inseridos pelo usuário e às respostas falhadas dos servidores
da web. Falhas de comunicação entre a entrada de dados no
navegador e a resposta do servidor de destino são praticamente
irreconhecíveis para o usuário.

Ataques XSS ocorrem quando:

A página da web permite a entrada de dados, mas não pode validar


efetivamente os dados;
A entrada de dados é feita por meio de conteúdo ativo, como HTML,
JavaScript, ActiveX, Flash, Silverlight, etc.

77
Segurança no PHP

Formas de prevenção em seu site/sistema:

1. Para implementar uma política de segurança sob o título de


CSP (Content Security Policy:
2. Evite executar scripts embutidos em HTML
3. Impedir o carregamento de scripts de fontes desconhecidas
4. Evite usar funções inseguras como Eval
5. Uso restrito de tags de objeto HTML
6. Estabeleça o atributo de segurança HttpOnly para reduzir o
impacto de ataques XSS
7. Valide todos os dados de entrada em uma lista branca de
caracteres permitidos
8. Codifique a saída de dados no respectivo código HTML de
acordo com o contexto, pelo menos para caracteres especiais
(&, <,>, ", '), seja JavaScript, CSS, HTML
9. Use uma biblioteca como HtmlSanitizer para higienizar dados

Leia mais:
https://cheatsheetseries.owasp.org/cheatsheets/Content_Security
_Policy_Cheat_Sheet.html

Clique Aqui

78
Segurança no PHP

Para evitar essas vulnerabilidades, você deve controlar a entrada


de dados no formulário (front-end) e processar esses dados no
servidor (back-end).

Um exemplo de processamento na linguagem de programação PHP


é usar a função htmlentites(), que remove todas as tags html e
converte aspas duplas do texto.

Exemplo:
htmlentities()

Dessa forma, quando a página carregar, o javascript no texto será


ignorado e não será executado. No entanto, é importante combinar
outras formas de autenticação, como o uso de outras medidas,
como tokens.

79
CONCLUSÃO

Esperamos que a sua caminhada até aqui tenha sido proveitosa.


Não deixe de nos chamar caso tenha dúvidas.

Iremos constantemente atualizar o ebook com novos projetos práticos


para você.

Um abraço da equipe da Danki Code.


Você deseja se tornar um Desenvolvedor Full-Stack e Dominar as
melhores Tecnologias do Mercado?
Então temos o curso certo para você.

Abaixo você confere mais de 25 Cursos que te ensinarão do Zero


ao Profissional a se tornar um Desenvolvedor Full-Stack.
Domine o Front-End e o Back-End Agora Mesmo!

Aproveite pois este SUPER DESCONTO não ficará disponível por muito tempo.
Adquira AGORA MESMO e se destaque no mercado nacional e
internacional.
Caso prefira levar todos os mais de 150 cursos da plataforma,
lançamentos futuros e funcionalidades exclusivas garanta sua
vaga no Plano Vitalício e se torne um #EternoDanki.

Você também pode gostar

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy