iMasters Fóruns: Sistema de login com erro. - iMasters Fóruns

Ir para

Página 1 de 1
  • Novo tópico
  • Responder

Sistema de login com erro.

#1 Membro offline   lukoBR Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 33
  • Cadastrado: 13-setembro 09

Postou 05 novembro 2009 - 02:29

Olá, me ajudem neste sisteminha de login... não consigo corrigir.

Tenho as funções no controller.php:
class controller{
function checksession() {
		if(isset($_SESSION['usession'])) {
			$usc = unserialize($_SESSION['usession']);
			$user = $usc['user'];
			$pass = $usc['pass'];
			$email = $usc['email'];

			$this->usercheck($user,$pass,$email);
			if($ucheck != '1') {
				header("Location: login.php");
			} else {
				$usc['user'] = $user;
				$usc['pass'] = $pass;
				$usc['email'] = $email;
				$_SESSION['usession'] = serialize($usc);
			}
		} else  {
			if($_POST) {
			$usc['user'] = $user;
			$usc['pass'] = $pass;
			$usc['email'] = $email;
			$_SESSION['usession'] = serialize($usc);
			}
		}
	}
	
	function usercheck($user,$pass,$email){
		
		$check = "MINHA QUERY que PEGA USER/PASS e EMAIL";
		$check = mysql_query($check) or die(mysql_error());
		$ucheck = mysql_num_rows($check);
		
		if($ucheck != '1') {
			header("Location: login.php");
		} else {
			$usc['user'] = $user;
			$usc['pass'] = $pass;
			$usc['email'] = $email;
			$_SESSION['usession'] = serialize($usc);
		}
	}
}


LOGIN.PHP
<?php
	ob_start();
	session_start();
// INCLUO MINHAS CLASSES E ARQUIVOS

if($_POST) {
	$user = trim($c->post('user'));
	$pass = trim($c->post('pass'));
	$email = trim($c->post('email'));
	$c->checksession();
}
	$c->nowdo('login');
		if($do == $c->encrypt('login')) {
			$v->template('login');
		} elseif($do == $c->encrypt('logout')) {
			$v->template('logout');
		}

?>




USER.PHP - Deveria ser protegido
<?php
	ob_start();
	session_start();

// INCLUO MINHAS CLASSES E ARQUIVOS

	if(!isset($_SESSION['usession'])) {
		header("Location: login.php");
	} else {
		$c->checksession();
	}
			
	$c->nowdo('user');

		if($do == $c->encrypt('user')) {
			$v->template('user');
	}
?>


Mas quando eu induso criando a sessão (para testar) ele mesmo assim vai pro logim.php, e se eu testo com o form do login.php, não acessa de modo algum e user.php fica desprotegido...

Aguardo respostas.. Valeus ;)

#2 Membro offline   Daniel Filho Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 114
  • Cadastrado: 24-agosto 09
  • Sexo:Masculino

Postou 05 novembro 2009 - 02:44

Cara, vou postar o meu aqui, bem mais simples, porém com a mesma funcionalidade.

Cria, passa valores e destroi a sessão, mas nem precisei criar uma função para isso.

login.php
<form method="post" action="operacao.php">
    <fieldset>
    <legend>Login</legend> <br />
    <input type="hidden" name="operacao" value="login" />
    <label><span>Login: </span><input type="text" name="login_usuario" size="20" /></label> <br /> <br />
    <label><span>Senha: </span><input type="password" name="senha_usuario" size="20" /></label> <br /> <br />
    <div align="right"><input type="submit" name="cadastrar" value="OK" /></div>
    </fieldset>
</form>


