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

Session PHP passando o ùltimo Registro


Adalberto Sarmento

Pergunta

Boa tarde a todos;

Sou novato aqui e no PHP também, por isso conto com a sabedoria e paciência de vocês, e agradeço antecipadamente desde já.

--> Tenho uma página com Menu Dinâmico acessando a pagina de permissões do usuario, esta funcionando bem exceto que

o valor da "SESSION" independentemente de qual usuario seja ele, sempre passa o conteudo de campo do último registro lido e não da pagina realmente a ser acessada.

Exemplo:

PAGINA MENU - ( Iniciando a sessão )

session_start();
if((!isset ($_SESSION['login']) == true) and (!isset ($_SESSION['senha']) == true) and (!isset ($_SESSION['nome']) == true))
{
unset($_SESSION['login']);
unset($_SESSION['senha']);
unset($_SESSION['nome']);
header('location:index.php');
}

$login = $_SESSION['login'];
$senha = $_SESSION['senha'];
$nome = $_SESSION['nome'];
$operacao = $_SESSION['per_operacao'];

--------------------------------------------------------------------------------------------------------------------------------------------

ainda na pagina MENU ( Montando o menu a partir de uma tabela, acessando a Página referida (Usuário) e passando os dados ( operações ) .

<li><a href="MenuPrincipal.php"><?php echo $lSub['mod_descricao'];?></a>
<ul class="submenu-2">
<?php
$seleciona_rotina = pg_query("SELECT * FROM Menu_rotina WHERE id_modulo = '$idmod'");
if(pg_num_rows($seleciona_rotina) == 0) {
} else {
while($sSub = pg_fetch_array($seleciona_rotina)){
$_SESSION['per_operacao']=$sSub['per_operacao'];
echo($_SESSION['per_operacao']); // ( conteúdo: 1.2.3.4.5 )
?>
<li> <a href="<?php echo $sSub['per_pagina']?>"><?php echo $sSub['gpo_descricao'];?></a>
<?php }?>
</li>
<?php }?>
</ul>
<?php }?>
</li>

Até aqui tudo bem, aponta o menu escolhido com suas respectivas permissões ( Rotinas que o usuario teria acesso ) , e o campo "per_operações = 1.2.3.4.5.", ( até aqui esta ótimo) .

---------------------------------------------------------------------------------------------------------------------------------------------------------

PAGINA USUÁRIO: ( Acesso a página e iniciando a sessão )

<?php

session_start(); // sempre que usarmos as sessions devemos chamar esse codigo sempre no inicio do script
if(isset($_SESSION['per_operacao'])){// verifica se existe a varavel session
$operacao['per_operacao']=$_SESSION['per_operacao']; // passa o valor da variavel session para outra variavel so que uma variavel dentro do mesmo arquivo
$operacao=$_SESSION['per_operacao']; // passa o valor da variavel session par a outra variavel so que uma variavel dentro do mesmo arquivo
echo($_SESSION['per_operacao']); // ( conteúdo: 0.0.1.0.1 )
}else{
echo("você não passou pelo arquivo anterior" );
}

?>
----------------------------------------------------------------------------------------------------------------------------------------------------------------------

Ocorre o seguinte: aqui ele deveria me mostrar o conteúdo do campo "per_operação" igual ao passado pela página "menu principal", e já detecei que indendente de quantos registros tenha na tabela permissao, esta sendo tratado corretamente no Menuprinciapl.PHP, mas esta sempre passando o conteudo do último registro para o Usuario.php.

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

Espero ter sido claro, pelo pouco entendimento que tenho, mas desde já fica aqui meus agradecimentos pela atenção dispensadas por todos, e parabens pela ajuda que tem sido a dada a muitos colegas e a mim também.

Adalberto Moraes

Editado por Adalberto Sarmento
Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Olá Adalberto.

Não consegui entender bem sua dúvida, mas tente comentar a linha abaixo:

// $operacao['per_operacao']=$_SESSION['per_operacao']; // passa o valor da variavel session para outra variavel so que uma variavel dentro do mesmo arquivo

E tente dessa forma:

$operacao=$_SESSION['per_operacao']; // passa o valor da variavel session par a outra variavel so que uma variavel dentro do mesmo arquivo
echo $operacao;

Abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia a todos,

Em primeiro lugar fico grato pela atenção MTavares.

Acontece o seguinte

1- No "Menuprincipal.php" estou lendo a tabela "Menu_rotina", e passando o conteudo do campo "$sSub['per_operacao'];" para a variavel $_SESSION

