31
U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o C C A U F E S Universidade Federal do Espírito Santo Centro de Ciências Agrárias – CCA UFES Departamento de Computação Desenvolvimento de Sistemas para WEB Site: http://jeiks.net E-mail: [email protected] Trabalhando com PHP

i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

  • Upload
    letuyen

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

Page 1: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

Universidade Federal do Espírito SantoCentro de Ciências Agrárias – CCA UFESDepartamento de Computação

Desenvolvimento de Sistemas para WEBSite: http://jeiks.net E-mail: [email protected]

Trabalhando com PHP

Page 2: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

Formulários

Page 3: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

3

Formulários: HTML ↔ PHP

ClientePossui a página HTML

com o formulário.

ServidorPossui a página que receberá as informações do

formulário

Envia as informaçõesao servidor

Processa as informaçõesdo formulário.

Gera a resposta

Fornece a resposta para o Cliente

Page 4: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

4

Formulários HTML

● Formulários HTML são utilizados para enviar dados para o servidor.

● Eles podem conter muitos campos, como:– Texto;

– Checkboxes;

– Listas de seleção;

– etc.;

● A tag utilizada é a form:<form>

elementos de entrada

</form>

Page 5: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

5

Formulários HTML

● Os principais atributos dos formulários são:– action: especifica onde enviar os dados quando um formulário é

submetido;

– method: especifica o método HTTP que será utilizado para enviar o formulário;

– name: especifica o nome do formulário

– Mais atributos em: <http://www.w3schools.com/tags/tag_form.asp>

● Exemplo:

<form action="destino.php" method="GET" name="fnome">

  Primeiro nome: <input type="text" name="pNome"><br>

  Último nome: <input type="text" name="uNome"><br>

  <input type="submit" value="Enviar">

</form>

Page 6: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

6

Métodos de envio

● GET:– Anexa os dados do formulário na URL em pares de nome/valor. Ex:

● http://jeiks.net/processa.php?nome=jeiks&senha=123 ● Por isso, nunca deve-se usar GET para enviar dados confidenciais!

– O comprimento de um URL é limitado (cerca de 3000 caracteres);

– Útil para submissões simples.

– GET é melhor para dados que não precisam de proteção.

● POST:– Anexa os dados do formulário dentro do corpo da solicitação HTTP

(os dados não são mostrados na URL);

– Não tem limitações de tamanho;

– POST deve ser utilizado para dados que precisam demais proteção.

Page 7: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

7

Recebendo os formulários – PHP

● Para receber os dados do formulário, o PHP possui arrays que são variáveis superglobais:– $_POST;

– $_GET;

– $_REQUEST;

● Exemplo:

<p>Dados obtidos com POST</p>

<pre><?php print_r($_POST); ?></pre>

<p>Dados obtidos com GET</p>

<pre><?php print_r($_GET); ?></pre>

<p>Dados obtidos com REQUEST</p>

<pre><?php print_r($_REQUEST); ?></pre>

Page 8: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

8

Hora de praticar.

Abram e estudem os exemplos disponíveis em: formularios.zip

Page 9: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

9

Banco de Dados

Page 10: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

10

Banco de DadosHTML e PHP

ClientePossui a página HTML

com o formulário.

ServidorPossui a página que receberá a

requisição

Envia a requisiçãoao servidor

Fornece a resposta para o Cliente

Obtém as informaçõesdo banco de dados

Page 11: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

11

Processo de comunicação

● Ocorre em etapas:

1. Conectar ao banco de dados:$con = mysqli_connect( "servidor", "usuario",                              "senha" , "nome_do_banco" );

2. Efetuar a pesquisa no banco de dados:$query = "SELECT * FROM `tabela`";

$resposta = mysqli_query( $con, $query );

3. Percorrer a resposta do banco de dados:while ( $linha = mysqli_fetch_array($resposta) )

  echo "<li>($linha[0]) $linha[1]";

4. Encerrar a conexão ao banco de dados:mysqli_close( $con )

Page 12: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

12

Mão na massa

Estudem o exemplo: mysql.php

Page 13: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

Sessões em PHP

Page 14: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

14

O que é uma sessão

● Suporte a sessões no PHP:– maneira de preservar dados através de acessos

subsequentes.

● Características:– permite a criação de aplicações mais personalizadas;

– permite que certas características do site sejam apresentadas somente aos usuários pertencentes a determinada sessão.

● É determinada através de uma variável superglobal ($_SESSION) chamada “variável de sessão PHP”.

Page 15: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

15

Variável de sessão PHP

● É utilizada para– Armazenar informações sobre a sessão;

– Modificar configurações da sessão de um usuário.

● Armazenar informação sobre um único usuário;● Permanecer disponível para todas as páginas de

uma aplicação web.● Ela trabalha criando uma única identificação

(UID) para cada usuário e pode armazenar outras variáveis/informações utilizando essa UID.

Page 16: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

16

Sessões

● Permitem trabalhar como em desktops:– Abrir um aplicativo associado a um usuário;

– Utilizar o aplicativo;

– Fechar o aplicativo.

● As sessões permitem armazenar informações sobre o usuário no servidor para utilizar depois.

● Porém, são temporárias, ou seja, terminam assim que o site é abandonado.

Page 17: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

17

Criando uma sessão

<?php

session_start();

if( isset( $_SESSION['views'] ) )

  $_SESSION['views']++;

else

  $_SESSION['views']=1;

echo "Session ID=".session_id()."<br/>";

