Jump to content
AngeloLopes

[Resolvido] Logout de uma sessao

Recommended Posts

AngeloLopes

Bem o meu problema é este.

Eu tenho um sistema de login que ja faz login, e no login ja sabe se aquele utilizador e so um utilizador ou se é um admin..

Ja consigo ter duas sessoes em simultaneo, o problema e que quando fazo logout do admin, o utilizador tambem sai, tudo isto porque no meu logout.php diz session_destroy();

Isto faz com que ele saia de todas as sessoes sempre que alguem faza logout, e isto assim nao da xD

O meu codigo é este alguem me pode ajudar?

<?php 
include 'init.php'; 
    //Fecha a sessao
session_destroy();
    //Reendirecciona para a pagina index
header("location: index.php");
?>

Share this post


Link to post
Share on other sites
pikax

o que estas a guardar na sessao? se fizeres "reset" aos dados deve de funcionar


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
AngeloLopes

na sessao estou a guardar, o login ou de um utilizador ou de um administrador

O problema e que se eu fecho a sessao do admin, a do utilizador tambem fecha

Porque ele esta a guardar as duas sessoes naquela variavel

Share this post


Link to post
Share on other sites
pikax

mostra o teu codigo das sessoes


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
AngeloLopes

aqui ve qual é a sessao que inicia

<?php 
include 'init.php';   
//CONSULTA DO UTILIZADOR

       $query = "Select * from login where utilizador='" . $_POST['utilizador'] . "' and pass='" . $_POST['password'] . "'";
       $resultado=mysql_query($query);
           if(mysql_num_rows($resultado)>0){ // login com sucesso..

               //COLOCA NA VARIAVEL LINHA OS DADOS DA CONSULTA  
 $linha=mysql_fetch_array($resultado);
            if($linha['tipo']== 0){
       // Utilizador faz algo...
                header("location: user.php");
                //COLOCA O UTILIZADOR EM SESSAO
 $_SESSION['utilizador']=$linha['utilizador'];
           }else{
       // Administrador faz algo...
               header("location: admin.php");
               //COLOCA O UTILIZADOR EM SESSAO
 $_SESSION['administrador']=$linha['utilizador'];
           }
       } // erro ao efectuar login..
           else //CASO NAO COINCIDAM 
           {
 //REDIRECCIONA PARA A PAGINA INICIAL REPORTANDO O ERRO
 header("location: index.php?erro=1"); 
           }
?>

e aqui é aplicada no codigo

<div id="log">
               <form name="logout" action='logout.php' method='post' accept-charset='UTF-8'>
               <fieldset >
                   <legend>Administrador</legend>
                   <?php
                   if (isset($_SESSION['administrador'])) { //SE EXISTIR AUTENTICAÇÃO           
                       echo ' Bem Vindo ' . $_SESSION['administrador'] . '.<br/>';
                   } else { //CASO NÃO ESTEJA AUTENTICADO            
                       echo 'Esta é uma àrea reservada, só os administradores podem ter acesso.';
                   }
                   ?>
                   <input type='submit' name='Submit' value='Pagina Principal' />
                   </fieldset>
               </form>
           </div>

Edited by brunoais
geshi

Share this post


Link to post
Share on other sites
pikax

So' tens uma sessao iniciada.

Porque que queres saber que o utilizador e' admin apos ele fazer logout?


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
AngeloLopes

mas imagina que eu inicio esta tambem

<div id="log">
               <form name="logout" action='logout.php' method='post' accept-charset='UTF-8'>
               <fieldset>
                   <legend>Utilizador</legend>
                   <?php
                   if (isset($_SESSION['utilizador'])) { //SE EXISTIR AUTENTICAÇÃO           
                       echo ' Bem Vindo ' . $_SESSION['utilizador'] . '.<br/>';
                   } else { //CASO NÃO ESTEJA AUTENTICADO            
                       echo 'Esta é uma àrea reservada, só os utilizadores podem ter acesso.';
                   }
                   ?>
                   <input type='submit' name='Submit' value='Pagina Principal' />
                   </fieldset>
               </form>
           </div>

esta ja e de utilizador o problema e que eu acho que as duas sessoes que sao distintas estao a ser guardadas na mesma variavel e ao fazer log out de um utilizador por exemplo ele faz isto:

<?php 
include 'init.php'; 
       //Fecha a sessao
session_destroy();
       //Reendirecciona para a pagina index
header("location: index.php");
?>

ou seja eu acho que ele fecha todas as conexoes que estao aqui, por isso a do admin tambem fecha e isso gerame um problema que é se tiverem muitos utilizadores, e alguns admins sempre que alguem fizer logout, vao todos a baixo e tem de reinicializar outra vez

:/

entendeu? pikax

Edited by brunoais
geshi

Share this post


