Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Carcleo

[Resolvido] Sessões com register_globals off

Recommended Posts

Pode-se e deve-se usar com register_globals off

 

$_SESSION['nome_do_indice'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, onde estou errando?

<?php
if((isset($_GET["acao"]))and ($_GET["acao"]=="login"))
{
		   $user_string ="select 
							 id_admin, 
							 nome_admin,
							 usuario_admin,
							 bloqueio_admin 
						  from 
							 admin 
						  where 
							 usuario_admin = '".$_POST['usuario']."' and
							 senha_admin = '".$_POST['senha']."'"
							 ;
		   try{
				 $user = $conexao->query($user_string);
				 if($user->num_rows!=0)
				 {
					list($id_admin, $nome_admin, $usuario_admin, $bloqueio_admin)=$user->fetch_row();
					if ($bloqueio_admin == "s") 
					{ 
							echo "<script>document.location='?erroadmin=usuário bloqueado'</script>";
					}
					else {
						    $bloqueio_administrador=$bloqueio_admin;
						    $nome_administrador=$nome_admin;
						    $sessaologinadministrador=$id_admin;

							session_register("bloqueio_administrador");
							session_register("nome_administrador");
							session_register("sessaologinadministrador");

							echo "<script>document.location='inicio.php'</script>";
						 }
				 }
				 else
				 {
					  echo "<script>document.location='?erroadmin=usuário inválido ou senha não confere'</script>";
				 }

			  }catch(Exception $e) 
			  {
				  echo $e->getMessage();
			  }
}
?>

Esse arquivo tem um session_start() na primeira linha

E estou validando assim:

<?php
 if(!isset($_SESSION["sessaologinadministrador"]))
 {
  echo "<script>document.location='index.php?erroadmin=Você não esta logado. Por favor faça Login'</script>";
 }
 else
 { 
     if((isset($_GET["acao"]))and ($_GET["acao"]=="logout"))
  {
	  session_destroy();
         echo "<script>document.location='index.php?erroadmin=Você não esta logado. Por favor faça Login'</script>";
  }
     echo "<div align=\"center\"><img src=\"figuras/logo_administracao.png\"></div>"; 
 }
?>

Tambem com session_start() na primeira linha

Compartilhar este post


Link para o post
Compartilhar em outros sites

após o session_start(); verifique o que aparece na sessão com esse código

 

echo '<pre>';
var_dump( $_SESSION ); 
echo '</pre>';

Compartilhar este post


Link para o post
Compartilhar em outros sites

array(3) {
 ["bloqueio_administrador"]=>
 NULL
 ["nome_administrador"]=>
 NULL
 ["sessaologinadministrador"]=>
 NULL
}

 

Obs.: register_global = off

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perceba que os valores estão nulos.

 

Substitua as linhas

session_register("bloqueio_administrador");
session_register("nome_administrador");
session_register("sessaologinadministrador");

 

por:

$_SESSION['bloqueio_administrador'] = $bloqueio_administrador;
$_SESSION['nome_administrador'] = $nome_administrador;
$_SESSION['sessaologinadministrador'] = $sessaologinadministrador;

A partir do PHP 4.1 é recomendável utilizar $_SESSION.

 

Novamente debug a session:

echo '<pre>';
var_dump( $_SESSION ); 
echo '</pre>';

 

E também, dessas variáveis:

echo '<pre>';
var_dump($id_admin, $nome_admin, $usuario_admin, $bloqueio_admin);
echo '</pre>';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, resolvido.

 

Fiz um arquvo à parte para o logon.

 

Login e Logof em um mesmo arquivo:

logon.php

<?php 
 session_start();
 header  ("Content-Type: text/html; charset=utf-8"); // Precisa ficar aqui senão dá problema com o arquivo de classe conexão
 include ("../global/config/conexao.php");
?>
<?php
     if((isset($_GET["acao"]))and ($_GET["acao"]=="logout"))
  {	
	  session_destroy();
         echo "<script>document.location='index.php?erroadmin=Você não esta logado. Por favor faça Login'</script>";
  }
?>
<?php
if((isset($_GET["acao"]))and ($_GET["acao"]=="login"))
{
		   $user_string ="select 
							 id_admin, 
							 nome_admin,
							 usuario_admin,
							 bloqueio_admin 
						  from 
							 admin 
						  where 
							 usuario_admin = '".$_POST['usuario']."' and
							 senha_admin = '".$_POST['senha']."'"
							 ;
		   try{
				 $user = $conexao->query($user_string);
				 if($user->num_rows!=0)
				 {
					list($id_admin, $nome_admin, $usuario_admin, $bloqueio_admin)=$user->fetch_row();
					if ($bloqueio_admin == "s") 
					{ 
							echo "<script>document.location='?erroadmin=usuário bloqueado'</script>";
					}
					else {
                               $_SESSION['bloqueio_administrador'] = $bloqueio_admin;
						    $_SESSION['nome_administrador'] = $nome_admin;
						    $_SESSION['sessaologinadministrador'] = $id_admin;

							echo "<script>document.location='inicio.php'</script>";
						 }
				 }
				 else
				 {
					  echo "<script>document.location='?erroadmin=usuário inválido ou senha não confere'</script>";
				 }

			  }catch(Exception $e) 
			  {
				  echo $e->getMessage();
			  }
}
?>
<?php $conexao->close(); ?>
[code]
E, no form do login:
[code]
<div id="div_login">
 <h1> </h1>
 <h2>Login Administrativo</h2>
 <h1> </h1>
 <?php 
if(isset($_GET["erroadmin"]))
{
	echo "<font color='red'>Erro: ".$_GET["erroadmin"]."</font>";
}
 ?>
 <h1> </h1>
 <form name="form_login" id="form_login" action="logon.php?acao=login" method="POST">
   <label for="usuario">Usuário: </label>
     <input type="text" name="usuario" id="usuario" size="20px" maxlength="4" tabindex="1" />
   <label for="senha">Senha: </label>
     <input type="password" name="senha" id="senha" size="20px" maxlength="4" tabindex="2" /> 
     <input type="button" id="enviar" value="Logar" style="width:100px" onclick="valida_login();" tabindex="3" />
 </form>
</div>

Funcionando redondinho.

Obrigado pela orientação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.