echo "Visualizacoes=".$_SESSION['views'];

?> 

Após criar a sessão, também énecessário utilizar essa instrução

para acessar as variáveis queforam declaradas.

Page 18: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

18

Destruindo uma sessão

● Apagando uma variável de sessão:

<?php

session_start();

if(  isset( $_SESSION['views'] )  )

  unset( $_SESSION['views'] );

?> 

● Destruindo toda a sessão:<?php

session_destroy();

?>

Page 19: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

19

Mãos a obra.

Crie o php com o código do slide 18 e execute-o.Após isso, insira mais variáveis e teste sua

sessão.

Page 20: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

20

Cookies

Page 21: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

21

Cookies

● São formas utilizadas por website para identificar um usuário.● Com isso, consegue salvar informações específicas para que

este usuário seja tratado de uma forma diferente na próxima vez que entrar no site:– Cor de fundo do site;

– Pesquisas realizadas;

– Nick utilizado no chat;

– etc.

● Assim, na próxima vez que entrar no site, ele abrirá essas variáveis e saberá como tratar sua visita.– Geralmente os sites mantém um campo chamado “Lembre-se de

mim” ou “Remember Me” para isso.

Page 22: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

22

Cuidados de segurança

● Suponha que um cookie possua as seguintes variáveis:– Usuario;

– Nivel_Acesso;

● Se o usuário modificar o valor do Nivel_Acesso e entrar no site de novo, ele pode se tornar um administrador.

● Em casos onde a sessão seja gravada no cookie, uma pessoa pode roubar essa informação e acessar a conta da pessoa em outro computador.

Page 23: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

23

Criando um cookie

setcookie( name, value, expiration,

path, domain, secure, httponly );

– Name: nome que seu cookie terá no computador do usuário;

– Value: valor que será armazenado no cookie;

– Expiration: define quando o cookie vai expirar (ser apagado);

– Path: O caminho no servidor onde o cookie estará disponível;

– Domain: O domínio para qual o cookie estará disponível;

– Secure: Indica que o cookie só poderá ser transmitido sob uma conexão segura HTTPS do cliente;

– Httponly: Quando for TRUE, o cookie será acessível somente sob o protocolo HTTP.

Page 24: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

24

Exemplos

<?php

$value = 'alguma coisa de algum lugar';

setcookie("CookieTeste", $value);

/* expira em 1 hora */

setcookie("CookieTeste", $value, time()+3600);  

/* utilizando caminho e domínio */

setcookie("CookieTeste", $value, time()+3600, 

              "/~usuario/", ".exemplo.com", 1);

?>

Page 25: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

25

Obtendo os valores do cookie

● Os valores são obtidos automaticamente.● Para acessá-los, basta utilizar a variável $_COOKIE:

<?php

// Mostra um cookie individual

echo $_COOKIE[ "CookieTeste" ];

echo $HTTP_COOKIE_VARS["CookieTeste"];

// Outra maneira de testar é vendo todos os cookies:

print_r( $_COOKIE );

?>

Page 26: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

26

Cookies e Arrays<?php

// envia os cookies

setcookie("cookie[tres]", "cookie tres");

setcookie("cookie[dois]", "cookie dois");

setcookie("cookie[um]", "cookie um");

// Depois que a página recarregar, mostra eles

if (  isset( $_COOKIE["cookie"] )  ) {

    foreach ($_COOKIE["cookie"] as $nome => $valor ) {

        echo "$nome : $valor <br />\n";

    }

}

?>

Page 27: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

27

Qual utilizar: sessão ou cookies?

Page 28: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

28

Qual utilizar: sessão ou cookies?

Os cookies são mais fáceis de serem modificados do que as sessões.

Page 29: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

29

Exemplo de uma função loginfunction login($username, $password) {

  $query = "SELECT id, user_level FROM users WHERE ".

         "password = '$password' AND ".

         "username = '$username' LIMIT 1";

  $sql = mysql_query( $query );

  if($sql === false) return false;

  else {

         $resp = mysql_fetch_array( $sql );

         session_regenerate_id(true);

         $_SESSION['user_id'] = $resp[ 'id' ];

         $_SESSION['user_level'] = $resp[ 'user_level' ];

         $_SESSION['user_name'] = $username;

         $_SESSION['user_lastactive'] = time();

        return true;

  }}

SegurançaLembre-se de

tratar as variáveis$username e $passwordantes de fazer a query.

SegurançaLembre-se de

tratar as variáveis$username e $passwordantes de fazer a query.

Page 30: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

30

Se for utilizar o “Lembre-se de mim”function login($username, $password, $remember = false) 

...

if($remember) {

   // Gera uma nova chave de identificação com um cookie

   $cookie_auth = "algoRandomico" . $username;

   $auth_key = sha1( $cookie_auth );

   $auth_query = mysql_query(

            " UPDATE users SET auth_key = '$auth_key' ".

            " WHERE username = '$username' "  );

   exp = time()+60*60*24*7; //sete dias após o dia atual

   setcookie( "auth_key", $auth_key, exp, "/",   

              "exemplo.com", false, true );

}

Page 31: i ae F e l d o Trabalhando com PHP E s o S o - jeiks.netjeiks.net/wp-content/uploads/2015/02/DSW_Slides-07.pdf · Sessões em PHP. U n i v e r s i d a d e F e d e r a l d o E s p

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

A U

FE

S

31

Mãos na massa

Crie cookies e utilize-os para gravar informações do seu site.