Ir para conteúdo

POWERED BY:

Arquivado

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

Apenas Eu

Link entrar/sair como fazer?

Recommended Posts

Olá!

Alí no topo do meu site ( http://dcsdesenvolvimento.com.br/ ) no topo tem um link simbolico de logar / deslogar

 

Como faz para que, quando o usuario estiver logado, aparecer "sair" e quando deslogado "entrar" ?

 

Eu vi uns códigos na net, mas não entendi bem como implementar.....

 

Daí no caso eu teria que colocar o código dentro da página principal ou teria que criar alguma outra pagina?

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Denisson pela resposta rápida!!

 

Então, o site ainda não tem, eu to montando tudo no server local aqui.

 

Quer dizer, ele até que tem, mas este recurso não está online

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para compreender melhor, faça oque vou falar abaixo no localhost e depois que conseguir inclemente-o no site.

 

bom, crie um arquivo chamado index.php com o seguinte codigo:

<?php

session_start();
if ($_SESSION ['logado']){
echo "<a href='sair.php'>'Sair'</a>";
}
else{
echo "<a href='login.php'>'Entrar'</a>";
}
?> 

agora crie um arquivo chamado login.php com o seguinte codigo:

<form action="autenticacao.php" method ="post">
Usuario: <input name="usuario" type="text" />
Senha: <input name="senha" type="pass" />
<input value="Lougar" type="submit"></input>
</form> 

Agora crie uma pagina sair.php com o seguinte codigo:

<?php
Session_start();
$_SESSION['logado'] = False;
Echo"você deslougou com sucesso";
?>

AGORA A PARTE MAIS IMPORTANTE:

Crie uma pagina chamada autenticacao.php, e nela coloque o codigo

<?php
$conectar = mysql_connect('localhost', 'root', 'vertrigo',);
$usuario = $_POST['usuario'];
$senha = $_POST['senha'];

mysql_select_db("usuarios", $conectar) or print(mysql_error()); 
 
$verifica = mysql_query("SELECT * FROM usuarios WHERE user ='".$usuario."' AND pass = '".$senha."'") or die("erro ao selecionar");
 
 
if (mysql_num_rows($verifica)<=0)
 
{
Session_start();
  $erro = "<center> senha incorreta </center>";
  $_SESSION['codigo']= $erro;
                    echo"<script language='javascript' type='text/javascript'>alert('Login e/ou senha incorretos');window.location.href='/index.php?senha_invalida';</script>";
                  
 exit();
 
}
else {
$_SESSION['logado'] = TRUE;
header('location: index.php');
die;
}
?>

Agora dando uma leve explicada, quando você faz o login, na autenticacao ele cria um cache, e na index ele verifica se tem o cache ou nao, se tiver cache é por que esta lougado e aparece sair, se nao tiver o cache naoe sta lougado... e aparece sair...

 

Não entendeu? comente ou entao me adiciona no facebook: https://www.facebook.com/denissonlucas12

Se nao conseguir colocar no site ou qualquer coisa me adiciona no facebook que te ajudo.

 

Não tenho certeza se vai funcionar por que não testei ainda... mais vou publicar e vou testar, se eu achar algum erro eu edito aqui.

 

Desculpe as gambiarras, tenho apenas 13 anos e estou aprendendo.. vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Denilson!!!

 

Eu nem pude mexer porque eu viajei e só cheguei agora pouco...

 

Eu peço também desculpa por nao ter falado mas na verdade a parte de autenticação, login e tals eu ja tenho. Mas vc fala para fazer esse outro para depois tentar implementar no meu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, mais se você ja tem o sistema de autenticacao e login, pegue e faça assim:

 

La na parte da autenticacao:

peque e logo que iniciar o php colocoque o codigo

Session_start(); 

você tem que colocar esse codigo antes de exibir qualquer menssagem ( echo ), entao é bom colocar no inicio,

Bom, dai na parte da autenticacao aonde ele verifica que a senha esta correta, coloque o codigo:

$_SESSION['logado'] = TRUE;

Isso cria uma cache, entao lembrando que você deve colocar o codigo esse codigo na parte aonde ele fala que a senha esta correta, pq se estiver correta ele vai criar o cache.

 

Entendido?

 

Agora a parte em que ele exibe entrar/sair:

Na index sabe la aonde você colocou a palavra "entrar"? substitua essa palavra la por:

<?php
session_start();
if ($_SESSION ['logado']){
echo "<a href='sair.php'>Sair</a>";
}
else{
echo "<a href='login.php'>Entrar</a>";
}
?> 

Repare no session_start(); que esta bem no inicio como eu falei acima haha

agora explicando esse codigo acima, lembra que eu falei que la na autenticacao se a senha tivesse correta ele ia criar um cache? entao.. o codigo acima ele verifica se esse cache existo... ou seja, se você esta lougado.. dai se tiver lougado ele aparece sair, se nao tiver lougado ele aparece sair...

 

 

E na pagina Sair coloque o codigo

<?php
Session_start();
$_SESSION['logado'] = False;
Echo"você deslougou com sucesso";
?>
o codigo sair é a mesma coisa que citei, ele exclui o cache, ou seja, você esta deslougado.

 

Simples né? entendeu? :D qualquer coisa avisa, entendeu? :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá! Denilson!
Seu conhecimento sobre PHP é incrivel, se vc num falasse sua idade eu nunca ia imaginar, mas enfim...

 

Sobre seu cód. algo deu errado aqui. No cód da index está dando o segunte erro:

 

Undefined index: logado in C:\xampp\htdocs\dcs3\SAIR\index.php on line 3

 

Faltou algum detalhezinho :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Provavelmente você está tentando usar uma variavel sem iniciar ela, tente fazer o seguinte:

if ($_SESSION['logado'])

mude para

if (isset($_SESSION['logado']) &&  $_SESSION['logado'])

ou para

if (@$_SESSION['logado'])

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa!

Bem q eu imaginei q era algo assim para resolver, mas tambem pensei que nesse caso seria outro esquema.

 

Bom isso está resolvido, todavia, ao logar apareceu esta mensagem no botaozinho:

 

Notice: A session had already been started - ignoring

 

o Cod da validação ou autenticação:

<?php
@session_start();

// inclui o arquivo de configuração do sistema
include "Config/config_sistema.php";

// verifica se a variavel existir
if(isset($_SESSION['login_usuario']) and isset($_SESSION['senha_usuario'])) {
	// se existie as sessões coloca os valores em uma varivel
	$login_usuario = $_SESSION['login_usuario'];
	$senha_usuario = $_SESSION['senha_usuario'];
		
} else {
	$erro = urlencode("Você não esta logado!");
	header("Location: ../index.php");
	exit;
}

// verifica se as variaveis estão atribuidas
if(!(empty($login_usuario) or empty($senha_usuario))) {
	// se estiverem atribuidos vamos ver se exist o login
	$consulta = mysql_query("select * from dados_usuarios where Login = '$login_usuario'");
	if(mysql_num_rows($consulta) == 1) {
		// se o usuario exostir vamos verificar a senha
		if($senha_usuario != mysql_result($consulta,0,"Senha")) {
			// se a senha está correta vamos apagar a
			// sessão que existia mas erra a errada
			unset($_SESSION['login_usuario']);
			unset($_SESSION['senha_usuario']);
			
			$erro = urlencode("Você não esta logado!");
			header("Location: ../index.php");
			exit;
		}
	} else {
		unset($_SESSION['login_usuario']);
		unset($_SESSION['senha_usuario']);
		
		$erro = urlencode("Você não esta logado!");
		header("Location: ../index.php");
		exit;
	}
} else {
	// caso as sessões estarem vaizias
	$erro = urlencode("Você não esta logado!");
	header("Location: ../index.php");
	exit;
}
mysql_close($conn);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode ser o php.ini que está configurado para iniciar uma sessão automaticamente.

 

Faz o seguinte acessa na sua hospedagem o arquivo php.ini e procure pelo valor session.auto_start e verifique se ele está com 1 em sua frente. Se sim, mude para 0.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode ser o php.ini que está configurado para iniciar uma sessão automaticamente.

 

Faz o seguinte acessa na sua hospedagem o arquivo php.ini e procure pelo valor session.auto_start e verifique se ele está com 1 em sua frente. Se sim, mude para 0.

Se eu olhei no lugar certo, ela já está no 0 :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Procure pelo código a função session_start() e veja se ela está em mais de um lugar, se tiver deixe em um só lugar.

 

Eu normalmente coloco só no arquivo onde faço a conexão com o banco de dados

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente deixa essa função em um arquivo só (como o arquivo que se conecta ao banco de dados) e chame esse arquivo em cada arquivo. Ou habilite o inicio automático da sessão pelo php.ini

Compartilhar este post


Link para o post
Compartilhar em outros sites

A maioria dos session start está na pagina de login:

<?php
// inclui o arquiv o de configuração do sistema
include 'Config/config_sistema.php';
// revebe dados do formulario
$login = htmlspecialchars($_POST['login']);
$senha = $_POST['senha'];

// verifica se o usuario existe
$consulta = mysql_query("select * from dados_usuarios where Login='$login'");
$campos = mysql_num_rows($consulta);
if($campos != 0) {
// se o usuario existi verifica a senha dele
	if($senha != mysql_result($consulta,0,"Senha")) {
		echo "<font color=red><b>
			  Senha incorreta!
			  </font></b>";
		exit;
	} else {
		// estiver tudo certo vamos ver se ele é o administrador
		if($login == $login_admin) {
			// se for o login do administrador vamos verificar a senha dele
			// se é igual a do administrado
			if($senha == $senha_admin) {
				// se for o administrador vomos criar a sessão
				session_start();
				$_SESSION['login_usuario'] = $login;
				$_SESSION['senha_usuario'] = $senha;
			
				// redireciona o link para uma outra pagina
				header("Location: Admin/listar_usuarios.php");
				
			}
		} else {
			// se o login não for do administrado vamos criar a sessão dele
			session_start();
			$_SESSION['login_usuario'] = $login;
			$_SESSION['senha_usuario'] = $senha;
			
			// redireciona o link para uma outra pagina
			header("Location: minha-conta.php");
		}
	}
} else {
	echo "<font color=red><b>
		  O usuario não existe!
		  </font></b>";
	exit;
}
?>

Viu!

Eu estava falando com um colega e ele me sugeriu o seguinte, o que parece que deu certo.

 

Troquei:

<?php
*if (isset($_SESSION['logado']) &&  $_SESSION['logado']){
echo "<a href='logout.php'>SAIR</a>";
}
else{
echo "<a href='login.php'>ENTRAR</a>";

?>

por

<?php

if (isset($_SESSION['login_usuario'])  &&  $_SESSION['senha_usuario']){
echo "<a href='logout.php'>SAIR</a>";
}
else{
echo "<a href='login.php'>LOGIN</a>";
}
?> 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Danilo, eu não sei muito de php... é que a mais ou menos uma semana atras eu fiz um projeto parecido... entao eu ja tinha tudo no meu pc :D

 

e sobre os erros, as vezes no localhost da alguns erros, tente enviar para o seu site apenas para fazer um teste...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas blz Denisson vc ajudou um monte. Na sua idade eu nem sabia o que era html rsss

 

Meu colega só fez um pequeno ajuste. Muito obrigado

 

Muito Obrigado também ao Extreme e ao VitorRC pelo suporte

 

Vou indo que meu projeto continua e vou voltar para outro tópico que eu abri

 

:joia:

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.