Jump to content

Session PHP


M3gNa

Recommended Posts

Boas pessoal. Teho um problema nas sessões do meu site. Eu inicio sessão e ele grava os dados da sessão navego pelas páginas etc. Depois se fizer logout e aceder a uma página aquilo mostra como se a sessão estivesse activa e pelos vistos está.

Já dei voltas e voltas e não estou a ver onde é o problema  :confused:

Já aconteceu a alguém isto? Estou a usar o EasyPHP 5.3.6.

Link to post
Share on other sites

Embora pareça impossivel, não resolveu o problema!  :confused:

Continua a ter o mesmo problema. Login->Sessão iniciada->Navegação->Logout->Sessão activa na mesma  :dontgetit:

Link to post
Share on other sites

Eu não apanho muito de PHP, sou mais virado para linguagens tipo vb c++ c# etc...

Mas tenho de fazer uma trabalho para a disciplina :/

O meu login é assim

<?php
     if (!isset($_SESSION))
     {
     session_name("sessao");
     ob_start();
     session_start();
     }
?>
<html>
<head>
       <meta http-equiv="content-style-type" content="text/css">
       <link rel="stylesheet" href="style.css" type="text/css" media="screen"/>
</head>
<body>
        <?php
           require_once('ligarbd.php');
	   
	   $email=$_POST['email'];
           $password=$_POST['password'];
	   
           $consulta="SELECT * FROM utilizadores WHERE email='".$email."' AND password='".$password."' ";
           $resultado=mysql_query($consulta);
           $registo=mysql_fetch_array ($resultado);
           $nregistos=mysql_num_rows($resultado);
	   
	   $primeironome=$registo['primeironome'];
	   $ultimonome=$registo['ultimonome'];
	   
           if ($nregistos == 1)
           {
	   $_SESSION['grau'] = '2';
	   $_SESSION['primeironome'] = $primeironome;
	   $_SESSION['ultimonome'] = $ultimonome;
           require_once('inicio.php');
           }
           else
           {
           require_once('index.php');
        ?>
        <script>
        window.alert("Dados Incorrectos")
        </script>
        <?php
           }
        ?>
                        
</body>
</html>

Depois a página inicio é esta:

<?php
     if (!isset($_SESSION))
     {
     session_name("sessao");
     ob_start();
     session_start();
     }

if ($_SESSION['grau']!='2') {
header("Location: index.php");
} else {
?>
<html>
<head>
    <meta http-equiv="content-style-type" content="text/css">
    <link rel="stylesheet" href="style.css" type="text/css" media="screen"/>

</head>
<body>
<div id="container">
<div id="header">
</div>
<div id="navigation">
	<ul align=center>
		<li><a href="#">Home</a></li>
		<li><a href="#">Promoções</a></li>
		<li><a href="#">PC</a></li>
		<li><a href="#">Xbox 360</a></li>
		<li><a href="#">Playstation 3</a></li>
		<li><a href="#">Nintendo Wii</a></li>
		<li><a href="contacto.php">Contacte-nos</a></li>
	    <li><?php if ($_SESSION['grau'] =='2') { ?> <a href="logout.php">Logout</a> <?php } ?></li>
	</ul>
</div>
<div id="content-container">
	<div id="content">
		<h2>
			Page heading
		</h2>
		<p>
			Lorem ipsum dolor sit amet consect etuer adipi scing elit sed diam nonummy nibh euismod tinunt ut laoreet dolore magna aliquam erat volut. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
		</p>
		<p>
			Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
		</p>
		<p>
			Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
		</p>
	</div>
	<div id="aside">
		<br />
        <table border="0" width="100%" >
			<tr>
				<td align=right><?php include 'menubemvindo.php'; ?></td>
			</tr>
		</table>
	</div>
	<div id="footer">
		Copyright © Gaming Hardcore, 2011
	</div>
</div>
</div>
<!-- Fim de Verificar a Sessão -->
<?php } ?>
<!------------------>
</body>
</html>

Se quiserem passo o site compactado com a base de dados. É um problema que ando às voltas e voltas. Nem a minha stora consegue descobrir o que é :/

Link to post
Share on other sites

Quando fazes o isset($_SESSION) , não estás a especificar que sessão é que deve ser testada .

Por exemplo, crias uma variável de sessão $_SESSION['INI'] que está a 1 ou a 0, conforme o utilizador está logado ou não, respectivamente .

Aliás , se fosse a ti , criava um ficheiro de validação de sessão que é chamado em cada página para testar se o utilizador está logado ou não .

<?php include("assinatura.txt"); ?>

Link to post
Share on other sites

Fiquei confuso novamente :confused:

yoda, qual a parte que devo remover para não estar sempre a iniciar sessão. É que o mesmo se passa na página contacto.

<?php
     if (!isset($_SESSION))
     {
     session_name("sessao");
     ob_start();
     session_start();
     }
?>

