Jump to content
fantasma

Login nao faz set às variaveis de sessao?

Recommended Posts

fantasma

Boas. Estou a ter um problema com o meu backoffice. Sempre que clico numa area reservada do backoffice, este encaminha-me sempre para a pagina de login. É muito provavelmente um problema nas variaveis de sessao mas, ja tentei tudo e nao consigo por a funcionar. Mais, se eu fizer login para a area protegida que clico (por exemplo gestao de noticas) ele manda-me para o form de login. Faço login e depois se clicar no index do backoffice ele vai para la na boa...

O script de login e este

<?php 
ob_start();
session_start();


include 'includes/bdconn.php';


function protect($string){
$string = trim(strip_tags(addslashes($string)));
return $string;
}


if($_POST['submit'])
{
echo $username = protect($_POST['username']);
echo $password = protect($_POST['password']);


		if(!$username || !$password){				
			header('Location:http://localhost/ArtZende/login.php');
		}else{

			$query= mysql_query("SELECT id,username, password FROM usernames WHERE username='$username' AND password='$password'");
			if(!$num = mysql_num_rows($query) == 1)
			{

				header('Location:http://localhost/ArtZende/login.php');
			}
			else
			{
				$row = mysql_fetch_assoc($query);

				$_SESSION['sid'] = session_id();
				$_SESSION['uid'] = $row['id'];

				$_SESSION['utilizador'] = $row['username'];

				header('Location: http://localhost/ArtZende/backoffice.php');

			}
		}
}
else
	header('Location:http://localhost/ArtZende/login.php');

ob_end_flush();

?>

E em todas as páginas protegidas tenho


<?php session_start(); //Linha 1 do ficheiro php

if(!isset($_SESSION['sid']))
{
	header('Location:http://localhost/ArtZende/login.php');
}
echo $_SESSION['uid'];
session_destroy();
?>

Alguém me pode ajudar a perceber o que se passa?

Share this post


Link to post
Share on other sites
brunoais

Preciso de saber o conteúdo de:

$_POST['submit']

$_POST['username']

$_POST['password']

protect($_POST['username'])

protect($_POST['password'])

mysql_num_rows($query)

mysql_num_rows($query) == 1

$num = mysql_num_rows($query) == 1

session_id()

De preferência usando o var_dump(). Posso acabar por não precisar de todos mas assim já tenho um bom sítio por onde começar a ajuda

Olhando para uma outra parte...


<?php session_start(); //Linha 1 do ficheiro php

if(!isset($_SESSION['sid']))
{
	header('Location:http://localhost/ArtZende/login.php');
}
echo $_SESSION['uid'];
session_destroy();
?>

Isto é para o logout, certo?


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
fantasma

function protect($string){
$string = trim(strip_tags(addslashes($string)));
return $string;
}


if($_POST['submit'])
{
echo $username = protect($_POST['username']);
echo $password = protect($_POST['password']);


		if(!$username || !$password){				
			header('Location:http://localhost/ArtZende/login.php');
		}else{

			$query= mysql_query("SELECT id,username, password FROM usernames WHERE username='$username' AND password='$password'");
			if(!$num = mysql_num_rows($query) == 1)
			{

				header('Location:http://localhost/ArtZende/login.php');
			}
			else
			{
				$row = mysql_fetch_assoc($query);

				$_SESSION['sid'] = session_id();
				$_SESSION['uid'] = $row['id'];

				$_SESSION['utilizador'] = $row['username'];

				var_dump($_POST['submit'],$username, $num,$row, $_SESSION['sid'],$_SESSION['uid'],$_SESSION['utilizador']);

				//header('Location: http://localhost/ArtZende/backoffice.php');

			}
		}
}
else
	//header('Location:http://localhost/ArtZende/login.php');

ob_end_flush();

?>

Conteudo do var_dump

admin adminstring(5) "Login" string(5) "admin" bool(true) array(3) { ["id"]=> string(1) "1" ["username"]=> string(5) "admin" ["password"]=> string(5) "admin" } string(26) "5vuutbf86kas9jid9kgtdpvbr5" string(1) "1" string(5) "admin"

Obrigado :(

EDIT: Esqueci-me de mencionar. Aquele pequeno pedaço de codigo é o que colo em todas as paginas que quero proteger. Não é para o logout. Está errado? Foi o que vi na pesquisa que fiz... se houver alguma alternativa melhor agradeço que me apontes nesse sentido... ;)

Share this post


Link to post
Share on other sites
brunoais

EDIT: Esqueci-me de mencionar. Aquele pequeno pedaço de codigo é o que colo em todas as paginas que quero proteger. Não é para o logout. Está errado? Foi o que vi na pesquisa que fiz... se houver alguma alternativa melhor agradeço que me apontes nesse sentido... ;)

Esse código está errado. O que ele faz é executar o logout da sessão ativa. Tens que usar um código que verifique a sessão e nunca uses o session_destroy() a n ser q queiras destruir uma sessão (executar o logout).


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
lordfokas

Basicamente, estás a por tudo nas sessões de forma correcta, mas mal preenches as sessões, destrói-las (session_destroy).

O que acontece é que depois quando as vais tentar usar elas estão vazias, porque tu destruiste o que estava lá dentro.

Share this post


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.