• 0
Sign in to follow this  
Mateus Conti

ID EXTRANGEIRO

Question

Bom pessoal ve se vocês entende minha duvida

Eu tenho dois usuarios cadastrado, Joao e Maria

EU logo com o Joao que é id=1

E entro no perfil da Maria id=2

Eu quero entrar com o joao no perfil da maria somente pra visualizar sem poder alterar pois quando eu entro no perfil de maria aparece o id dela então é como se eu estivesse logado com ela , então eu queria tornar esse um ID EXTRANGEIRO que não posso alterar, seria como eu estar Sempre logado com o Joao podendo visitar outros usuarios e alterar somente os meus dados que é o id=1

Entenderam ?

Porfavor da uma mao ai.

Banco de dados nivel_acesso

Tabela: usuarios

Colunas: usu_id, usu_nome, usu_sobrenome ( acredito que só precisaria do usu_id para montar os codigos )

Share this post


Link to post
Share on other sites

9 answers to this question

Recommended Posts

  • 0

cria uma pagina de perfil de vizualização coloque arquivo para validar se o usuario está logado e monte ela mostrando somente o que você quer e da forma que você sendo assim...

a Pagina não vai editar nenhum usuario - por que nela não existe este tipo de opção já que você fez uma para visualização.

como você mesmo vai personalizar como vai ser a visualização do perfil você nãi vai colcoar nenhum campo que eve ser exposto

para acessar o perfil de alguém é so colcoa na URL o id da pessoa e capturar com method GET e depois fazer somente um select.

e aplica uma validação para somente usuario LOGADO acessar.

Share this post


Link to post
Share on other sites
  • 0

Eu faria diferente, ao se logar, armazenaria em uma sessão o ID de acesso e depois faria a comparação através do famoso if(), por ex: Se $_SESSION["IdAcesso"] == $id_vindo_do_banco_usario então terá todo acesso, senão apenas visualizará os conteúdos. O problema de pegar via url os valores com o método GET é que se o REGISTER_GLOBALS estiver em off, esses valores não serão capturados, a não se usar o método $_REQUEST[], mas essa regra não se aplica a valores vindos pelo POST.

Abs

Share this post


Link to post
Share on other sites
  • 0

Outro ponto importante que esqueci de mencionar. Quando você diz que ao entrar como Maria, aparece joão, tem que ver como está sendo efetuado a validação de login se é com Cookies ou com Sessão. Para ambos, é importante criar um logout, matando assim o cookie ou sessão ativo. Caso o problema persista, verifique como está o arquivo de logout, pois quando matamos a sessão ou cookies, no próximo acesso só será aparecerá quem se logou.

Edited by MTavares

Share this post


Link to post
Share on other sites
  • 0
Outro ponto importante que esqueci de mencionar. Quando você diz que ao entrar como Maria, aparece joão, tem que ver como está sendo efetuado a validação de login se é com Cookies ou com Sessão. Para ambos, é importante criar um logout, matando assim o cookie ou sessão ativo. Caso o problema persista, verifique como está o arquivo de logout, pois quando matamos a sessão ou cookies, no próximo acesso só será aparecerá quem se logou.

Eu entendi mais ou menos

Olha vou postar o codigo da pagina index.php onde o usuario faz o login e me fala o que você axa, se tiver como você já me mostrar ela alterada...

Banco de dados: nivel_acesso

Tabela:usuarios

Colunas:usu_id, usu_login, usu_senha, usu_nome, usu_sobrenome....

<?php
    $host = "localhost";
    $usuario = "root";
    $senha = "";
    $banco = mysql_connect($host, $usuario, $senha) or die("Não foi possivel conectar com o seu banco de dados.");
    mysql_select_db('nivel_acesso', $banco) or die("Não foi possivel conectar com o seu banco de dados.");



?>
<?php require_once('Connections/loginsenha.php'); ?>
<?php require_once('Connections/nivel_acesso.php'); ?>
<?php
//initialize the session
if (!isset($_SESSION)) {
  session_start();
}