<html>
<head>
    <meta http-equiv="content-style-type" content="text/css">
    <link rel="stylesheet" href="style.css" type="text/css" media="screen"/>
<script>
	function validar(form) {
		var msg = "Os campos marcados com * são de preenchimento obrigatório.";
		if (form.pnome.value=="" || form.unome.value=="" || form.email.value=="" || form.comentario.value=="") {
			window.alert(msg);
			return(false);
			}
	}
</script>
</head>
<body>
<div id="container">
<div id="header">
</div>
<div id="navigation">
	<ul align=center>
		<li><?php if ($_SESSION['grau'] == '2') { ?> <a href="inicio.php">Home</a> <?php } else { ?> <a href="index.php">Home</a> <?php } ?></li>
		<li><a href="#">Promoções</a></li>
		<li><a href="#">PC</a></li>
		<li><a href="#">Xbox 360</a></li>
		<li><a href="#">Playstation 3</a></li>
		<li><a href="#">Nintendo Wii</a></li>
		<li><a href="contacto.php">Contacte-nos</a></li>
		<li><?php if ($_SESSION['grau'] == '2') { ?> <a href="logout.php">Logout</a> <?php } ?></li>
	</ul>
</div>
<div id="content-container">
	<div id="content">
		<form name="contactform" method="post" action="enviarcomentario.php" onSubmit="return validar(contactform)">
			<table border ="0" width="450px">
				</tr>
				<tr>
					<td valign="top">
						<label for="first_name">Primeiro Nome *</label>
					</td>
					<td valign="top">
						<input  type="text" name="pnome" maxlength="50" size="42">
					</td>
				</tr>

				<tr>
					<td valign="top"">
						<label for="last_name">Último Nome *</label>
					</td>
					<td valign="top">
						<input  type="text" name="unome" maxlength="50" size="42">
					</td>
				</tr>
				<tr>
					<td valign="top">
						<label for="email">Endereço E-mail *</label>
					</td>
					<td valign="top">
						<input  type="text" name="email" maxlength="80" size="42">
					</td>

				</tr>
				<tr>
					<td valign="top">
						<label for="telephone">Número Telemóvel </label>
					</td>
					<td valign="top">
						<input  type="text" name="telemovel" maxlength="9" size="9">
					</td>
				</tr>
				<tr>
					<td valign="top">
						<label for="comments">Comentário *</label>
					</td>
					<td valign="top">
					<textarea  name="comentario" maxlength="1000" cols="33" rows="6"></textarea>
					</td>

				</tr>
				<tr>
					<td colspan="2" style="text-align:right">
						<input type="image" src="imagens/butaocontacto.png" value="Enviar"> </a>
					</td>
				</tr>
		</table>
	</form>
	</div>
	<div id="aside">
	<?php if ($_SESSION['grau'] == '2') { ?> 
		<table border="0" width="100%" >
			<tr>
				<td align=right><?php include 'menubemvindo.php'; ?></td>
			</tr>
		</table>
	<?php } else { ?> 
	<?php include 'menulogin.php'; ?>
	<?php } ?>
	</div>
	<div id="footer">
		Copyright © Gaming Hardcore, 2011
	</div>
</div>
</div>
</body>
</html>

kareka a validação que estás a dizer é tipo esta né?

<?php if ($_SESSION['grau'] == '2') { ?> 
		<table border="0" width="100%" >
			<tr>
				<td align=right><?php include 'menubemvindo.php'; ?></td>
			</tr>
		</table>
	<?php } else { ?> 
	<?php include 'menulogin.php'; ?>
	<?php } ?>

Link to post
Share on other sites

Não há pressa  :confused: Eu espero até ao final do dia. Thanks

yoda, obrigado, mas agora da-me erro na variável da sessão grau.

Notice: Undefined index: grau in C:\Program Files (x86)\EasyPHP-5.3.6.0\www\contacto.php on line 26

Notice: Undefined index: grau in C:\Program Files (x86)\EasyPHP-5.3.6.0\www\contacto.php on line 33

Notice: Undefined index: grau in C:\Program Files (x86)\EasyPHP-5.3.6.0\www\contacto.php on line 93

Pelos vistos ele não consegue sacar a varivel grau e verificar se a sessão está activa ou não. Isto tudo na página contacto.

Link to post
Share on other sites

Tens que definir a variável grau por default , caso não exista sessão para iniciar .

Entendi o que disseste, mas não sei como fazer  :confused:

Se pudesses dizias-me como +/-

Link to post
Share on other sites

Obrigada yoda. O notice desapareceu  :D

Mas surgiu um outro problrma  :confused:

Agora faço login, feito, ele acede a página inicio com a sessão activa pelos vistos. Mas Quando muda para a página contacto puff, sessão foi ao ar pelo que parece  😲.

Será que aqueles notices não terão a ver com isso? É que aquilo parece erro na variável grau que não encontra e chama pelo modulo menulogin.php.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.