Ir para conteúdo

POWERED BY:

Arquivado

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

Ederjsantos

Sistema de login com sessão

Recommended Posts

Bom dia Pessoal tenho um sistema de login, que busca os dados no banco e quero que tenha

sessão porém não consigo logar no sistema, não consigo entender o porque.

segue o codigo:

 

 $login = $_POST["LOGIN"];
 $senha = $_POST["SENHA"];

 $sql = "SELECT * FROM USUARIO WHERE LOGIN = '$login' AND SENHA = '$senha'";
 $rs = mssql_query($sql);

 if(mssql_num_rows($rs) == 1) {
 $user = mssql_fetch_array($rs);
 //conferindo o login e senha para segurança
 if($login == $user['LOGIN']){
 //se entrou, entao o login é igual
 if($senha == $user['SENHA']){
 //se entrou, então a senha também é igual
 $logado = "1";
 $id_user = $user['CODUSUARIO'];

 //criando a sessão
 session_start();
 $_SESSION["id_user"] = $id_user;
 $_SESSION["logado"] = $logado;

 //depois que criarmos a sessão,
 //vamos redirecionar para a página privada

 header("Location: cadastro.php");
 } else {
 echo "A senha não confere!";
 }
  } else {
   echo "O usuário não confere!";
   }
    }else {
    echo "Usuário ou senha inválidos. Tente novamente.";
     }
?>
o sistema so fala que "Usuário ou senha inválidos. Tente novamente."

 

pagina secreta:

if($_SESSION['logado'] == 1){

$sql = "SELECT * FROM USUARIO WHERE CODUSUARIO = ".$_SESSION['id_user'];
$rs = mssql_query($sql);
if(mssql_num_rows($rs)) {
$user = mssql_fetch_array($rs);
echo "<strong> Olá ".$user['LOGIN']."!</strong> ";
echo "<a href="logout.php">Sair</a>";
}
}else {
echo "Você não está logado. Tudo está oculto para você!";
}

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui:

$login = $_POST["LOGIN"];
$senha = $_POST["SENHA"];

Está em maiusculo LOGIN e SENHA no POST.

Está maiusculo também no Formulário ? Tem que ser igual.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode ser que as variáveis $login e $senha não estejamrecebendo seus respectivos valores.

Da um echo na query

echo $sql;
Pra ver o que está sendo enviado pra ela.

 

E eu mais uma vez atrasado de novo Dee. hahahaha http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode ser que as variáveis $login e $senha não estejamrecebendo seus respectivos valores.

Da um echo na query

echo $sql;
Pra ver o que está sendo enviado pra ela.

 

E eu mais uma vez atrasado de novo Dee. hahahaha http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif

 

OWIEowieowIeowie Pq Atrasado ?

 

@Eder

Eu tenho esse script bem fácil de verificação de usuário, veja:

 

$login 		  = $_POST["login"];
$senha		  = $_POST["senha"];
		
$query = "select login_codigo, login, senha, nivel_codigo from adm_usuarios where login = '$login' and senha = '$senha'";
$exe   = mssql_query($query);
$res   = mssql_fetch_array($exe);
$lin   = mssql_num_rows($exe);
		
$login_acesso = $res['login'];
$login_codigo = $res['login_codigo'];
$senha_acesso = $res['senha'];
$nivel_codigo = $res['nivel_codigo'];
		
