Sessions criação e macetes
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.
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.
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!
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
(~19 anos atrás)
Parabéns por ensinar como trabalhar com session, para mim foi de grande utilidade, mto obrigado!!!
10/10/2005 6:43pm
(~19 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???
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.
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)
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..
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ão 3.0 - Sistema de contas</font></TD>
</TR>
<TR>
<TD colSpan=2> </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
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ão 3.0 - Sistema de contas</font></TD>
</TR>
<TR>
<TD colSpan=2> </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.
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
(~21 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.
Obridago pela atenção.
23/01/2004 1:51pm
(~21 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
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
(~21 anos atrás)
desculpe a demora, estava off da comunidade
[ ]'sss