Aplicativos em PHP/Trabalhando em PHP com/Session

11.5 - Trabalhando com Session em PHP

editar

Crie um pequeno aplicativo com os seguintes arquivos. Copie os arquivos para um diretório no seu servidor web e chame o index pelo browser:

index.php


<?
''session_start();''
?>
<center><h1>Trabalhando com SESSION em PHP</h1>
Podemos preservar valores de variáveis enquanto durar uma sessão do browser através do uso de 
SESSION.<br>
Para isso devemos startar a sessão em cada página que desejamos usar esta variável com<br>
<br>
sesssion_start();<br><br>
Lembrando que esta função deve vir antes de qualquer comando que mande algo para a tela, caso
<br>
o session esteja configurado para usar cookie.<br>
Na primeira página deve ter um formulário com algum campo que devemos usar no session.<br>
Experimente gravar a URL de uma das páginas internas e acessar diretamente 
(http://localhost/session3)
<br>Primeiro feche todas as seções do browser e depois abra o browser com essa URL.<br>
<br>
Veja que SESSION é muito bom para preservar o valor de variáveis entre páginas de um site numa seção.
<br>
Portanto seu uso é muito útil quando pretendemos autenticas os visitantes de todas as as páginas 
de um site.<BR>

Como também para outros usos em que pretendemos reaproveitar o valor de variáveis 
(algo como global).<BR>
Acompanhe este exemplo para ver detalhes.<br><br><br>

<form method=post action=session2.php>
	Login<input type=text size=8 name=login><br>
	<input type=submit value=Enviar>
</form></center>


destruir.php

<?
session_start();
if (isset($_SESSION['login'])){
  session_unset(); // Eliminar todas as variáveis da sessão
  session_destroy(); // Destruir a sessão
  echo "Entre. Sessão Destruida. <a href=session3.php>Session3</a><br>";  
} else {
  echo "Acesso não autenticado!";
}
?>


session2.php

<?
session_start();
$_SESSION['login']=$_POST['login'];

if (isset($_SESSION['login'])){
	echo "Entre. Session2. <a href=session3.php>Session3</a>";
} else {
	echo "Acesso não autenticado!";
}
?>


session3.php

<?
session_start();
if (isset($_SESSION['login'])){
  echo "Entre. Session3. <a href=session4.php>Session4</a><br>";
  echo "<a href=destruir.php>Drestruir Sessão</a>";
} else {
  echo "Acesso não autenticado!";
}
?>


session4.php

<?
session_start();
if (isset($_SESSION['login'])){
	echo "Entre. Session4. <a href=session5.php>Session5</a>";
} else {
	echo "Acesso não autenticado!";
}
?>


session5.php

<?
session_start();
if (isset($_SESSION['login'])){
	echo "Entre. Session5. <a href=index.php>Index</a><br><br>";
	echo "Informações: <br>ID da Sessão: <b>" . session_id() . 
	"</b><br>Variável mantida pela SuperGlobal \$_SESSION: <b>" . $_SESSION['login'];
} else {
	echo "Acesso não autenticado!";
}
?>


Como as variaveis ficam fixas em todas as páginas de um site.Um exemplo: Quando você faz login em um site ao qual tem um cadastro.E seu nome de login fica lá em cima em todas as páginas referente a sua conta.Essas variaveis que "vivem" em todo o site são chamadas "variaveis de sessão($_SESSION). Para cria-las é muito simples:

primeiro devemos começar sempre antes de qualquer tag HTML ou escapamento do comando echo("");

ficaria assim um exemplo:

<?php
  
     session_start(); // sempre chamamos a sessão dessa forma
     
     $login="cloud"; // passamos um valor qualquer a variavel $login "ainda não é a sessao"
     
     $_SESSION['login']=$login;
?>

agora sim,criamos uma variavel session que tem o nome login(....['login']) e ela possue agora um valor que é da variavel $login(essa variavel $login não precissa necessariamente ter um valor fixo,ela pode vir de um form entenderam?

quando quisermos mostrar ou usar o valor da variavel $login em outra pagina,ja podemos pois agora ela esta dentro de uma session um exemplo de como chama-la em outra pagina(arquivo)

<?php
   
     session_start(); // sempre que usarmos as sessions devemos chamar esse codigo sempre no inicio do script

if(isset($_SESSION['login'])){// verifica se existe a varavel session

   $login=$_SESSION['login']; // passa o valor da variavel session para outra variavel so que uma variavel dentro do mesmo arquivo

   echo($login);// cloud

}else{

  echo("vc nao passou pelo arquivo anterior");

}


Capítulo sobre Session na Documentação Oficial do PHP

http://www.php.net/manual/pt_BR/ref.session.php

Artigos Sobre Session em PHP

http://www.revistaphp.com.br/print.php?id=79

http://www.scriptbrasil.com.br/forum/lofiversion/index.php/t79221.html

http://www.htmlstaff.org/ver.php?id=5353

http://maozinhadaweb.blogspot.com/2007/05/tutorial-de-php-parte-3-sesses-e.html

http://www.devshed.com/c/a/PHP/Sessions-and-Cookies/

===================UTILIZANDO SESSION EM VISUAIS ALTERNATIVOS DE SITE===========
editar

Uma boa pedida para trabalhar com SESSION, seria a possibilidade de mudar o visual do site.

exemplo:default.css,green.css

página de escolha de visual do site:

if(isset($_GET['css'])){
$_SESSION['css']=$_GET['css'];
}else{
echo "<form><select name='css'>
<Option>default</option>
<Option>green</option></select></form>";
}
  • No import do css, utilize ao invés do nome do arquivo a variável $_SESSION['css'].
  • PS: Não esquecer de fazer antes do import:
if(empty($_SESSION['css'])){$_SESSION['css']="default";}