+2

Sessions criação e macetes

criado por Roberto Assis em 01/11/2003 11:47pm
Agora a princ.php.... listaremos o código dela... mas colocarei só a parte programada.

<?php
// o session_start não pode ser esquecido
session_start();

//carregando a variável com o valor da minha session
$matricula = $_SESSION['matricula'];
?>

Isso deve ser feito em todas as páginas, colocar o session_start e carregar a variável que você quer usar.

Por exemplo:
Depois que estou na princ.php e a session criada, quando chamo um link para outra página e essa outra página vai usar as sessions também.
NUNCA USE O ENDEREÇO COMPLETO

Tipo... http://www.teste.com.br/eu.php
Se você colocar assim nas novas versões do php por medida de segurança ele perderá as sessions, e criará outra em branco.

Isso acontece porque as novas versões do php são mais seguras... o php interpreta que o usuário está saindo do domínio e indo para outro... e para que ele ia enviar as sessions para outro site?

Aí que está ele quebra por medida de segurança.
Então ao invés de usar o endereço completo você terá que trabalhar com níveis das pastas de sua árvore

Tipo: ../../eu.php

É isso aí espero que com essa dica ninguém mais fique 3 semanas quebrando a cabeça por uma boberinha

[ ]'sss
Roberto

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.)