Link to post
Share on other sites
pikax
Citação
ou seja eu acho que ele fecha todas as conexoes que estao aqui, por isso a do admin tambem fecha e isso gerame um problema que é se tiverem muitos utilizadores, e alguns admins sempre que alguem fizer logout, vao todos a baixo e tem de reinicializar outra vez

as sessoes sao por browser de cada computador, por isso esse problema nao acontece...


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
AngeloLopes

acontece sim :/

tipo eu no google chrome inicio a sessao do admin, e depois a do utilizador

no mesmo browser e se fizer logout com o o utilizador por exemplo o do admin tambem fecha entende?

Share this post


Link to post
Share on other sites
pikax

nao podes ter 2 sessoes no mesmo browser no mesmo computador.....


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
AngeloLopes

neste site nao posso xD

mas no facebook por exemplo posso, gostava de saber como e que eles fazem xD para eu fazer

Share this post


Link to post
Share on other sites
pikax

no facebook so' podes ter 1 conta logada por browser!!!


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
AngeloLopes

verdade xD

tens razao entao a minha pergunta nao tem logica kkk

entao refurmolo a minha pergunta, como e que eu fazo para quando entrar no utilizador ele fechar a sessao anterior ?

Share this post


Link to post
Share on other sites
pikax

tens que fazer logout, normalmente usa-se o session_destroy()

Edited by pikax

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
pikax

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
AngeloLopes

sim eu tentei assim :

<div id="log">
		    <form name="logout" action='logout.php' method='post' accept-charset='UTF-8'>
		    <fieldset >
			    <legend>Administrador</legend>
			    <?php
			    //Fecha alguma sessao que esteja aberta
			    session_destroy();
			    if (isset($_SESSION['administrador'])) { //SE EXISTIR AUTENTICAÇÃO		   
				    echo ' Bem Vindo ' . $_SESSION['administrador'] . '.<br/>';
			    } else { //CASO NÃO ESTEJA AUTENTICADO			
				    echo 'Esta é uma àrea reservada, só os administradores podem ter acesso.';
			    }
			    ?>
			    <input type='submit' name='Submit' value='Pagina Principal' />
			    </fieldset>
		    </form>
	    </div>

no entanto quando eu entro se fizer refresh ou abrir um separar neste browser da conta admin ele fecha porque le o session destroy, portanto estou a pensar fazer o seguinte:

um if que verifica se ja existe uma sessao iniciada, se sim faz o session destroy senao nao faz nada ne?

mas mesmo assim eu acho que se fizer assim vou ter o mesmo problema que se eu fizer refresh ou abrir uma aba com o mesmo url, ele vai verificar se tem uma sessao iniciada e vai encontrar e vai fechala, e sempre assim ou seja sempre que se fizer um refresh tenho de iniciar sessao entendeste??

existe alguma forma que me ajude?

vi o site mas nao entendi muito bem

Share this post


Link to post
Share on other sites
pikax

<div id="log">
					    <form name="logout" action='logout.php' method='post' accept-charset='UTF-8'>
					    <fieldset >
							    <legend>Administrador</legend>
							    <?php
							    //Fecha alguma sessao que esteja aberta
							   // session_destroy(); //Estas a destruir a sessao e depois vais utilizar logo a seguir????????
							    if (isset($_SESSION['administrador'])) { //SE EXISTIR AUTENTICAÇÃO				   
									    echo ' Bem Vindo ' . $_SESSION['administrador'] . '.<br/>';
							    } else { //CASO NÃO ESTEJA AUTENTICADO				    
									    echo 'Esta é uma àrea reservada, só os administradores podem ter acesso.';
							    }
							    ?>
							    <input type='submit' name='Submit' value='Pagina Principal' />
							    </fieldset>
					    </form>
			    </div>

logout.php

<?php
session_start();

session_destroy(); //logout do user ou admin

//redirect....

Edited by pikax

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
HappyHippyHippo

user_logout.php

<?php 
include 'init.php'; 

//Fecha a sessao
unset($_SESSION['utilizador']);

//Reendirecciona para a pagina index
header("location: index.php");
?>

admin_logout.php

<?php 
include 'init.php'; 

//Fecha a sessao
unset($_SESSION['adminitrador']);

//Reendirecciona para a pagina index
header("location: index.php");
?>


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
AngeloLopes

pois pikax era ai que estava a dizer que ha erro mas por mais que penso nao arranjo outra forma. se meter isso no logout, resolve o problema?

user_logout.php

<?php
include 'init.php';

//Fecha a sessao
unset($_SESSION['utilizador']);

//Reendirecciona para a pagina index
header("location: index.php");
?>

admin_logout.php

<?php
include 'init.php';

//Fecha a sessao
unset($_SESSION['adminitrador']);

//Reendirecciona para a pagina index
header("location: index.php");
?>

Acho que isso resolve, mas sera uma forma eficiente??

nao ha uma forma que no mesmo logout.php deia para dividir??

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.