Agora vamos falar de mais um ponto que é chupetinha. Vamos falar de Sessão.
Muitas das vezes precisamos manter uma determinada informação disponível para ser usada em todo o nosso site ou para ser usada por outras páginas sem que o usuário tome conhecimento. Uma solução poderia ser o uso der cookie, porém algumas informações precisam ser mantidas no servidor por uma questão de segurança, e nesse caso o uso de sessão é a indicada.
Trabalhar com sessão é como trabalhar com uma variável que está disponível para uso em qualquer página que criamos em nosso site.
Os valores guardados na sessão irão permanecer enquanto o navegador permanecer aperto ou até que você as apague explicitamente, usando um comando para isso.
Uma sessão está associada a uma janela, não aba, do seu navegador. Você terá duas sessões distintas em janelas diferentes do seu navegador ou navegador diferente.
Vamos, como de costume, ao passo-a-passo de como usar variáveis de sessão.
1) Iniciar a sessão
A primeira coisa que você precisa fazer é executar um comando PHP que disponibiliza as variáveis de sessão para você. Esse comando é o session_star().
/********************************************
Iniciando a sessão
********************************************/
session_start();
2) Utilizar as variáveis de sessão
Depois de iniciar a sessão você poderá criar, alterar, ler ou apagar uma variável da sessão.
Nós acessamos uma determinada variável utilizando um array de nome $_SESSION. Repare nas letra maiúsculas, te que ser assim, se escrever com alguma letra minúscula não funciona. Lembre-se de que o PHP é case sensitive, ou seja faz distinção entre letras maiúsculas e minúscula, elas não representam a mesma coisa.
Para criar ou alterar uma variável se usa um mesmo formato de comando. No exemplo abaixo, por exemplo, se a variável de sessão 'nomeUsuario' não existir ela será criada e se já existir ela terá seu valor alterado para Joselmo.
/********************************************
Iniciando a sessão
********************************************/
session_start();
$_SESSION['nomeUsuario'] = 'Joselmo';
//
$_SESSION['nomeUsuario'] = 'Joselmo';
//
Para efetuar a leitura do valor de uma variável de sessão nós fazemos operações consultando o valor contido no array $_SESSION. Veja.
/********************************************
Iniciando a sessão
********************************************/
session_start();
nome = $_SESSION['nomeUsuario']; // Pego valor da variável de sessão
echo $nome; // Imprime o nome contido na variável de sessão 'nomeUsuario'
nome = $_SESSION['nomeUsuario']; // Pego valor da variável de sessão
echo $nome; // Imprime o nome contido na variável de sessão 'nomeUsuario'
Caso você não queira mais deixar um determinada variável disponível, por qualquer motivo que seja, sem destruir todas as outras variáveis de sua sessão você deverá fazer uso da função unset().
/********************************************
Iniciando a sessão
********************************************/
session_start();
$nome = $_SESSION['nomeUsuario']; // Pego valor da variável de sessão
echo $nome; // Imprime o nome contido na variável de sessão 'nomeUsuario'
unset($_SESSION['nomeUsuario']); // Após essa linha a variável de sessão
// 'nomeUsuario' não existirá mais.
Se em um determinado momento você desejar destruir todas as variáveis de uma sessão você poderá fazê-lo usando a função session_unset(). Essa função apaga todas as variáveis da sua sessão.
/********************************************
Iniciando a sessão
********************************************/
session_start();
$nome = $_SESSION['nomeUsuario']; // Pego valor da variável de sessão
echo $nome; // Imprime o nome contido na variável de sessão 'nomeUsuario'
session_unset(); // Após essa linha todas as variáveis de sessão
// não existirão mais.
Vamos ao exemplo de Login usando sessão.
O nosso programa PHP recebe dois parâmetros enfiados pelo método POST, um deles é o login e o outro é a senha. Precisamos validar o acesso e devolver o nome do usuário caso o login tenha sido realizado com sucesso ou vazio ("") caso os dados não confiram com a base de dados.
Como a senha está criptografada na base de dados com a função sha2, teremos que usar essa função na base de dados para realizar a consulta.
session_start();
$email = $_POST['email'];
$senha = $_POST['senha'];
$senha = $_POST['senha'];
$sql = "Select nome From USUARIO Where email = ? and senha = sha2(?,0)";
$con = new mysqli('localhost','root','','meusite');
$cmdprep = $con->prepare($sql);
$cmdprep->bind_param('ss',$email,$senha);
$cmdprep->execute();
$cmdprep->bind_result($nome);
if($cmdprep->fetch()) {
$_SESSION['logado'] = true;
$_SESSION['nome'] = $nome;
echo $nome;
}
else {
echo "";
}
Em todas as páginas você poderia estar incluindo em um determinado arquivo PHP para colocar a mensagem "Bem vindo, ...!" caso ele esteja logado. Para isso poderemos usar um exemplo como esse abaixo.
session_start();
// Testo a existência da variável de sessão para evitar
// erro caso a variável de sessao não exista.
if (isset($_SESSION['logado'])) {
// A variável de sessão existe
// Verifico se o usuário está logado
if($_SESSION['logado'] == true) {
// Coloca mensagem semelhante a 'Bem vindo, Joselmo!'
// e sai do programa para não botar mensagem 'Faça login'.
echo "Seja bem vindo, " . $_SESSION['nome'] ."!" ;
exit;
}
}
echo 'Faça login';
Você poder ter páginas que só podem ser acessadas se o usuário estiver logado. Nesse caso você poderá fazer uso da função include() ou include_once() de um arquivo que teste se o usuário está logado. Como esse exemplo a seguir.
session_start();
// Testa a existência da variável de sessão para evitar
// erro caso a variável de sessao não exista.
if (! isset($_SESSION['logado'])) {
// A variável de sessão NÃO existe
// Ir para a página inicial
header("Location: index.php");
}
// Verifica se o usuário está logado
if($_SESSION['logado'] != true) {
// A variável de sessão NÃO existe
// Ir para a página inicial
header("Location: index.php");
}
// Continua o seu código
E para fazer logof você poderia usar algo semelhante ao exemplo abaixo.
session_start();
session_unset();
header("Location: index.php");
É isso aí meus queridos amigos. Fala sério, esses exemplos são ou não são chupetinha?
Afinal, la garantia soy Jo (yo).
Aquele abraço e até a próxima.
Nenhum comentário:
Postar um comentário