Jump to content


Photo

Problemas Com Sessão


  • Faça o login para participar
4 replies to this topic

#1 cfermino

cfermino

    24 Horas

  • Usuários
  • 441 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 14/06/2005, 18:54

Caros,

Estou com problemas com sessão em um sistema de login.

quando eu entro a primeira vez no login ele fala que Você não efetuou o login, mas se eu clico no voltar do Browser e tento novamente ai ela inicia normalmente.

segue meu codigo

<?php
session_start();
if(IsSet($_SESSION["username"]))
    $nome_usuario = $_SESSION["username"];
if(IsSet($_SESSION['senha']))
    $senha_usuario = $_SESSION["senha"];
if(IsSet($_SESSION['grupo']))
    $grupo = $_SESSION["grupo"];
if(IsSet($_SESSION['user']))
    $perfil = $_SESSION["user"];

if(!(empty($nome_usuario) OR empty($senha)))
{
  $servidor = "localhost";
$usuario_bd = "root";
$senha_bd = "a1a2a3";
$banco = "intranet";
$con = mysql_connect($servidor, $usuario_bd, $senha_bd);
mysql_select_db ($banco);
$resultado = mysql_query("SELECT * FROM users WHERE (login='$nome_usuario')");
if(mysql_num_rows($resultado)==1)
{
  if($senha_usuario != mysql_result($resultado,0,"senha"))
  {
        unset ($_SESSION["username"]);
        unset ($_SESSION["senha"]);
    unset ($_SESSION["user"]);
            echo "Você não efetuou o LOGIN!";
            exit;
        }
    }
    }
else
{
    echo "Você não efetuou o LOGIN!";
    exit;
}

mysql_close($con);
?>


Please HElp

Edição feita por: cfermino, 14/06/2005, 19:42.


#2 lugs

lugs

    Normal

  • Usuários
  • 83 posts
  • Sexo:Não informado
  • Localidade:Capinas - SP

Posted 14/06/2005, 21:43

Nem analisei direito, mas acho q isso tá errado:
if(!(empty($nome_usuario) OR empty($senha)))

o correto não seria:
if((!empty($nome_usuario)) OR (empty($senha)))

tomara q ajude
"Qndo eu apontar para a Lua, não olhe para o meu dedo"

#3 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 15/06/2005, 08:41

Vamos por partes ...

@ lugs

Amigo, se é que eu entendi, esta parte do código está correta, ela verifica se $nome_usuario e $senha não estão vazios ... ;)

@ cfermino

Bom ... de primeira, não vi nenhum erro aparente, à não ser na sua query ... :unsure:
$resultado = mysql_query("SELECT * FROM users WHERE (login='$nome_usuario')");
O correto, creio eu, seria:
$resultado = mysql_query("SELECT * FROM users WHERE login='$nome_usuario'");
Haviam parênteses sobrando ali ... :blink:

Bom, não sei se é isto que está afetando o código, mas, numa rápida debugada só achei isso ... ^_^

[]’s :DAté mais

#4 cfermino

cfermino

    24 Horas

  • Usuários
  • 441 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 15/06/2005, 15:58

V1d4

alterei o que vc apontou mas não rolou tb continua com o mesmo problema,

Tentei este codigo abaixo e também rola a mesma coisa.

<?

include "config.php"; //inclui o arquivo de configurações
$login = $_POST['login'];
$senha = $_POST['senha'];
//conecta a base de dados

$confirmacao = mysql_query("SELECT * FROM users WHERE login = '$login' AND senha = '$senha'"); //verifica se o login e a senha conferem
$contagem = mysql_num_rows($confirmacao); //traz o resultado da pesquisa acima
if ( $contagem == 1 ) {
$consulta = mysql_fetch_array ($confirmacao);
$nome = $consulta['nome'];
$grupo = $consulta['grupo'];
$perfil = $consulta['perfil'];
$ambiente = $consulta['ambiente'];
session_start();
$_SESSION['login'] = $login; //grava o cookie com o login
$_SESSION['perfil'] = $perfil;
$_SESSION['ambiente'] = $ambiente;
$_SESSION['grupo'] = $grupo;
if ($perfil == "Administrador") {

$_SESSION['login'] = $login; //grava o cookie com o login
$_SESSION['perfil'] = $perfil;
$_SESSION['ambiente'] = $ambiente;
$_SESSION['grupo'] = $grupo;
//grava o cookie com a senha
header("Location: index5.php"); //essa é a pagina de destino caso esteje correto
}else {

$_SESSION['login'] = $login; //grava o cookie com o login
$_SESSION['perfil'] = $perfil;
$_SESSION['ambiente'] = $ambiente;
$_SESSION['grupo'] = $grupo;
header("Location: index6.php"); //essa é a pagina de destino caso esteje correto
}
} else {
echo "Ferrou";
}

?>


Tem que logar 2 vezes para a session funfar...

Edição feita por: cfermino, 15/06/2005, 16:05.


#5 nick171

nick171

    <? if => erro ?>

  • Usuários
  • 612 posts
  • Sexo:Não informado

Posted 16/06/2005, 02:30

Ai cara, cuidado com query desse estilo.

$login = $_POST['login'];
$senha = $_POST['senha'];
//conecta a base de dados

$confirmacao = mysql_query("SELECT * FROM users WHERE login = '$login' AND senha = '$senha'"); //verifica se o login e a senha conferem

O cara só coloca 1==1 no usuário e senha e loga no sistema.
Uma dicas ai de segurança

<?php
$usuario = $_POST["usuario"];
$senha = $_POST["senha"];

// compara
$confirmacao = mysql_query("SELECT * FROM users WHERE usuario = '$usuario'") or die (mysql_error());
list (,$nome,$usuario2,$senha2,$grupo,$perfil,$ambiente) = mysql_fetch_row($confirmacao); 

/* coloque em "list ()" a ordem dos campos correta, mas não mude $usuario2 nem $senha2 e nos campos que vc não quer exibir as variaveis você deixa vazio, como com a , antes da $nome, que seria o $id que não quero que apareça, sacou */

// erros
if ($usuario == ""){
  $erros .= "Você não digitou um usuário.<br>";
}
if ($senha == ""){
  $erros .= "Você não digitou uma senha.<br>";
}
elseif ($usuario != $usuario2){
  $erros .= "Os dados não conferem.<br>";
}
elseif ($senha != $senha2){
  $erros .= "Os dados não conferem.<br>";
}
if ($erros == ""){
session_start();
if ($perfil == "Administrador") {
$_SESSION["login"] = $login; 
$_SESSION["perfil"] = $perfil;
$_SESSION["ambiente"] = $ambiente;
$_SESSION["grupo"] = $grupo;

header("Location: index5.php"); 
}else {
$_SESSION["login"] = $login; 
$_SESSION["perfil"] = $perfil;
$_SESSION["ambiente"] = $ambiente;
$_SESSION["grupo"] = $grupo;
header("Location: index6.php"); 
}
} else {

echo "Ocorreram os seguintes erros: $erros";
}
mysql_close($conexao);
?>


Edição feita por: nick171, 16/06/2005, 02:33.

Nícolas Vieira Rossett


"O maior segredo da vida é que a mesma não é um processo de descoberta, mas sim de criação.
Você não está se descobrindo, mas se recriando.
Por isso não tente descobrir quem você é, mas busque determinar... "Quem você quer ser"!!!




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq