Ir para conteúdo

POWERED BY:

Arquivado

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

Roberto_S_Luz

[Resolvido] Controle de Login

Recommended Posts

Olá galera, bom dia!!!

 

Bom...a minha dúvida é meio boba, porém não sei como resolver né...então...o jeito é apelar para o iMasters e ver se alguem sabe...bom...vamos lá.

 

Fiz um controle de login com sessão e dizendo eu que tá orientado a objetos http://forum.imasters.com.br/public/style_emoticons/default/clap.gif ...o que tá funcionando é o seguinte:

1º - Quando clico no botão sair...ele realmente sai. http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

2º - Após sair e ao tentar entrar novamente no sistema clicando no botão voltar do navegador ele não deixa entrar. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

3º - Após sair, ao tentar acessar diretamente as paginas pela url(com as paginas devidamente protegidas, eu acho...rss)ele tambem não deixa entrar. :D

 

Porém...tem uma última parada que não sei como fazer.

 

Por exemplo...após efetuar login e acessar o sistema, daí o usuario vai lá no botão "Voltar" do navegador, daí ele volta para a tela de login e em seguida o danado clica no botão "proxima pagina" do navegador e entra novamente no sistema como se ele não tivesse saído, pois é..quero bloquear essa parada.

http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Alguem sabe como fazer isso, pois andei verificando na maioria dos E-Mails só achei um que tem esse controle (O E-Mail fornecido pela UOLHOST para os dominios hospedados) e tambem não achei nenhuma explicação de como fazer isso(nem no Google.... http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif )

 

Bom galera...talves seja simples...ou dificil...enfim...eu não sei mas...

Obrigado aos que tentarem...

Abraços... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ao executar o Login e registrar uma SESSION você pode fazer um redirecionamento de preferência usando o javascript (window.location) pois o header location do PHP reenvia os valores e com o javascript não, assim quando o seu cliente tentar retorna a página o javascript vai cuidar do trabalho de jogar ele para frente, outra coisa após sair você tem que finalizar a sessão (session_destroy()).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Marcus Vinicus, grato pela atenção..

, outra coisa após sair você tem que finalizar a sessão (session_destroy()).

Bom...estou utilizando o session_destrory() e o session_unset() tambem.

Mas...o problema não é quando eu clico no botão sair e depois tento entrar novamente...isso aí tá de boa...

O problema é...após efetuar o login e o usuario ir no botão do proprio navegador e mandar voltar, daí ele irá retornar para a tela de login, e se ele clicar no botão "proxima pagina" do proprio navegador ele entrar normalmente, pois é...bem aí...já queria bloquear ele para que, tenha que fornecer login e senha novamente.

 

Ahh sim...e eu estou fazendo o redirecionamento é com o

echo"<meta HTTP-EQUIV='Refresh' CONTENT='0;URL=login.php'>";

Mas...obrigado pela dica...vou tentar fazer isso aqui..daí posto o resultado (seja ele positivo ou negativo http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif )

Obrigado desde já http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

um exemplo seria fazer uma verificacao sua pagina quando esta "logado", verificando a a sessao que esta ativa, caso nao ele redireciona a pagina... nao sei se deu pra entender, mas o vou postar o exemplo :

 


function session_checker()
{  

    if (!isset($_SESSION['id']))
 {  
        header ("Location:form_login.php");  
        exit();   

    }  

} 

 

 

@edit

 

isso e so um exemplo, caso nao entenda posta sua duvida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Tomb Raider, valeu pela atenção.

