Beto Lima 0 Denunciar post Postado Dezembro 15, 2009 Pessoal, alguém poderia dar uma idéia? no meu site tenho o seguinte: quando o cara se loga, sempre vai pra index. O que eu preciso é o seguinte: aonde quer que o usuário esteja, em qual url que for, se ele se logar ir para a url que ele estava anteriormente. Aqui no forum funciona da mesma forma, quando a gente quer responder algum post e nao esta logado. depois do login volta pra url onde estávamos. Valeu. Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Dezembro 15, 2009 você tem que pegar a URL atual $_SERVER["REQUEST_URL"] Colocar numa variável, guardar em sessão. E pega na outra. Compartilhar este post Link para o post Compartilhar em outros sites
Beto Lima 0 Denunciar post Postado Dezembro 15, 2009 você tem que pegar a URL atual $_SERVER["REQUEST_URL"] Colocar numa variável, guardar em sessão. E pega na outra. não entendi muito bem, bom tipo o login: ?acao=login (chama a pagina e imprime o form pra fazer o login). Então se eu guardar em sessão essa url, após fazer o login ele não vai me trazer de volta para a url que eu estava antes? no caso a própria url de login? Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Dezembro 15, 2009 Ò, eh que eu nao falei tudo. Imaginei que você ia encaixar as coisas. Vamos supor que eu estou nessa página, mas nao logado. http://www.site.com.br?pagina=1 Daí eu quero responder uma pergunta que tem nessa página mas precisa estar logado. Entao, nessa página eu coloco esse comando e guardo em sessão: session_start(); // Nunca esqueça disso!! $url = $_SERVER["REQUEST_URI"]; $_SESSION['url'] = $url; Quando eu clicar pra responder a pergunta, eu sou redirecionado para a página de login. Dae eu faço o Login e faço: if(isset($_SESSION['url']) && $_SESSION['url'] != "") { header("Location: ".$_SESSION['url']); } Ele vai redirecionar para onde eu estava no começo. Basicamente eh isso. Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Dezembro 15, 2009 OBS: Esqueci de comentar, esse comando nao pega a URL inteira. ele só pega depois da barra, exemplo: http://www.google.com.br/index.php?numero=23 Ele só pega, /index.php?numero=23 Compartilhar este post Link para o post Compartilhar em outros sites
Beto Lima 0 Denunciar post Postado Dezembro 15, 2009 bom entendi o que você quis dizer agora. Só que no meu caso eu uso o seguinte: Tenho uma index que recebe todas as paginas. Tudo é enviado pra index passando parametros, depois analiso o parametro e chamo o include de tal pagina.php pra mostrar o que o cara quer. Fiz assim pra nao precisar ter que replicar topos, menus etc... eu colocando esses cods que você passou contando que minha pagina de login é um include dentro da index, não teria problemas? Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Dezembro 15, 2009 É só colocar esses comandos na página certa. Nao importa se eh include. Compartilhar este post Link para o post Compartilhar em outros sites
Beto Lima 0 Denunciar post Postado Dezembro 15, 2009 Valeu vou tentar Compartilhar este post Link para o post Compartilhar em outros sites
Beto Lima 0 Denunciar post Postado Dezembro 15, 2009 Aconteceu o que eu tinha previsto, após o login feito ele volta pra pagina de login porque a página de login foi a última pagina em sessão. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Dezembro 15, 2009 Você deve fazer isso aqui: session_start(); // Nunca esqueça disso!! $url = $_SERVER['HTTP_REFERER']; //http://www.php.net/manual/en/reserved.variables.server.php $_SESSION['url'] = $url; apenas na página de login, para capturar a anterior. Na página que loga, você apenas direciona para a session, sem sobrescrever ela.. mostre como você fez. Compartilhar este post Link para o post Compartilhar em outros sites
Beto Lima 0 Denunciar post Postado Dezembro 15, 2009 Você deve fazer isso aqui: session_start(); // Nunca esqueça disso!! $url = $_SERVER['HTTP_REFERER']; //http://www.php.net/manual/en/reserved.variables.server.php $_SESSION['url'] = $url; apenas na página de login, para capturar a anterior. Na página que loga, você apenas direciona para a session, sem sobrescrever ela.. mostre como você fez. minha index: <?php if(!isset($_SESSION)){session_start();} require_once("conexao.php"); $display = $_REQUEST["display"]; $acao = $_REQUEST["acao"]; $url = $_SERVER["HTTP_REFERER"]; $_SESSION['url'] = $url; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-br" lang="pt-br"> <head> <title>titulo</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <body id="duascolunas"> <div id="tudo"> <div id="menuh"> <?php require("menuh.php");?> </div> <div id="principal"> <?php if((isset($acao)) && (!is_numeric($acao)) && ($acao == "logar")){ require("fazer_login.php"); } else if((isset($display)) && (!is_numeric($display)) && ($display== "login")){ require("login.php"); } else { require("inicial.php"); } ?> </div> <div id="menuv"> <?php require("menuv.php");?> </div> </div> </body> </html> a pagina login é um form comum com action: index.php?acao=logar a index recebe este "logar" e chama fazer_login.php, segue o cód dele abaixo. <?php // RECEBE OS VALORES $usuario = strtolower($_POST['usuario']); $senha = md5($_POST['senha']); //VERIFICA $sql_login=sprintf("SELECT id,usuario,senha FROM tabela_user WHERE usuario='%s' AND senha='%s' AND ativado=2",get_magic_quotes_gpc() ? $usuario : addslashes($usuario), get_magic_quotes_gpc() ? $senha : addslashes($senha)); $qry_login = mysql_query($sql_login, $conn) or die($erro_personalizado); $linha_login = mysql_num_rows($qry_login); $lista_login = mysql_fetch_array($qry_login); if($linha_login == 0) { $erro = "Erro <br /> <a href='index.php?display=login'><< voltar e corrigir</a>"; echo utf8_decode("<h3>$erro</h3>"); exit; } if($linha_login == 1) { // COMPARA CAMPOS if ($usuario != $lista_login["usuario"]){ $erro = "usuario invalido! <br /> <a href='index.php?display=login'><< voltar e corrigir</a>"; echo utf8_decode("<h3>$erro</h3>"); exit; } else if($senha != $lista_login["senha"]) { $erro = "senha invalida! <br /> <a href='index.php?display=login'><< voltar e corrigir</a>"; echo utf8_decode("<h3>$erro</h3>"); exit; } else { $_SESSION['user'] = $usuario; echo utf8_decode("<div> <h2><span>Login efetuado com sucesso!</span></h2></div>"); if(isset($_SESSION['url']) && $_SESSION['url'] != "") { header("Location: ".$_SESSION['url']); } } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Dezembro 15, 2009 Faltou um: session_start(); na página: fazer_login.php para ter certeza que vai dar certo.. faça o seguinte: <?php session_start();//adicione // RECEBE OS VALORES $usuario = strtolower($_POST['usuario']); $senha = md5($_POST['senha']); e: //echo utf8_decode("<div><h2><span>Login efetuado com sucesso!</span></h2></div>"); //esse echo não faz sentido se você for redirecionar.. nem pode ter ele ai... var_dump( $_SESSION );//apenas para ter certeza de como está esse array if( isset($_SESSION['url']) && !empty($_SESSION['url']) ) header("Location: ".$_SESSION['url']); else echo 'Algo estranho.. a SESSION falhou!'; poste o resultado Compartilhar este post Link para o post Compartilhar em outros sites
Beto Lima 0 Denunciar post Postado Dezembro 15, 2009 resultado: array(4) { ["url"]=> &string(64) "http://www.dominio.com.br/index.php?display=login" ["sessao_captcha_capa_inicial"]=> &string(4) "QPN7" ["sessao_captcha_login"]=> &string(4) "IHHW" ["user"]=> string(6) "teste1" } Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Dezembro 15, 2009 Tá.. segue os passos... -> limpa o teu temporário, fecha o navegador e abre de novo. -> navega no teu sistema sem logar, e então tenta acessar uma página restrita.. nessa hora você será mandado para o login, certo ? -> loga, e verifica como vai ficar a session de novo, aqui provavelmente, você terá o valor que precisa em: $_SESSION['url'] Se tiver certo, você pode remover a linha do var_dump() Compartilhar este post Link para o post Compartilhar em outros sites
Beto Lima 0 Denunciar post Postado Dezembro 15, 2009 William. Assim: no meu site tem a parte de produtos, eu fiz o seguinte: Se não existe sessão de login é porque o cara não está logado correto? Então o botão de adicionar o produto fica sem link nenhum. Caso contrario, se estiver logado o botão de add pega o link do produto. Clicando em add irá adicionar ao carrinho, mas aí ja seria outra questão que não envolve esse redirect que preciso. O que eu fiz: se não logado exibe um alerta na descrição do produto, tipo: "para adicionar este produto, você deve fazer login" Aí o cara indo pro login, faz certinho e manda pra index (agora com as modificações manda pro login de novo). E é esse o ponto, deveria mandar para o produto em que ele estava antes acessando. Não sei se me entendeste... Compartilhar este post Link para o post Compartilhar em outros sites
Beto Lima 0 Denunciar post Postado Dezembro 15, 2009 pensando aqui com meus botôes seria mais ou menos assim. Não sei se ha como mas a grosso modo: acessou tal url, grava a mesma na sessão url... Acessando outra url, atualiza a sessão com a nova url. Mas se acessar o login, não alimenta a sessão url deixando-a com o valor da url anterior. após o login feito manda pra url que no caso ja seria a anterior do login. Compartilhar este post Link para o post Compartilhar em outros sites
Beto Lima 0 Denunciar post Postado Dezembro 17, 2009 Testei localmente no wamp e funcionou da seguinte maneira: na index //PEGA A URL ATUAL session_start(); $url = $_SERVER['REQUEST_URI']; if( ($url == "/index.php?mostra=login")) { $url = ""; } else { $_SESSION['url'] = $url; } e após o login feito, pagina que submete o login session_start(); if( isset($_SESSION['url']) && !empty($_SESSION['url']) ) { header("Location: ".$_SESSION['url']); } else { echo 'Algo estranho.. a SESSION falhou!'; } Mas remotamente não funciona, não sei o que pode ser mas ele desconsidera o link "/index.php?mostra=login" e coloca esse link na sessão também. Uso a kinghost como hospedagem Há algo que falta a fazer? Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Dezembro 17, 2009 session_start(); $url = $_SERVER['REQUEST_URI']; if($url == "/index.php?mostra=login") { $url = false; }else{ $_SESSION['url'] = $url; } Compartilhar este post Link para o post Compartilhar em outros sites
Beto Lima 0 Denunciar post Postado Dezembro 17, 2009 session_start(); $url = $_SERVER['REQUEST_URI']; if($url == "/index.php?mostra=login") { $url = false; }else{ $_SESSION['url'] = $url; } $url = false; não deu, continua na mesma. Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Dezembro 17, 2009 Então, vamos debugar ? session_start(); $url = $_SERVER['REQUEST_URI']; echo '<b>'.$url.'</b>'; if($url == "/index.php?mostra=login") { $url = false; echo $url; }else{ $_SESSION['url'] = $url; echo $_SESSION['url']; } execute e poste o que aparece. Compartilhar este post Link para o post Compartilhar em outros sites