0

Problema com sessão

criado por Mateus da Silva Pessanha em 20/10/2010 3:12pm
Pessoal,
Estou com o seguinte problema.

Tenho o arquivo comum a todas as páginas de conexão com o banco onde faço o start da session:

conexao.php

<?php
$con = mysql_connect('xxx','xxx','xxx');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db('xxx', $con);
session_start();
?>

No arquivo index.php faço o login no portal.

index.php

<?php
session_start();
?>
<html>
<head>
<title></title>
<head>
<body>
<table>
<tr>
<td colspan='2' align='center'>Login</td>
</tr>
<form method='post' action='principal.php'>
<tr>
<td>Login:</td><td><input type='text' name='matricula' maxlength='10' size='10' /></td>
</tr>
<tr>
<td>Senha:</td><td><input type='password' name='senha' maxlength='32' size='10' /></td>
</tr>
<tr>
<td colspan='2' align='center'><input type='submit' value='Logar' /></td>
</tr>
</form>
</table>
</body>
</html>

Criei também um arquivo de sessão comum em todas as páginas que vou usar o valor que quero guardar da sessão.

sessao.php

<?php
session_cache_expire(10);
$cod_login = $_POST['matricula'];
$_SESSION['cod_login'] = $cod_login;
?>

Quando entro na primeira página, tudo funciona normalmente, mas quando entro nas outras páginas começo a perder o valor da sessão.

index.php

<?php
session_start();
?>
<html>
<head>
<title></title>
<head>
<body>
<table>
<tr>
<td colspan='2' align='center'>Login</td>
</tr>
<form method='post' action='principal.php'>
<tr>
<td>Login:</td><td><input type='text' name='matricula' maxlength='10' size='10' /></td>
</tr>
<tr>
<td>Senha:</td><td><input type='password' name='senha' maxlength='32' size='10' /></td>
</tr>
<tr>
<td colspan='2' align='center'><input type='submit' value='Logar' /></td>
</tr>
</form>
</table>
</body>
</html>

cadastro_login.php

<?php
include('conexao.php');
include('sessao.php');
?>
<html>
<head>
<title></title>
</head>
<body>
<table>
<tr>
<td valign='top'><?php include('menu.php'); ?></td>
<td>
<table border='1'>
<tr>
<td colspan='2' align='center'>Cadastro de Usuário</td>
</tr>
<form method='post' action='cadastro_login_2.php'>
<tr>
<td align='right'>Matricula:</td><td><input type='text' name='matricula' maxlength='10' size='10' /></td>
</tr>
<tr>
<td align='right'>Nome Completo:</td><td><input type='text' name='nome' maxlength='100' size='35' /></td>
</tr>
<tr>
<td align='right'>E-mail:</td><td><input type='text' name='email' maxlength='100' size='35' /></td>
</tr>
<tr>
<td align='right' valign='top'>Perfil:</td>
<td>
<?php
$result = mysql_query("SELECT * FROM depara_perfil where status = 0 order by cod_perfil");
while($row = mysql_fetch_array($result))
{
echo '<input type="radio" name="perfil" value="'.$row['cod_perfil'].'" />' .$row['cod_perfil'].' - '.$row['desc_perfil'].'<br />';
}
?>
</td>
</tr>
<tr>
<td align='right' valign='top'>Área:</td><td>
<?php
$result = mysql_query("SELECT * FROM depara_area where status = 0 order by desc_area");
while($row = mysql_fetch_array($result))
{
echo '<input type="radio" name="area" value="'.$row['cod_area'].'" />' .$row['desc_area'].'<br />';
}
?>
</td>
</tr>
<tr>
<td colspan='2' align='center'><input type='submit' value='Cadastrar Usuário' /></td>
</tr>
</form>
</table>
</td>
</tr>
</table>
</body>
</html>

menu.php

<body>
<ul id="primary-nav">
<?php

$result = mysql_query("SELECT * FROM tb_login WHERE cod_login='".$_SESSION['cod_login']."'");

if (!$result) {
echo 'Could not run query: ' . mysql_error();
exit;
}
$row = mysql_fetch_row($result);

$perfil = $row[1];
$area = $row[2];

if ($perfil==1) {
echo "<li class='menuparent'><a href='#'>Usuário</a>

  • <a href='cadastro_login.php'>Cadastrar</a>

  • <a href='alterar_login.php'>Alterar</a>


";
}
?>
<li class="menuparent"><a href="#">Job</a>

  • <a href="cadastro_job.php">Cadastrar</a>

  • <a href="alterar_job.php">Alterar</a>




</body>

Alguém saberia dizer como eu guardo o valor da sessão em todas as páginas?

Lista de Respostas:

0
20/10/2010 5:56pm
(~13 anos atrás)
Marcello Fumero respondeu:
Ola Mateus,

Veja se entendi sua situação e se posso lhe ajudar em algo...

Primeiramente no post da sua tela de login e senha voce chama uma pagina que verifica se existe o login cadastrado no BD, se tiver ele grava na variavel de sessão o login do respectivo ($_SESSION['cod_login'] = $_POST[cod_login];)...

Em todas as suas paginas coloque na primeira linha o comando session_start(); e chame uma pagina de conferencia onde nela ira verificar se a varialvel de sessão está preenchida ($_SESSION['cod_login']==""), do contrário ela redireciona para a pagina de login e senha...



Nova Resposta:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)