Bom...testei aki e não funcionou...funcionou apenas quando mando sair(daí no meu logof já estou mandando destruir a sessão, sendo assim ele já não iria entrar de qualquer forma mesmo, e após verificar se existe a sessão, como mando destruir atravez do logof, ele fica sempre redirecionando para a tela de login, ou seja, não é viavel verificar sessão eu acho, pois se não existe...irá ficar num enterno redirecionamento... http://forum.imasters.com.br/public/style_emoticons/default/joia.gif ).

Mas a ideia é essa mesmo que você pensou...ao voltar para a tela de login, verificar algo(pode ser a sessão tambem) daí não deixar entrar, mas...somente via botão "proxima pagina" do browse, pois o resto ta de boa..

 

Abraços... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom...vou postar a para completa dos testes que estou fazendo...

 

Login:

<html>
<title>Tela de login</title>
<head>
</head>
<body>
   <form action="logar.php" name="form_logar" method="post">
	  <table width="20%" height="20%" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
		<tr>
		     <td>
			<fieldset>
  			    <legend>Informe Login e Senha</legend>
				<table>
				   <tr>
					<td>
					    Login:
					</td>
					<td>
					   <input type="text" name="login" size="15" onKeyUp="this.value = this.value.toUpperCase();">
					</td>
				   </tr>
				   <tr>
				      <td>
					   Senha:
				       </td>
				       <td>
				            <input type="password" name="senha" size="15">
				       </td>
				   </tr>
				   <tr>
				       <td align="center" colspan="2" bgcolor="#CCCCCC">
				          <input type="submit" name="logar"  value="Logar">
					</td>
				   </tr>
				</table>
			</fieldset>
		    </td>
	         </tr>
              </table>
            </td>
        </tr>
     </table>
   </form>
</body>	
</html>

Logar (Verificação)

<?php 
	
	include "conexao.php";
	include "autenticar.php";
	
	class Logar{
		
		public function logando($checar_login,$checar_senha){
	
			if($checar_login == "" && $checar_senha == ""){
				
				$erro = 1;
			}
			else if($checar_login == ""){
				$erro = 2;
			}
			else if($checar_senha == ""){
				$erro = 3;
			}
			if(!isset($erro)){
				$login = htmlspecialchars(htmlentities($checar_login));
				$senha = htmlspecialchars(htmlentities($checar_senha));
				
				$db = new conexao();
				$db->abrir();
				$autentica = new autentica($login,$senha);
				$autentica->logar();
			}
			else{
			
				echo "<meta HTTP-EQUIV='Refresh' CONTENT='0;URL=login.php?erro=".$erro."'>";
			}
		}
	
		public function anti_injection($sql){
			 // remove palavras que contenham sintaxe sql
			 $sql = preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"),"",$sql);
			 $sql = trim($sql);//limpa espaços vazio
			 $sql = strip_tags($sql);//tira tags html e php
			 $sql = addslashes($sql);//Adiciona barras invertidas a uma string
			 return $sql;
	   }

 	}
	
	$checar_dados = new Logar();
	
	$checar_login = $checar_dados->anti_injection($_POST["login"]);
	$checar_senha = $checar_dados->anti_injection($_POST["senha"]);
	
	$logar = $checar_dados->logando($checar_login,$checar_senha);
?>

Autenticar

<?php
		session_start();
		
		class autentica{
			
			public $login;
			public $senha;
			
			
			public function autentica($login = "", $senha = ""){
				$this->login       = $login;
				$this->senha       = $senha;
				
			}
			public function logar(){
			
				/*$numero_tentativas = 3;
			
				if($_SESSION["tentativas_login"] == $numero_tentativas){
					echo "Já tentou demais..cai fora daki";
					die();
				}*/
				$db = new conexao();
				$db->abrir();
				
				$sql_login = "SELECT `usuario`.`usu_login` FROM `usuario`
        				      WHERE `usuario`.`usu_login` = '".$this->login."'";
							  
				$sql_senha = "SELECT `usuario`.`usu_senha` FROM `usuario`
        				      WHERE `usuario`.`usu_senha` = '".$this->senha."'";
				
				$enviar_login  = $db->consulta($sql_login);
				$retorno_login = mysql_fetch_assoc($enviar_login);
				
				$enviar_senha  = $db->consulta($sql_senha);
				$retorno_senha = mysql_fetch_assoc($enviar_senha);
					
					if(mysql_num_rows($enviar_login) == 1 && mysql_num_rows($enviar_senha) == 1){
						
					$_SESSION["login"] = $retorno_login["usu_login"];
					$_SESSION["senha"] = $retorno_senha["usu_senha"];
						
						echo "<meta HTTP-EQUIV='Refresh' CONTENT='0;URL=pagina_inicial.php'>";
					}
					else{
						 
						echo "<meta HTTP-EQUIV='Refresh' CONTENT='0;URL=login.php?valor=1'>";
					}
				}
			}
?>

Protegido

 

<?php
	session_start();
	
	
	class Protegido{
		
		public function proteger(){
			
			$logof = $_GET["logof"];
			if($logof){
				echo"<meta HTTP-EQUIV='Refresh' CONTENT='0;URL=logof.php'>";
			}
			else{
				if(!isset($_SESSION['login']) || !isset($_SESSION['senha'])){
					echo"<meta HTTP-EQUIV='Refresh' CONTENT='0;URL=login.php?erro=4'>";
					exit;
				}
	 		 }
		}
  	}
	$proteger = new Protegido();
	$proteger->proteger();
?>

Pagina Inicial

<?php
	include "protegido.php";
	
	
	session_start();
	
	
?>
<html>
<head>
<title>::..Pagina Inicial..::</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<h1 align="center"><br>Olá...seja bem vindo...à <br>PAGINA INICIAL DO SISTEMA</h1>
<h1 align="center"><a href="pagina2.php"><font color="#000099"><b>Ir para a Pagina 2</b></font></a></h1>
<h1 align="center"><a href="protegido.php?logof=1"><font color="#000099"><b>Sair</b></font></a></h1>

</body>
</html>

Logof

<?php
	
	session_start();
	class Logof{

		public function sair(){
			if(isset($_SESSION['login']) || isset($_SESSION['senha'])){
				session_unset();
				session_destroy();
	
				echo"<meta HTTP-EQUIV='Refresh' CONTENT='0;URL=login.php'>";
			}
		}
	}
	$logof = new Logof();
	$logof->sair();
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom galera...essa parada toda aí em eu pedi ajuda, era um pedido do cliente, ele queria por que queria isso no sistema dele...

Daí...ele viu que iria ser muito chato toda vez que voltar(à tela de login pelo botão voltar do navegador) ter que digirar login e senha novamente...então...ele mudou de ideia.

Além do mais...essa tarefa não é algo tão simples de se implementar...rsss http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

Mas...ainda assim terei fazer um controle de login com mais segurança...acho que vou ver sobre a criação de chaves criptografadas, enfim...isso será em um novo tópico futuro.

 

 

Galera...desde já....um grande abraço, obrigado aos que postaram dicas e aos que pelo menos visitaram o topico...

Sucesso para todos... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom galera...essa parada toda aí em eu pedi ajuda, era um pedido do cliente, ele queria por que queria isso no sistema dele...

Daí...ele viu que iria ser muito chato toda vez que voltar(à tela de login pelo botão voltar do navegador) ter que digirar login e senha novamente...então...ele mudou de ideia.

Além do mais...essa tarefa não é algo tão simples de se implementar...rsss :clap:

Mas...ainda assim terei fazer um controle de login com mais segurança...acho que vou ver sobre a criação de chaves criptografadas, enfim...isso será em um novo tópico futuro.

 

 

Galera...desde já....um grande abraço, obrigado aos que postaram dicas e aos que pelo menos visitaram o topico...

Sucesso para todos... :thumbsup:

 

Achei uma solução para o caso do usuário após fazer o login clicar em voltar para pagina de login e depois avançar pra voltar para tela inicial.

 

O problema é que o navegador salva as informações em cash.

 

Para resolver isso basta incluir no codigo da pagina do login o código:

 

<?

session_start();

session_destroy();

?>

 

<?

header("Expires: 0");

header("Last-Modified: 0");

header("Cache-Control: no-cache, must-revalidate");

header("Pragma: no-cache");

?>

 

Assim a destruida a sessão de login

e apagado o cash do navegador.

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.