Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Beto Lima

logar e voltar pra url anterior

Recommended Posts

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

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

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

Ò, 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

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

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

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

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

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.