Ir para conteúdo

POWERED BY:

Arquivado

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

MiguelTb

[Resolvido] Efetuar login na mesma página de login.

Recommended Posts

Eu não sei o que fiz praticamente não mexi em nada e agora ele está retornando sempre isso:

array(3) { ["email"]=> &NULL ["nome"]=> &NULL ["nivel"]=> &NULL }

 

Valor nulo pras 3 session que ele abre em login.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

poste o trecho em que você cria as sessions.

 

assim cara, qndo for 'testar realmente', feche o browser, e abra novamente.

para não se perder com 'sujeiras' na sessão. (tem um plugin do firefox que limpa sessions, web developer)

Compartilhar este post


Link para o post
Compartilhar em outros sites

William, o trecho que cria as sessões:

 

} else {
       // Salva os dados encontados na variável $resultado
       $resultado = mysql_fetch_array($query);

       // Se a sessão não existir, inicia uma
       if (!isset($_SESSION)) session_start();

       // Salva os dados encontrados na sessão
       $_SESSION['email'] = $resultado['email'];
       $_SESSION['nome'] = $resultado['nome'];
       $_SESSION['nivel'] = $resultado['nivel'];
	header("Location: http://www.revistahei.net/2011/");           

       // Redireciona o visitante

}
?>

 

Mas to achando que está faltando algo no index.php, as sessões ficam armazenadas onde? no browser?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas to achando que está faltando algo no index.php, as sessões ficam armazenadas onde? no browser?

no servidor

 

faz o seguinte:

$resultado = mysql_fetch_array($query);
echo '<pre>';
var_dump( $resultado );

lembra da 'prática' do var_dump(), pois é.

Se acostume com ele, e aprenda a usar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu esse erro:

 

 

bool(false)

 

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/revistahei.net/www/2011/admin/login.php:34) in /home/revistahei.net/www/2011/admin/login.php on line 38

 

Warning: Cannot modify header information - headers already sent by (output started at /home/revistahei.net/www/2011/admin/login.php:34) in /home/revistahei.net/www/2011/admin/login.php on line 44

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pronto, o fetch não está ocorrendo.

depois que você chama uma vez, você 'gasta' uma linha do retorno, e olhe oque você fez:

/*
if (mysql_num_rows($query) != 1) {
       // Mensagem de erro quando os dados são inválidos e/ou o usuário não foi encontrado
       header ("Location: fail.php"); exit;
} else {
       // Salva os dados encontados na variável $resultado
       $resultado = mysql_fetch_assoc($query);
}
*/
if (mysql_num_rows($query) != 1) {
       // Mensagem de erro quando os dados são inválidos e/ou o usuário não foi encontrado
       header ("Location: fail.php"); exit;
} else {
       // Salva os dados encontados na variável $resultado
       $resultado = mysql_fetch_array($query);

 

você tenta chamar 2 vezes sem a menor necessidade!!! além de duplicar o if/else também desnecessariamente.

exclui o primeiro bloco (o que eu deixei dentro do comentário)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeito!

 

Cara desculpa mesmo o encomodo. Você me ajudou bastante.

 

Vlw man!

 

[Resolvido] =D

 

Código completo pra quem quiser:

 

index.php

<?php
	  if(!isset($_SESSION['nivel'])){ 
	  echo "Você não está logado!";
 }
 else
 {
 if( $_SESSION['nivel'] == "1" )
      echo 'você é leitor!';
    else if( $_SESSION['nivel'] == "2" )
      echo 'você é colunista!';
   else if( $_SESSION['nivel']== "3" )
      echo 'você é seção!';
   	else if( $_SESSION['nivel']== "4" )
     	echo 'você é Administrador Geral!';
}
?>

 

login.php

<?php
ini_set('display_errors', true);
error_reporting(E_ALL);
// Verifica se houve POST e se o usuário ou a senha é(são) vazio(s)
if (!empty($_POST) AND (empty($_POST['email']) OR empty($_POST['senha']))) {
       header("Location: index.php"); exit;
}

// Tenta se conectar ao servidor MySQL
mysql_connect('localhost', 'root', 'senha') or trigger_error(mysql_error());
// Tenta se conectar a um banco de dados MySQL
mysql_select_db('bancodedados') or trigger_error(mysql_error());

$email = mysql_real_escape_string($_POST['email']);
$senha = mysql_real_escape_string($_POST['senha']);

// Validação do usuário/senha digitados
$sql = "SELECT `email`, `nome`, `nivel` FROM `tabela` WHERE (`email` = '". $email ."') AND (`senha` = '". $senha."') LIMIT 1";
$query = mysql_query($sql) or die ( mysql_error() );
if (mysql_num_rows($query) != 1) {
       // Mensagem de erro quando os dados são inválidos e/ou o usuário não foi encontrado
       header ("Location: fail.php"); exit;
} else {
       // Salva os dados encontados na variável $resultado
       $resultado = mysql_fetch_array($query);

       // Se a sessão não existir, inicia uma
       if (!isset($_SESSION)) session_start();

       // Salva os dados encontrados na sessão
       $_SESSION['email'] = $resultado['email'];
       $_SESSION['nome'] = $resultado['nome'];
       $_SESSION['nivel'] = $resultado['nivel'];
	header("Location: http://www.revistahei.net/2011/");           

       // Redireciona o visitante

}
?>

 

Vlwww

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeito!

 

Cara desculpa mesmo o encomodo. Você me ajudou bastante.

 

Vlw man!

 

[Resolvido] =D

tranquilo cara, só espero que você tenha aprendido algo, além de só ter resolvido esse script

 

Adote todas as 'práticas' que te fiz seguir, logo logo, você resolverá teus problemas por você mesmo, e poderá ajudar outros usuários.

Tendo dúvidas volte aqui, mas não antes de debugar.. você verá que prática incrível.

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.