Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Ajuda. Urgente! Moçambique


xonguile

Pergunta

Boas, ....

Tou com um grave problema. Tenho um sistema de registo de ordens de compra que tem que estar pronto até sexta-feira.

O Sistema (em php), tem vários níveis de acesso (5). Sendo que alguns níveis de acesso permitem criar utilizadores, que por sua vez, recebem os dados por email.

Ok, o que tá a acontecer, e que tem que estar resolvido (senão, há muittttttto barulho - a nível do Governo), é o seguinte:

- faço login com um utilizador. Registo ordens sem problema. Mas, se faço login com outro utilizador, ele sobrepõe os dados da sessão criada para o primeiro utilizador logado sem mesmo fazer logout do primeiro utilizador.

Tou aflito. Preciso de ajuda urgente.

Aqui vai o código:

file 1 - autentica.php

<?php

session_start();

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

header("Cache-Control: post-check=0, pre-check=0", false);

header("Pragma: no-cache");

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

$user = $_POST['user'];

$senha = md5($_POST['senha']);

$entidade = $_POST['entidade']; // entidade é equivalente

$username = $user;

$activado = "1";

$consulta = mysql_query("SELECT * FROM utilizadores WHERE ut_login LIKE '$user' AND ut_senha LIKE '$senha' AND ut_if LIKE '$entidade' AND activado LIKE '$activado'") or die($msg[2]);

$resultado = mysql_num_rows($consulta);

if ($resultado == "0")

{

$mensagem = "Acesso Recusado";

include("index.php");

exit();

}

elseif($resultado == 1) // o que quer dizer que o utilizador esta registado na base de dados

{

if($id_nivel == "1")

{

session_start();

//IP

$info_ip = IP();

$info_ip = md5_encripta($info_ip, $password_md5_IP);

$_SESSION['sess_ip'] = $info_ip;

//capto os dados do browser do utilizador autenticado e crio a sessao

$info_browser = BROWSER();

$info_browser = md5_encripta($info_browser, $password_md5_BROWSER);

$_SESSION['sess_browser'] = $info_browser;

//capto os dados da base de dados e crio a sessao

$info_user_1 = mysql_result($consulta, 0, "ut_login");

$info_user_1 = md5_encripta($info_user_1, $password_md5_USER);

$_SESSION['sess_user_1'] = $info_user_1;

//capto os dados da base de dados e crio a sessao

$info_senha_1 = mysql_result($consulta, 0, "ut_senha");

$info_senha_1 = md5_encripta($info_senha_1, $password_md5_SENHA);

$_SESSION['sess_senha_1] = $info_senha_1;

//capto os dados da base de dados e crio a sessao

$info_entidade_1 = mysql_result($consulta, 0, "ut_if");

$info_entidade_1 = md5_encripta($info_entidade_1, $password_md5_ENTIDADE);

$_SESSION['sess_entidade_1'] = $info_entidade_1;

//capto os dados da base de dados e crio a sessao

$info_id_1 = mysql_result($consulta, 0, "ut_id");

$info_id_1 = md5_encripta($info_id_1, $password_md5_ID);

$_SESSION['sess_id_1'] = $info_id_1;

header("Location: 1/index.php");

}elseif($id_nivel == "2")

{

// Criacao das sessoes e reencaminhamento para 2

session_start();

//capto o IP do utilizador autenticado e crio a sessao

$info_ip = IP();

$info_ip = md5_encripta($info_ip, $password_md5_IP);

$_SESSION['sess_ip'] = $info_ip;

//capto os dados do browser do utilizador autenticado e crio a sessao

$info_browser = BROWSER();

$info_browser = md5_encripta($info_browser, $password_md5_BROWSER);

$_SESSION['sess_browser'] = $info_browser;

//capto os dados da base de dados e crio a sessao

$info_user_2 = mysql_result($consulta, 0, "ut_login");

$info_user_2 = md5_encripta($info_user_2, $password_md5_USER);

$_SESSION['sess_user_2'] = $info_user_2;

//capto os dados da base de dados e crio a sessao

$info_senha_2 = mysql_result($consulta, 0, "ut_senha");

$info_senha_2 = md5_encripta($info_senha_2, $password_md5_SENHA);

$_SESSION['sess_senha_2'] = $info_senha_2;

//capto os dados da base de dados e crio a sessao

$info_entidade_2 = mysql_result($consulta, 0, "ut_if");

$info_entidade_2 = md5_encripta($info_entidade_2, $password_md5_ENTIDADE);

$_SESSION['sess_entidade_2'] = $info_entidade_2;

//capto os dados da base de dados e crio a sessao

$info_id_2 = mysql_result($consulta, 0, "ut_id");

$info_id_2 = md5_encripta($info_id_2, $password_md5_ID);

$_SESSION['sess_id_2'] = $info_id_2;

header("Location:2/index.php");

}

}

não sei o ke poderá estar a acontecer....

Depois, a única coisa que faço é comprovar que as variáveis de sessão forma criadas....

Alguém me ajuda, por favor... Tou aflito :/

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
Para resolver esse problema, verifique se o usuário está logado ( if(isset($_SESSION["usuario"])) por exemplo ) e se estiver logado e quiser se logar de novo, não permita. Diga por exemplo que já existe um utilizador logado.

Olha, é o seguinte, não sei se me expressei bem...

O que acontece é o seguinte, um utilizador faz o login, por exemplo Entidade1, User1, Senha1. Ok, ele entra no sistema, regista ordens e na base de dados fica registado que a ordem foi inserida pelo User1.

Mas, se um outro utilizador faz login, por exemplo, Entidade1, User2, Senha2, o sistema, mantém os "2" logados (aparentemente). Mas, quando eu insiro uma ordem, a partir do User1, na base de dados fica o registado como se a ordem tivesse sido inserida pelo User2.

Se faço logout com o User2, no User1, se tento fazer alguma acção, ele diz ke o user não tem permissão para aceder a tal página protegida.

Na verificação de login do User1 / User2, faço:

<?php

session_start();

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

header("Cache-Control: post-check=0, pre-check=0", false);

header("Pragma: no-cache");

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

if ( isset($_SESSION['sess_ip']) && isset($_SESSION['sess_browser']) && isset($_SESSION['sess_user_1']) && isset($_SESSION['sess_senha_1]) && isset($_SESSION['sess_entidade_1']) && isset($_SESSION['sess_id_1']))

{

........

}

Não sei o ke pode estar a acontecer....

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --xonguile --
pessoal, só me falta um dia. Por favor, ajudem-me..... Please!

Já consegui resolver o problema.

Abraços e boa sorte pra kem tem problemas.

Xonguile The Great

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...