// ** Logout the current user. **
$logoutAction = $_SERVER['PHP_SELF']."?doLogout=true";
if ((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){
  $logoutAction .="&". htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){
  //to fully log out a visitor we need to clear the session varialbles
  $_SESSION['MM_Username'] = NULL;
  $_SESSION['MM_UserGroup'] = NULL;
  $_SESSION['PrevUrl'] = NULL;
  unset($_SESSION['MM_Username']);
  unset($_SESSION['MM_UserGroup']);
  unset($_SESSION['PrevUrl']);
    
  $logoutGoTo = "Perfil/Termo.php";
  if ($logoutGoTo) {
    header("Location: $logoutGoTo");
    exit;
  }
}
?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$colname_Recordset1 = "-1";
if (isset($_GET['usu_senha'])) {
  $colname_Recordset1 = $_GET['usu_senha'];
}
mysql_select_db($database_nivel_acesso, $nivel_acesso);
$query_Recordset1 = sprintf("SELECT usu_senha FROM usuarios WHERE usu_senha = %s", GetSQLValueString($colname_Recordset1, "text"));
$Recordset1 = mysql_query($query_Recordset1, $nivel_acesso) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['usu_login'])) {
  $loginUsername=$_POST['usu_login'];
  $password=sha1($_POST['usu_senha']);
    mysql_select_db($database_loginsenha, $loginsenha);
      
  $LoginRS__query=sprintf("SELECT usu_id, usu_login, usu_senha FROM usuarios WHERE usu_login=%s AND usu_senha=%s",
  GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text"));
  
  $LoginRS = mysql_query($LoginRS__query, $loginsenha) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
    
    $loginStrGroup  = mysql_result($LoginRS,0,'usu_id');
    
    if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;
  
  $MM_fldUserAuthorization = "usu_id";
  $MM_redirectLoginSuccess = "layout%20teste.php?id=$loginStrGroup";
  $MM_redirectLoginFailed = "Sistema_login/erro.php";
  $MM_redirecttoReferrer = false;
          

    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];    
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}
?>

Mandei todo o codigo caso falte alguma coisa me fale

Obrigado mesmo viu :)

Share this post


Link to post
Share on other sites
  • 0

Pelo que vi, você chama esse arquivo no topo da página 'Connections/nivel_acesso.php' e observe nessa variável: $MM_fldUserAuthorization = "usu_id";

Veja se a mesma está tendo algum tipo de referência na página informada anteriormente. Esse seu sistema parece já ter esse nivel de acesso pronto. Veja se as variáveis estão batendo corretamente, veja se o register_globals está off, pois existem valores passados por uma url sendo resgatadas pela variável pré definida GET. Até onde sei, se o register_globals estiver desativada, a única forma de pegar os valores passadas por uma url é com o $_REQUEST, mas isso não se aplica pelos valores passados por um formulário por ex.

Share this post


Link to post
Share on other sites
  • 0
Pelo que vi, você chama esse arquivo no topo da página 'Connections/nivel_acesso.php' e observe nessa variável: $MM_fldUserAuthorization = "usu_id";

Veja se a mesma está tendo algum tipo de referência na página informada anteriormente. Esse seu sistema parece já ter esse nivel de acesso pronto. Veja se as variáveis estão batendo corretamente, veja se o register_globals está off, pois existem valores passados por uma url sendo resgatadas pela variável pré definida GET. Até onde sei, se o register_globals estiver desativada, a única forma de pegar os valores passadas por uma url é com o $_REQUEST, mas isso não se aplica pelos valores passados por um formulário por ex.

Putz, serio MTavares ?

Qr dizer que ele já ta certo, e eu to vendo coisas??

o meu sistema esta correto que nem eu tavo qrendo e eu nem percebi ?

Qr dizer q então se eu entrar com o Joao ID =1 vai fikar sempre nele, se eu entrar no da Maria ID=2 eu so vou estar entrando nele e não logado !?

Share this post


Link to post
Share on other sites
  • 0

Esse código que você postou ele valida o usuário, cria as sessões e direciona para a página... se você diz que você loga com um usuário e quando vai logar com outro usuário, ainda permanece o primeiro acesso, tente ver como está sendo apontado para matar a sessão ativa. No trecho abaixo, você mata a sessão:

if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){
  //to fully log out a visitor we need to clear the session varialbles
  $_SESSION['MM_Username'] = NULL;
  $_SESSION['MM_UserGroup'] = NULL;
  $_SESSION['PrevUrl'] = NULL;
  unset($_SESSION['MM_Username']);
  unset($_SESSION['MM_UserGroup']);
  unset($_SESSION['PrevUrl']);
    
  $logoutGoTo = "Perfil/Termo.php";
  if ($logoutGoTo) {
    header("Location: $logoutGoTo");
    exit;
  }
}

... mas pelo que vi... você chama a página <?php require_once('Connections/nivel_acesso.php'); ?>

