+2

Sessions criação e macetes

criado por Roberto Assis em 01/11/2003 11:47pm
Na página index.php
Seria a principal onde coloco o form para o usuário entrar com o login.

No topo da página, na primeira linha mesmo. Coloco o seguinte comando:

<?php
session_start();
session_destroy();
// isso é para destruir qualquer session que esteja criada. Ex: se o usuario logou entrou // no sistema e apertou o botao voltar do browser até chegar na index.php, o que vai 
// acontecer, a session vai está criada, e seus dados fixados, se outro logar vai 
// conseguir passar para dentro do sistema mas vai estar com os dados do outro, isso 
// acontece que para trocar valor de uma session você tem que desregistrar (comando 
// session_unregister()) e registrar novamente.
?>

Na página vai ter um formzinho básico escrito em html mesmo que vai mandar para a página redirect.php com duas variáveis... uma usuário e a outra a senha.

Chegando na redirect.php vou mostrar o codigo e comentá-lo

<?php
// Toda página q trabalhe com session é preciso do session_start no topo
session_start();

// Percebem que já uso as variáveis com as novas atribuições $_POST
$usuario = $_POST['usuario'];
$senha = $_POST['senha'];

// Conectando
$conn = mysql_connect("endereço", "usuario", "senha");
mysql_select_db("academico",$conn);

// Executando a query
$sql = "SELECT * FROM docentes WHERE CODI_PRO='$usuario' and SENHA_PRO='$senha'";
$valores = mysql_query("$sql");
$valor = mysql_fetch_row($valores);
$existe = mysql_num_rows($valores);
mysql_close();

// Testando a senha. Se estiver OK vai ser resultado 1...
if ($existe == '1') {
    //dando valor para as session. 
    $matricula = $valor[0];
    $nome = $valor[1];

    // registrando a session
    session_register("matricula");
    session_register("nome");
    
    // tenho que redirecioná-la para outra página para poder usar a session... 
    header("Location: princ.php");	
} else {
    //login ou senha errada? Retorna pra index
    header("Location: index.php?erro=1");
}
?>

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 (~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???
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 (~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.
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
23/01/2004 1:34pm (~21 anos atrás)

Novo Comentário:

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