Exemplo: $_SESSION['per_operacao']=

echo($_SESSION['per_operacao']); // Até aqui esta certo o conteúdo correto é: 1.2.3.4.5
2- Acesso o arquivo "admusuario.php" // Também esta acessando corretamente
<li> <a href="<?php echo $sSub['per_pagina'] ?>"> <?php echo $sSub['gpo_descricao];?></a>
Agora no "admunusuario.php" ( Já com a alteração sugerida ) faço o seguinte:
session_start();
if (isset($_SESSION['per_operacao'])) {
$operacao = $_SESSION['per_operacao'];
} else {
$_SESSION['per_operacao'] = $operacao;
}
echo($_SESSION['per_operacao']); // E me da o conteúdo errado ou seja: ( conteúdo: 0.0.1.0.1 )
Nb; Percebi que o "while" trata-se de um loop, e que este conteúdo errado é sempre
o último registro lido da tabela "Menu_rotina"".
Pode ser um simples erro de sintax, mas não tenho o conhecimento suficiente para detectar
embora tenha estudado bastante.
Mais uma vez agradeço;
Adalberto Sarmento
Link para o comentário
Compartilhar em outros sites

  • 0

Olá Adalberto.

Aconselho a utilização da tag de código tornar o código mais perceptível. Então vejamos:

//menu.php
<?php 
   session_start();
   if (!isset($_SESSION['login']) and !isset($_SESSION['senha']) and !isset($_SESSION['nome'])) 
   {
        //se estás a verificar que estas entradas não estão definidas, não precisas de fazer o unset de seguida, apenas redireccionar o utilizador.​
	header('location:index.php');
   }    
   $login    = $_SESSION['login'];
   $senha    = $_SESSION['senha'];
   $nome     = $_SESSION['nome'];
   $operacao = $_SESSION['per_operacao'];   
?>
<html>
  <head></head>
  <body>		   
      <ul class="submenu-2">   
	<li><a href="MenuPrincipal.php"><?php echo $lSub['mod_descricao'];?></a></li> 	
	<?php   
            $seleciona_rotina = pg_query("SELECT * FROM Menu_rotina WHERE id_modulo = '$idmod'");  
            if (pg_num_rows($seleciona_rotina) > 0) { 
               while($sSub = pg_fetch_array($seleciona_rotina)) {
                   $_SESSION['per_operacao']=$sSub['per_operacao'];
                   echo($_SESSION['per_operacao']);     // ( conteúdo: 1.2.3.4.5 )
        ?> 
        <li>
	   <a href="<?php echo $sSub['per_pagina']?>"><?php echo $sSub['gpo_descricao'];?></a>    
	</li>
	<?php } //while ?>
      </ul>
 <?php } //if ?>		
 </body>
</html>

Tentei estruturar melhor o código, vê se as alterações fazem sentido para a lógica que estás a seguir. Se possível, descreve o que pretendes obter ao certo pois também achei um pouco confuso como diz o MTavares.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia a todos,

Desculpe-me se não estou conseguindo me expressar bem.

Segue Código do "MenuPrincipal.php" que aparentemente esta fazendo tudo certo, o problema esta no "adminusuario.php"

que ao receber o valor da $_SESSION não esta trazendo o mesmos valor enviado, ou seja:

"MenuPrincipal.php" envia $_SESSION igual a "1,2,3,4,5" , e o "admusuario.php" recebe o $_SESSION igual a "0,0,1,0,1" que

é sempre o último registro da tabela .

A Tabela Menu_rotina (temporária) é composta por varias tabelas pelo "JOIN" , e encontra-se a assim:

+-------------------------------------------------------------------------------------------------------------------------+

| id_usuario | id_setor | id_modulo | id_rotina | gpo_descricao | per_pagina | per_operacao |

| 3 | 1 | 1 | 13 | Usuarios | admusuario.php | {1.2.3.4.5. } |

| 3 | 1 | 2 | 1 | Nível | nivel.php | {5,6,7,8,9, } |

| 3 | 1 | 2 | 11 | Grau Parentes | grau.php | {0,0,1,0,1} |

+--------------------------------------------------------------------------------------------------------------------------+

Menuprincipal.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
<?php
// Menupricipal.php (START na sessão) -------------------------------------------------------------------------------------------------------------------------------
session_start();
if (!isset($_SESSION['login']) and !isset($_SESSION['senha']) and !isset($_SESSION['nome']))
{
//se estás a verificar que estas entradas não estão definidas, não precisas de fazer o unset de seguida, apenas redireccionar o utilizador.​
header('location:index.php');
}
$login = $_SESSION['login'];
$senha = $_SESSION['senha'];
$nome = $_SESSION['nome'];
$operacao = $_SESSION['per_operacao'];
//-------------------------------------------------------------------------------------------------------------------------------------------------
// Mostrando Nome do Usuario logado
echo "<br><br><br><br><br><br><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<i>Seja bem vindo $nome !";
?>
<head>
<?php
include ("mentemp.php"); // Gera arquivos temporarios para configuração do Menu
?>
<?php
include ("_css/menuStly.css"); // Configura Estilo
?>
<meta charset="UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="_css/style.css"/>
<script src="http://code.jquery.com/jquery-latest.min.js"type="text/javascript"></script>
<script src="script.js"></script>
<title>Clíint - Sistema Clínica Integrada</title>
</head>
<body>
<table width="100%" style="position:absolute;" height="0%" cellspacing="0" cellpadding="0">
<tr>
<td valign="middle">
<div>
<form name="Sair" action="index.php" method="post" style="margin-left: 32cm">
<input type="image" src="imagens/Botao-Sair.JPEG" name="sub" style="margin-top: 7cm"/>
</form>
</div>
</td>
</tr>
</table>
<ul class="menu">
<?php
$seleciona_grupo = pg_query("SELECT * FROM Menu_grupo ORDER BY id_setor ASC"); // Lendo tabela "Menu_grupo, exibindo Menu de Grupo (ok)
while($ln = pg_fetch_array($seleciona_grupo)) {
$idgpo = $ln['id_setor'];
?>
<li><a href=" MenuPrincipal.php"><?php echo $ln['set_descricao'];?></a>
<ul class="submenu-1">
<?php
$seleciona_modulo = pg_query("SELECT * FROM Menu_modulo WHERE id_setor = '$idgpo'"); // Lendo tabela "Menu_modulo", exibindo Menu Modulo ( ok)
if(pg_num_rows($seleciona_modulo) == 0) {
} else {
while($lSub = pg_fetch_array($seleciona_modulo)) {
$idmod = $lSub['id_modulo'];
?>
<li><a href="MenuPrincipal.php"><?php echo $lSub['mod_descricao'];?></a>
<ul class="submenu-2">
<?php
$seleciona_rotina = pg_query("SELECT * FROM Menu_rotina WHERE id_modulo = '$idmod'"); //lendo a tabela "Menu_rotina"
if(pg_num_rows($seleciona_rotina) == 0) {
} else {
while($sSub = pg_fetch_array($seleciona_rotina)){ // loop na tabela "Menu_rotina" e exibindo a operacao localizada (ok)
$_SESSION['per_operacao']=$sSub['per_operacao'];
$operacao=$_SESSION['per_operacao'];
echo($_SESSION['per_operacao']); // Aqui o conteúdo é 1.2.3.4.5 ( esta correto )
?>
<li> <a href="<?php echo $sSub['per_pagina']?>"> <?php echo $sSub['gpo_descricao'];?></a>
<?php }?>
</li>
<?php }?>
</ul>
<?php }?>
</li>
<?php }?>
</ul>
<?php }?>
</li>
</ul>
</body>
</html>
menusuario.php (só coloquei o necessário )
<!DOCTYPE HTML>
<?php
// START na sessão ------------------------------------------------------------------------------------------------------------
session_start();
print_r($_SESSION);
if (isset($_SESSION['per_operacao'])) {
$operacao = $_SESSION['per_operacao'];
} else {
$_SESSION['per_operacao'] = $operacao;
}
echo($_SESSION['per_operacao']); // E esta trazendo "0,0,1,0,1" ( esta errado )
?>
<?php
function __autoload($class_name){
require_once '/classes/' . $class_name . '.php';
}
//--------------------------------------------------------------------------------------------------------------------------------
?>
<?php
error_reporting(0);
?>
<html land="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Administração de Usuários</title>
<meta name="description" content="" />
<meta name="author" content=""/>
<link rel="stylesheet" href="_css/bootstrap.css" />
<link rel="stylesheet" href="_css/style.css" />
<script type="text/javascript" src="js/jQuery.js"></script>
<script type="text/javascript" src="js/bootstrap.js"></script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<script>
function mostra(id){
if(document.getElementById(id).style.display == 'block'){
document.getElementById(id).style.display = 'none';
document.getElementById('b'+id).value="Listar Todos";
}else{ document.getElementById(id).style.display = 'block';
document.getElementById('b'+id).value="Ocultar Todos";
}
}
</script>
</head>
<body>

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia a todos,

Desculpe-me se não estou conseguindo me expressar bem.

Segue Código do "MenuPrincipal.php" que aparentemente esta fazendo tudo certo, o problema esta no "adminusuario.php"

que ao receber o valor da $_SESSION não esta trazendo o mesmos valor enviado, ou seja:

"MenuPrincipal.php" envia $_SESSION igual a "1,2,3,4,5" , e o "admusuario.php" recebe o $_SESSION igual a "0,0,1,0,1" que

é sempre o último registro da tabela .

A Tabela Menu_rotina (temporária) é composta por varias tabelas pelo "JOIN" , e encontra-se a assim:

+-------------------------------------------------------------------------------------------------------------------------+

| id_usuario | id_setor | id_modulo | id_rotina | gpo_descricao | per_pagina | per_operacao |

| 3 | 1 | 1 | 13 | Usuarios | admusuario.php | {1.2.3.4.5. } |

| 3 | 1 | 2 | 1 | Nível | nivel.php | {5,6,7,8,9, } |

| 3 | 1 | 2 | 11 | Grau Parentes | grau.php | {0,0,1,0,1} |

+--------------------------------------------------------------------------------------------------------------------------+

Menuprincipal.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
<?php
// Menupricipal.php (START na sessão) -------------------------------------------------------------------------------------------------------------------------------
session_start();
if (!isset($_SESSION['login']) and !isset($_SESSION['senha']) and !isset($_SESSION['nome']))
{
//se estás a verificar que estas entradas não estão definidas, não precisas de fazer o unset de seguida, apenas redireccionar o utilizador.​
header('location:index.php');
}
$login = $_SESSION['login'];
$senha = $_SESSION['senha'];
$nome = $_SESSION['nome'];
$operacao = $_SESSION['per_operacao'];
//-------------------------------------------------------------------------------------------------------------------------------------------------
// Mostrando Nome do Usuario logado
echo "<br><br><br><br><br><br><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<i>Seja bem vindo $nome !";
?>
<head>
<?php
include ("mentemp.php"); // Gera arquivos temporarios para configuração do Menu
?>
<?php
include ("_css/menuStly.css"); // Configura Estilo
?>
<meta charset="UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="_css/style.css"/>
<script src="http://code.jquery.com/jquery-latest.min.js"type="text/javascript"></script>
<script src="script.js"></script>
<title>Clíint - Sistema Clínica Integrada</title>
</head>
<body>
<table width="100%" style="position:absolute;" height="0%" cellspacing="0" cellpadding="0">
<tr>
<td valign="middle">
<div>
<form name="Sair" action="index.php" method="post" style="margin-left: 32cm">
<input type="image" src="imagens/Botao-Sair.JPEG" name="sub" style="margin-top: 7cm"/>
</form>
</div>
</td>
</tr>
</table>
<ul class="menu">
<?php
$seleciona_grupo = pg_query("SELECT * FROM Menu_grupo ORDER BY id_setor ASC"); // Lendo tabela "Menu_grupo, exibindo Menu de Grupo (ok)
while($ln = pg_fetch_array($seleciona_grupo)) {
$idgpo = $ln['id_setor'];
?>
<li><a href=" MenuPrincipal.php"><?php echo $ln['set_descricao'];?></a>
<ul class="submenu-1">
<?php
$seleciona_modulo = pg_query("SELECT * FROM Menu_modulo WHERE id_setor = '$idgpo'"); // Lendo tabela "Menu_modulo", exibindo Menu Modulo ( ok)
if(pg_num_rows($seleciona_modulo) == 0) {
} else {
while($lSub = pg_fetch_array($seleciona_modulo)) {
$idmod = $lSub['id_modulo'];
?>
<li><a href="MenuPrincipal.php"><?php echo $lSub['mod_descricao'];?></a>
<ul class="submenu-2">
<?php
$seleciona_rotina = pg_query("SELECT * FROM Menu_rotina WHERE id_modulo = '$idmod'"); //lendo a tabela "Menu_rotina"
if(pg_num_rows($seleciona_rotina) == 0) {
} else {
while($sSub = pg_fetch_array($seleciona_rotina)){ // loop na tabela "Menu_rotina" e exibindo a operacao localizada (ok)
$_SESSION['per_operacao']=$sSub['per_operacao'];
$operacao=$_SESSION['per_operacao'];
echo($_SESSION['per_operacao']); // Aqui o conteúdo é 1.2.3.4.5 ( esta correto )
?>
<li> <a href="<?php echo $sSub['per_pagina']?>"> <?php echo $sSub['gpo_descricao'];?></a>
<?php }?>
</li>
<?php }?>
</ul>
<?php }?>
</li>
<?php }?>
</ul>
<?php }?>
</li>
</ul>
</body>
</html>
menusuario.php (só coloquei o necessário )
<!DOCTYPE HTML>
<?php
// START na sessão ------------------------------------------------------------------------------------------------------------
session_start();
print_r($_SESSION);
if (isset($_SESSION['per_operacao'])) {
$operacao = $_SESSION['per_operacao'];
} else {
$_SESSION['per_operacao'] = $operacao;
}
echo($_SESSION['per_operacao']); // E esta trazendo "0,0,1,0,1" ( esta errado )
?>
<?php
function __autoload($class_name){
require_once '/classes/' . $class_name . '.php';
}
//--------------------------------------------------------------------------------------------------------------------------------
?>
<?php
error_reporting(0);
?>
<html land="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Administração de Usuários</title>
<meta name="description" content="" />
<meta name="author" content=""/>
<link rel="stylesheet" href="_css/bootstrap.css" />
<link rel="stylesheet" href="_css/style.css" />
<script type="text/javascript" src="js/jQuery.js"></script>
<script type="text/javascript" src="js/bootstrap.js"></script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<script>
function mostra(id){
if(document.getElementById(id).style.display == 'block'){
document.getElementById(id).style.display = 'none';
document.getElementById('b'+id).value="Listar Todos";
}else{ document.getElementById(id).style.display = 'block';
document.getElementById('b'+id).value="Ocultar Todos";
}
}
</script>
</head>
<body>

Link para o comentário
Compartilhar em outros sites

  • 0

Boa Tarde a todos

Estou precisando mesmo de muita ajuda, pois não consigo ver onde estou errando, e o projeto
esta parado por conta disso.

Imagine que o "MenuPrincipal.php" tem no print_r($_SESSION) "{1.2.3.4.5}" imediatamente antes de acessar o
"admusuario.php" que esta recebendo errado e mostrando print_r($_SESSION) "{0.1.0.1.0}".

já tentei de tudo, estou a dias pesquisando, mas sem resposta.

Se você puder me ajudar, fico muitissimo agradecido

Adalberto

Link para o comentário
Compartilhar em outros sites

  • 0

<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>

Olá Adalberto.

Aconselho a utilização da tag de código tornar o código mais perceptível. Então vejamos:

//menu.php
<?php 
   session_start();
   if (!isset($_SESSION['login']) and !isset($_SESSION['senha']) and !isset($_SESSION['nome'])) 
   {
        //se estás a verificar que estas entradas não estão definidas, não precisas de fazer o unset de seguida, apenas redireccionar o utilizador.​
	header('location:index.php');
   }    
   $login    = $_SESSION['login'];
   $senha    = $_SESSION['senha'];
   $nome     = $_SESSION['nome'];
   $operacao = $_SESSION['per_operacao'];   
?>
<html>
  <head></head>
  <body>		   
      <ul class="submenu-2">   
	<li><a href="MenuPrincipal.php"><?php echo $lSub['mod_descricao'];?></a></li> 	
	<?php   
            $seleciona_rotina = pg_query("SELECT * FROM Menu_rotina WHERE id_modulo = '$idmod'");  
            if (pg_num_rows($seleciona_rotina) > 0) { 
               while($sSub = pg_fetch_array($seleciona_rotina)) {
                   $_SESSION['per_operacao']=$sSub['per_operacao'];
                   echo($_SESSION['per_operacao']);     // ( conteúdo: 1.2.3.4.5 )
        ?> 
        <li>
	   <a href="<?php echo $sSub['per_pagina']?>"><?php echo $sSub['gpo_descricao'];?></a>    
	</li>
	<?php } //while ?>
      </ul>
 <?php } //if ?>		
 </body>
</html>

Tentei estruturar melhor o código, vê se as alterações fazem sentido para a lógica que estás a seguir. Se possível, descreve o que pretendes obter ao certo pois também achei um pouco confuso como diz o MTavares.

Fiz as devidas alterações sugeridas mas não houve efeito,

ainda estou tentando resolver. Obrigado pela atenção.

Adalberto

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,1k
    • Posts
      651,7k
×
×
  • Criar Novo...