Acredito que seja nesse arquivo que cria o nível de acesso dos usuários...

abs

Particularmente, criaria uma tabela chamada permissão, que teria a seguinte estrutura:

IdPermissao

IdUsuario

Visualizar

Editar

Excluir

......

E no cadastro daria valor 1 para os acessos. Por ex. Se joão tiver todos os acessos, então a tabela de permissões ficaria assim:

IdPermissao = 1

IdUsuario = 1

Visualizar = 1

Editar = 1

Excluir = 1

....

E se maria puder apenas visualizar:

IdPermissao = 1

IdUsuario = 1

Visualizar = 1

Editar = 0

Excluir = 0

....

Depois com o PHP você faria essa filtragem....

abs

Continuando...

Pegaria o valor IDUsuario no acesso pela SESSION e depois faria a verificação na tabela de validação... só me desculpe as informações estarem indo em pedaços, pois estou com um trabalho apertado aqui....

mas a idéia inicial é essa...

abs

Share this post


Link to post
Share on other sites
  • 0
Esse código que você postou ele valida o usuário, cria as sessões e direciona para a página... se você diz que você loga com um usuário e quando vai logar com outro usuário, ainda permanece o primeiro acesso, tente ver como está sendo apontado para matar a sessão ativa. No trecho abaixo, você mata a sessão:

if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){
  //to fully log out a visitor we need to clear the session varialbles
  $_SESSION['MM_Username'] = NULL;
  $_SESSION['MM_UserGroup'] = NULL;
  $_SESSION['PrevUrl'] = NULL;
  unset($_SESSION['MM_Username']);
  unset($_SESSION['MM_UserGroup']);
  unset($_SESSION['PrevUrl']);
    
  $logoutGoTo = "Perfil/Termo.php";
  if ($logoutGoTo) {
    header("Location: $logoutGoTo");
    exit;
  }
}

... mas pelo que vi... você chama a página <?php require_once('Connections/nivel_acesso.php'); ?>

Acredito que seja nesse arquivo que cria o nível de acesso dos usuários...

abs

Particularmente, criaria uma tabela chamada permissão, que teria a seguinte estrutura:

IdPermissao

IdUsuario

Visualizar

Editar

Excluir

......

E no cadastro daria valor 1 para os acessos. Por ex. Se joão tiver todos os acessos, então a tabela de permissões ficaria assim:

IdPermissao = 1

IdUsuario = 1

Visualizar = 1

Editar = 1

Excluir = 1

....

E se maria puder apenas visualizar:

IdPermissao = 1

IdUsuario = 1

Visualizar = 1

Editar = 0

Excluir = 0

....

Depois com o PHP você faria essa filtragem....

abs

Continuando...

Pegaria o valor IDUsuario no acesso pela SESSION e depois faria a verificação na tabela de validação... só me desculpe as informações estarem indo em pedaços, pois estou com um trabalho apertado aqui....

mas a idéia inicial é essa...

abs

nivel de acesso foi só o nome que eu dei pra minha tabela, não tem colunas de nivel

Share this post


Link to post
Share on other sites
  • 0

Então... você pode fazer dessa forma.... no cadastro, crie campos extras, como por ex:

<input type='radio' name='Permissao' valor='1'> Cadastrar
<input type='radio' name='Permissao' valor='1'> Editar
<input type='radio' name='Permissao' valor='1'> Excluir
Depois ao cadastrar o cliente na tabela de usuarios, você pode pegar o id dele com o mysql_insert_id() e cadastrar na tabela de permissões conforme informado anteriormente... Lembre-se que isso é apenas uma idéia prática de como pode ser feito... Existem outras formas, como por ex: Se você for o usuário master e quer ter todo o controle do sistema, porém os outros usuários não terão, ou seja, se for comando fixo, você pode fazer da idéia inicial. Ao fazer o login, pegaria o ID dos usuários na sessão e faria uma comparação. Ex: Levando em consideração que o IdAcesso 1 é o João.
<?php  if($_SESSION["IdAcesso"] == "1"): ?>

$imagemEditar = "<a href='editar.php?IdCliente=$id'><img src='imagens/editar.png'></a>";
$imagemExcluir = "<a href='excluir.php?IdCliente=$id'><img src='imagens/excluir.png'></a>";
     
<?php endif; ?>

Daí bastaria você colocar no lugar aonde entraria os botões de ação. A variável $id é a variável que virá da listagem dos resultados na visualização....

Seria mais ou menos por aí...

Abs.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this