operacao.php
          <?php
                $operacao = $_POST["operacao"]{;
                if ($operacao=="login") {
		$login_usuario = $_POST["login_usuario"];
		$senha_usuario = $_POST["senha_usuario"];
		if (empty($login_usuario) && empty($senha_usuario)) {
			echo "<script>alert('Por favor, insira seu login e sua senha!')</script>";
			echo "<meta http-equiv=\"refresh\" content=\"0;url=login.php\">";
		} elseif (empty($login_usuario)) {
			echo "<script>alert('Por favor, insira seu login!')</script>";
			echo "<meta http-equiv=\"refresh\" content=\"0;url=login.php\">";
		} elseif (empty($senha_usuario)) {
			echo "<script>alert('Por favor, insira sua senha!')</script>";
			echo "<meta http-equiv=\"refresh\" content=\"0;url=login.php\">";
		} else {
			$senha_usuario = md5($senha_usuario);
			$consulta_usuario = "SELECT * FROM usuario WHERE login_usuario='$login_usuario' AND senha_usuario='$senha_usuario'";
			$query = mysql_query($consulta_usuario) or die(mysql_error());
			if (mysql_num_rows($query)=="0") {
				echo "<script>alert('Por favor, insira seus dados corretamente!')</script>";
				echo "<meta http-equiv=\"refresh\" content=\"0;url=login.php\">";
			} else {
				session_start();
				$_SESSION["login_usuario"] = $login_usuario;
				$_SESSION["senha_usuario"] = $senha_usuario;
				header('location: painel_de_controle.php');
			}
		}
          ?>


validacao.php
<?php
	session_start();
	if (isset($_GET["sair"])) {
		unset($_SESSION["login_usuario"]);
		unset($_SESSION["senha_usuario"]);
		session_destroy();
	}
	if (!isset($_SESSION["login_usuario"]) && !isset($_SESSION["senha_usuario"])) {
		header('location: login.php');
	}
?>


Qualquer coisa, é só perguntar ai.

#3 Membro offline   Stephy Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 5
  • Cadastrado: 10-outubro 09

Postou 06 novembro 2009 - 16:14

Daniel, se eu inserir o furmulário do login.php em um documento em html ele funcionará?

#4 Membro offline   lukoBR Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 33
  • Cadastrado: 13-setembro 09

Postou 07 novembro 2009 - 00:56

Olá,
Stephy
Não, não funcionará. O php necessita de páginas que interpretem ele, o html interpretará apenas como conteúdo visual, e não dinâmico, e acabará exibindo todo o código php, e não aplicando-o.

Daniel Filho
Obrigado pela resposta, apesar de não ter usado este código, pois o meu interesse é aprender, e não copiar. Mas eu resolvi o problema pois era apenas lógica incorreta, que podia levar a um loop infinito.

#5 Membro offline   Daniel Filho Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 114
  • Cadastrado: 24-agosto 09
  • Sexo:Masculino

Postou 07 novembro 2009 - 01:37

Stephy, é como ele disse.

lukoBR, eu também não gosto de copiar códigos, mas eu queria te amostrar algo mais simples e com a mesma funcionalidade. Mas tudo bem, te entendo perfeitamente!

#6 Membro offline   João Batista Neto Ícone

  • Verschränkung
  • Ícone
  • Grupo: Moderadores Trainee
  • Posts: 872
  • Cadastrado: 03-janeiro 09
  • Sexo:Masculino
  • Localização:Franca/SP

Postou 07 novembro 2009 - 06:06

Ver postlukoBR, em 07 novembro 2009 - 00:56 , disse:

Mas eu resolvi o problema pois era apenas lógica incorreta, que podia levar a um loop infinito.


lukoBR,

Como você já postou o seu código, postando a solução para o problema você estará ajudando o fórum iMasters e a outros usuários que possam ter problemas semelhantes.

#7 Membro offline   lukoBR Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 33
  • Cadastrado: 13-setembro 09

Postou 07 novembro 2009 - 16:34

Ver postJoão Batista Neto, em 07 novembro 2009 - 06:06 , disse:

Ver postlukoBR, em 07 novembro 2009 - 00:56 , disse:

Mas eu resolvi o problema pois era apenas lógica incorreta, que podia levar a um loop infinito.


lukoBR,

Como você já postou o seu código, postando a solução para o problema você estará ajudando o fórum iMasters e a outros usuários que possam ter problemas semelhantes.



Perdoe-me, mas o código não pode ser postado por motivos de segurança, pois se trata de um projeto.

Página 1 de 1
  • Novo tópico
  • Responder

1 usuário(s) está(ão) lendo este tópico
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)