AngeloLopes Posted July 9, 2013 at 11:27 AM Report #517790 Posted July 9, 2013 at 11:27 AM 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"); ?>
pikax Posted July 9, 2013 at 11:33 AM Report #517791 Posted July 9, 2013 at 11:33 AM 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."
AngeloLopes Posted July 9, 2013 at 01:13 PM Author Report #517828 Posted July 9, 2013 at 01:13 PM 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
pikax Posted July 9, 2013 at 02:21 PM Report #517847 Posted July 9, 2013 at 02:21 PM 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."
AngeloLopes Posted July 9, 2013 at 02:28 PM Author Report #517851 Posted July 9, 2013 at 02:28 PM (edited) 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 July 9, 2013 at 03:27 PM by brunoais geshi
pikax Posted July 9, 2013 at 02:31 PM Report #517853 Posted July 9, 2013 at 02:31 PM 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."
AngeloLopes Posted July 9, 2013 at 02:35 PM Author Report #517855 Posted July 9, 2013 at 02:35 PM (edited) 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 July 9, 2013 at 03:28 PM by brunoais geshi
pikax Posted July 9, 2013 at 02:37 PM Report #517858 Posted July 9, 2013 at 02:37 PM 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."
AngeloLopes Posted July 9, 2013 at 02:47 PM Author Report #517864 Posted July 9, 2013 at 02:47 PM 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?
Solution pikax Posted July 9, 2013 at 02:54 PM Solution Report #517866 Posted July 9, 2013 at 02:54 PM 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."
AngeloLopes Posted July 9, 2013 at 03:04 PM Author Report #517870 Posted July 9, 2013 at 03:04 PM neste site nao posso xD mas no facebook por exemplo posso, gostava de saber como e que eles fazem xD para eu fazer
pikax Posted July 9, 2013 at 03:05 PM Report #517871 Posted July 9, 2013 at 03:05 PM 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."
AngeloLopes Posted July 9, 2013 at 03:09 PM Author Report #517872 Posted July 9, 2013 at 03:09 PM 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 ?
pikax Posted July 9, 2013 at 03:11 PM Report #517873 Posted July 9, 2013 at 03:11 PM (edited) tens que fazer logout, normalmente usa-se o session_destroy() Edited July 9, 2013 at 03:11 PM 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."
AngeloLopes Posted July 9, 2013 at 03:12 PM Author Report #517874 Posted July 9, 2013 at 03:12 PM ou seja como e que eu vejo se ja tenho uma sessao iniciada?
pikax Posted July 9, 2013 at 03:14 PM Report #517876 Posted July 9, 2013 at 03:14 PM ve isto: http://w3schools.com/php/php_sessions.asp 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."
AngeloLopes Posted July 9, 2013 at 03:21 PM Author Report #517877 Posted July 9, 2013 at 03:21 PM 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? ve isto: http://w3schools.com/php/php_sessions.asp vi o site mas nao entendi muito bem
pikax Posted July 9, 2013 at 03:21 PM Report #517880 Posted July 9, 2013 at 03:21 PM (edited) <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 July 9, 2013 at 03:21 PM 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."
HappyHippyHippo Posted July 9, 2013 at 03:24 PM Report #517883 Posted July 9, 2013 at 03:24 PM 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 Portugol Plus
AngeloLopes Posted July 9, 2013 at 03:28 PM Author Report #517884 Posted July 9, 2013 at 03:28 PM 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??
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now