if($lin == 1)
{
	session_start();
	$_SESSION["login_codigo"] = $login_codigo;
	$_SESSION["login"] = $login_acesso;
	$_SESSION["nivel_codigo"] = $nivel_codigo;
	header("Location: pagina.php");
}
else
{
	if($login != $login_acesso)
	{
		echo "Usuário Inválido";
	}
	elseif($senha != $senha_acesso)
	{
		echo "Senha Inválida";
	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dee e Mario Miranda alterei o sistema de login aqui rapidamente e resolvi o que queria em partes, agora ja esta

logando, buscando certinho no banco, porém acabei de ser informado que terá de ter nível se acesso e

não sei como fazer o nível de acesso e sessão para funcionar.

Procurei aqui na net mas não consegui fazer.

 

login.php

 <form name="form1" method="post" action="loga.php?acao=logar">
   <table style="width: 100%; border: 1px solid black;">
   <fieldset>
    Login: <input type="text" name="nome"><br><br>
    Senha: <input type="password" name="pwd"><br><br>

   <button type="submit" class="cadastrar">Entrar</button>
        </table>
    </form>

loga.php

session_name("MeuLogin");
session_start();

if($_GET['acao'] == "logar") {
$conn = mssql_connect("server","user","pass"); 
$banco = mssql_select_db("VISITANTE"); 

$nome = $_POST['nome'];
$q_user = mssql_query("SELECT * FROM USUARIO WHERE LOGIN='$nome'");

if(mssql_num_rows($q_user) == 1) {

$query = mssql_query("SELECT * FROM USUARIO WHERE LOGIN='$nome'");
$dados = mssql_fetch_array($query);
if($_POST['pwd'] == $dados['SENHA']) {
session_register("nome");
header("Location: pessoa.php");
exit;
} else {
header("Location: login1.php?login=falhou&causa=".urlencode('Senha Errada'));
exit;
        }
        } else {
        header("Location: login1.php?login=falhou&causa=".urlencode('Login errado tente novamente'));
        exit;
     }
     }
    //agora a parte que verifica se o login já foi feito
     if(session_is_registered("nome") == false) {
         header("Location: login1.php");

                             }

                             ?>
ate ai funciona mas a sessao não sei como fazer.

podem me dar uma help nisso??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu criaria uma tabela no banco para adicionar níveis de acesso ou se você quiser fazer de forma mais simples você pode definir níveis de acesso de 1 a 5 por exemplo e controlar esses níveis via programa.

Independente das formas, ao logar você criaria uma Session para o nível do acesso e assim controlar as possibilidades do usuário.

Se você fizer via banco de dados, você adicionaria na tabelas as páginas que o usuário poderia acessar.Você colocaria, na tabela de usuário um campo chamado nivel_acesso e nele você grava o nível do usuario e na hora de logar, você traz esse campo também e salva ele numa session.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você cria uma outra tabela chamada Niveis.

Cadastra os níveis lá. São só duas colunas. Nível e Nível_Codigo.

E na tabela de Usuarios você cria um campo chamado Nivel_Codigo.

 

Dae na página de cadastro, você mostra todos os níveis existentes no banco da tabela Niveis.

Vamos supor que:

 

1 - Usuário

2 - Cliente

3 - Administrador

 

Dae você grava somente o código do Nivel na tabela usuarios.

 

Não sei se você viu no meu Script, mas você viu que eu tenho lá na tabela o campo Nível_Codigo. Eu também uso isso.

Dae quando você for fazer o Select para verificar o Login e Senha, no Select você coloca o campo Nivel_Codigo. E guarda em sessão. No meu script também tem isso.

 

Dae é só você nas outras página fazer os If's.

if($_SESSION['nivel_codigo'] == 1) // Usuário
{
    // Faz tal coisa
}
elseif($_SESSION['nivel_codigo'] == 2) // Cliente
{
    // Faz tal coisa
}
elseif($_SESSION['nivel_codigo'] == 3) // Administrador
{
    // Faz tal coisa
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz exatamente isso aqui coloquei no banco niveis de acesso de 1 até 3

agora vou tentar colocar a sessão la pra ver se funciona certinho,

nunca fiz usando sessão primeira vez nao sei se irei conseguir rsrs.

mas vou tentar aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

colquei a sessao porem quando logo ele vai ate a pagina que eu coloquei o action e retorna para a página de login novamente:

minha página secreta:

<?
session_name("MeuLogin");
session_start();

if($_GET['acao'] == "logar") {
$conn = mssql_connect("server","user","pass"); //configure os dados do seu MySQL
$banco = mssql_select_db("VISITANTE"); //coloque o nome do seu banco de dados

$nome = $_POST['nome'];
$q_user = mssql_query("SELECT * FROM USUARIO WHERE LOGIN='$nome'");

if(mssql_num_rows($q_user) == 1) {

$query = mssql_query("SELECT * FROM USUARIO WHERE LOGIN='$nome'");
$dados = mssql_fetch_array($query);

if($_POST['pwd'] == $dados['SENHA']) {
session_register("nome");
header("Location: pessoa.php");
exit;
} else {
header("Location: login1.php?login=falhou&causa=".urlencode('Senha Errada'));
exit;
        }
        } else {
        header("Location: login1.php?login=falhou&causa=".urlencode('Login errado tente novamente'));
        exit;
     }
     }
    //agora a parte que verifica se o login já foi feito
     if(session_is_registered("nome") == false) {
         header("Location: login1.php");
}
?>

daqui ele vai na pagina pessoa.php e volta para a pagina de login novamente:

 

<?php
$sessao = new login('','','','');

$sessao->sessao();

?>

o que pode ser?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A pessoa.php é chamada na minha pagina secreta la no location , você ver ela sendo chamada e isso aqui

<?php
$sessao = new login('','','','');
$sessao->sessao();
?>
eu coloquei la na pessoa.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

No seu código você colocou isso:

session_register("nome");

mas você nao igualou a variavel $nome = $_POST['nome'];

 

Dae quando ele vem aqui:

     if(session_is_registered("nome") == false) {
         header("Location: login1.php");

Sempre vai dar falso pq variavel ta vazia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ta dando esse erro agora:

 

Warning: Cannot modify header information - headers already sent by (output started at /usr/local/apache/htdocs/intranet/visita/class/acompanhante.class.php:56) in /usr/local/apache/htdocs/intranet/visita/class/login.class.php on line 68

 

 65 public function sessao(){
 66 $_SESSION["NOME"];
 67 if (!isset($_SESSION["NOME"])) {
 68 header("Location: login.php");
 69         }
 70 }

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.