+2

Sessions criação e macetes

criado por Roberto Assis em 01/11/2003 11:47pm
Vou fazer uma descrição detalhada sobre session, durante a explicação demonstrarei os "pegas" existentes.

Com as novas versões do PHP ele ficou mais seguro, só que ficou um pouco chato de programar.

Por exemplo:

Quando passar uma variável dentro de um form pelo método post (aconselhável usar post)

Será preciso na outra página "carregar" a variável antes de usá-la
Ex:
$variavel = $HTTP_POST_VARS['variavel'];

assim estará atribuindo valor e poderá usá-la.

Se for por método get vai mudar a palavra POST para GET e se for por session usará SESSION.

Caso o PHP for versão superior a 4.2 é até mais fácil

É só colocar $_SESSION['blabla'], $_POST, $_GET;


Agora vamos para a session.

Dica 1
Antes de começar falar sobre session é interessante saber:
Nunca pode usar a session na mesma página que é registrada. Quando o usuário loga com seu usuário e senha, sempre mando ele para uma página chamada redirect.php lá eu faço as verificações, se é usuário e se a senha está correta.
Se estiver tudo ok registro as sessions e mando ele para dentro do sistema.

Comentários:

Mostrando 1 - 10 de 43 comentários
Roberto Assis disse:
vc nao consegue imprimir a session na mesma pagina q vc criou. é preciso enviar para outra página dar o session start e depois imprimir as sessions ;)

desculpe a demora, estava off da comunidade

[ ]'sss
20/07/2006 6:50am (~18 anos atrás)

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/webplux/public_html/home.php:6) in /home/webplux/public_html/home.php on line 367
Queria saber o motivo desse erro. O session_start(); está no incício do código.
este é o código:
<?
session_start();
$login = $_SESSION['login'];
echo "Seja bem vindo(a), " . $login . "<br />";
?>
Ele executo o echo e mostra o $login mas da esse erro.
Agradeço!
06/03/2006 2:56pm (~18 anos atrás)

Parabéns por ensinar como trabalhar com session, para mim foi de grande utilidade, mto obrigado!!!
10/10/2005 6:43pm (~18 anos atrás)

e tambem criei com sucesso o formulario para registro do usário numa tabela mysql. O problema agora ocorre com os comandos session_start(); e com header ('paginadestino.php'); não funciona. Na sessão ocorre erro de cookie e na header ocorre não foi possivel fazer a mudança para a página.

Alguém pode me ajudar para concluir mue script de login???
12/04/2005 10:05pm (~19 anos atrás)

Acabo de fazer minha introdução a sessões e foi rapido e indolor (ao contrario dos outros códigos). Parabens, não tá perfeito mas tá ótimo pra botar sessão workando de cara num site.

Se puder colocar algo mais refinado e tão simples quanto, no futuro, nós newbas agradecemos.
11/07/2004 10:31pm (~20 anos atrás)

Luiz Fernando disse:
Olá, sou novo,

Queria dizer que leio variossssss Artigos daqui. Acho que são otimos, me ajudam MUITO...

E queria ajudar.. Então lendo esse Artigo vi que faltou apenas uma coisa:

Logoff ! É isso mesmo, falou logoff, eu na hora que li pensei numa logica.. Ae voces modificam como quiserem:

logoff.php

<?

session_start();
$logoff = session_destroy();

if($logoff){

/* poe uma mensagem, ou redireciona para pagina apos o login ! */

}else{

/* retorna uma mensagem de erro, ou redireciona para 'index.php' */

}

?>

A logica seria essa

Nao testei, porem deve dar certo

Se errei me corrigam e me desculpa *sou novato em php*...

Abracos..
19/05/2004 4:09pm (~20 anos atrás)

Eu quero um sisteminha simples de login, que tenha usuario e senha.
Olha só minha duvida é o seguinte, Eu consigo fazer uma conexão com o banco de dados e entro painel.php, com o painel consigo acrecentar mais usuario e senha, mas tem um porém, quero agora criar usuarios que entram na sua propria pasta.
E não consigo fazer isso, se for possivel gostaria que voces me auxiliasse, somente nesta questão de redirecionar cada usuario para sua pasta(pagina).

Mais uma vez, Obrigado.


Os meus Arquivos São:

O index.php segue abaixo:

<?php

include('config.php');
error_reporting(E_ERROR | E_WARNING | E_PARSE);

$acao = !empty($HTTP_POST_VARS['acao'])? $HTTP_POST_VARS['acao'] : $HTTP_GET_VARS['acao'];
if ($acao=='erro')
{
$con=mysql_pconnect($host,$user,$pass);
mysql_select_db($banco);
$sql = "SELECT * FROM $tabela WHERE login='".addslashes($HTTP_POST_VARS['login'])."' AND senha='".addslashes($HTTP_POST_VARS['senha'])."' LIMIT 0,1";
$result = mysql_query($sql);
$num_rows = mysql_num_rows($result);
if($num_rows ==1)
{
$user_info = mysql_fetch_array($result);
$usr_login = $user_info['login'];
$usr_senha = $user_info['senha'];
$usr_autorizado = 1;
@mysql_free_result($result);
session_start("dglogin"); //Inicializa a sessão
//session_name();
session_destroy();
session_register('usr_login'); //Registra as variáveis na sessão
session_register('usr_senha'); //Registra as variáveis na sessão
session_register('usr_autorizado'); //Registra as variáveis na sessão
header("Location: $pagina"); //Redireciono para a página principal
exit;
}else{
$acao='error';
}
}
if ($acao=='error')
{
print"<br><br><center>Login ou senha não conferem</center>";
exit;
}
?><title>http://www.buske.com.br</title>
<body bgcolor="#FFFFFF" text="#000000" link="#000000" vlink="#000000" alink="#000000">
<TABLE align=center border=0 cellPadding=0 cellSpacing=0 width=326>
<TBODY>
<TR>
<TD colSpan=3>
<DIV align=center><IMG border=0 height=90
src="imagem/topo.gif" useMap=#Map width=326></DIV>
</TD></TR>
<TR>
<TD bgColor=#166aee height=159 width=3><IMG height=1
src="imagem/borda.gif" width=3> </TD>
<TD align=middle bgColor=#d4d0c8 height=159 width=320>
<DIV align=center>
<FORM action=<?echo $PHP_SELF;?>?acao=erro method=post>
<TABLE align=center border=0 cellPadding=0 cellSpacing=0 width="85%">
<TBODY>
<TR>
<TD colSpan=2 height=12><font face="Tahoma, Verdana, Arial" size="1">dg
login Vers&atilde;o 3.0 - Sistema de contas</font></TD>
</TR>
<TR>
<TD colSpan=2>&nbsp;</TD></TR>
<TR>
<TD height=34 width="33%"><FONT face="Tahoma, Verdana, Arial"
size=1>Nome de usuário: </FONT></TD>
<TD height=34 width="67%">
<INPUT name=login size=25>
</TD></TR>
<TR>
<TD height=34 width="33%"><FONT face="Tahoma, Verdana, Arial"
size=1>Senha:</FONT></TD>
<TD height=29 width="67%">
<INPUT name=senha size=15
type=password>
</TD></TR>
<TR>
<TD colSpan=2>
<div align="center"></div>
</TD></TR>
<TR>
<TD colSpan=2>
<DIV align=right>
<INPUT border=0 height=23
src="imagem/ok.gif" type=image width=75>
</DIV></TD></TR></TBODY></TABLE></FORM></DIV></TD>
<TD bgColor=#166aee height=159 width=3><IMG height=1
src="imagem/borda2.gif" width=3></TD>
</TR>
<TR>
<TD bgColor=#d4d0c8 colSpan=3 height=2 vAlign=top><IMG height=5
src="imagem/baixo.gif" width=326></TD>
</TR></TBODY></TABLE>


O config.php é este:

<?php

$host = 'localhost'; //host do mysql
$user = ''; //usuário mysql
$pass = ''; //senha mysql
$banco = 'teste1'; //nome do banco de dados
$tabela = 'tbl_usuarios'; //tabela onde que conteu os dados do usuario
$pagina = 'admin/painel.php'; //página principal da área restrita... para a qual o usuário será redirecionado ao se logar

?>

Muito Obrigado se alguem poder me ajudar.

Meu E-mail :
outlait@ig.com.br


14/05/2004 10:42am (~20 anos atrás)

Eu vejo que o pessoal se preocupa muito com o php.ini. Eu penso o seguinte. O que está no meu servidor tudo bem mas e o que vai estar la na internet??? Diante disso eu não me preocupo com o php.ini e procuro manter a programação de forma a usar as configurações padrão do php.ini pra não ter problemas na hora de publicar os sites. Eu também ja sofri paca com sessions, acostumado com a facilidade das sessions do asp eu quase desisti do php por várias vezes mas consegui resolver meio na porrada mas deu certo e a partir dai eu não mudo essa técnica mais que consiste em:
duas funcoes criadas num arquivo de include:
function mysession_init() {
session_start();
session_register('user_id');
session_register('bus_id');
session_register('secao');
session_register('secaonome');
}

function mysession_destroy() {
session_unregister('user_id');
session_unregister('bus_id');
session_unregister('secao');
session_unregister('secaonome');
$user_id = null;
$bus_id = null;
session_destroy();
}

qualquer página do site:
//inclui o arquivo com diversas funcoes uteis
mysession_init();
$_SESSION['secaonome'] = "/amigos";

e por ai vai.
02/03/2004 10:50am (~20 anos atrás)

olá Roberto gostei do artigo, me deu uma boa base sobre sessão, no entando, ainda não consigo imaginar como eu vou fazer um contador de cliques utilizando sessão. Eu não sei se é possivel gardão dados em vetor dentro de uma sessão e quero que seja somado 1 nas fotos onde o usuário clicou, mas um clique em cada uma das fotos só pode ser somado no MÁXIMO uma vez por sessão. Eu sei que isso é possível com sessão, mas não faço menor idéia de como... se alguém puder me dar alguma dica eu ficaria grato...

Obridago pela atenção.
23/01/2004 1:51pm (~20 anos atrás)

o meu post acima fala do erro
e ele acontece por causa do register_globals estar setado como off por este motivo é que o php tem problemas com session

depende da versao do PHP
as versoes atualmente 4.3.4 nao tem este problema

espero ter ajudado
23/01/2004 1:34pm (~20 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)