Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia,estou com um problema em um sistema de login que ao final ele deveria direcionar para a página painel mas não direciona.
eu percebi que ao atualizar á pagina ele se loga pois muda o menu mas não direciona o usuario.
Liberei todos os erros para tentar descobrir e o erro que a tela mostra são esses abaixo:
Notice: A session had already been started - ignoring session_start() in /home/afiliados/public_html/verifica_usuario.php on line 6 Notice: Undefined variable: sobrenome in /home/afiliados/public_html/verifica_usuario.php on line 96 Warning: Cannot modify header information - headers already sent by (output started at /home/afiliados/public_html/index.php:185) in /home/afiliados/public_html/verifica_usuario.php on line 108
O código que uso é esse:
<?php
session_start(); // Inicia a session
$usuario = $_POST['usuario'];
$senha = $_POST['senha'];
if((!$usuario) || (!$senha)){
echo "Por favor, todos campos devem ser preenchidos! <br /><br /><br /><br /><center><a href='?page=logar'>Voltar ao Site</a></center>";
include "?page=logar";
}
else{
$sql = mysql_query("SELECT * FROM usuarios WHERE usuario='{$usuario}' or email='{$usuario}' AND senha='{$senha}' AND ativado='1'");
$login_check = mysql_num_rows($sql);
if($login_check > 0){
while($row = mysql_fetch_array($sql)){
foreach( $row AS $key => $val ){
$$key = stripslashes( $val );
}
$_SESSION['usuario_id'] = $usuario_id;
$_SESSION['nome'] = $nome;
$_SESSION['sobrenome'] = $sobrenome;
$_SESSION['email'] = $email;
$_SESSION['nivel_usuario'] = $nivel_usuario;
mysql_query("UPDATE usuarios SET data_ultimo_login = now() WHERE usuario_id ='{$usuario_id}'");
header("Location: ?page=painel");
}
}
else{
echo "Você não pode logar-se! Este usuário e/ou senha não são válidos!<br />
Por favor tente novamente!<br /><br /><br /><center><a href='[http://redeafiliados.com/?page=logar'>Voltar](http://redeafiliados.com/?page=logar) ao Site</a></center>";
include "?page=logar";
}
}
?>Efetuei as alterações,agora o erro que mostra é esse
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/afiliados/public_html/index.php:251) in /home/afiliados/public_html/verifica_usuario.php on line 7 Notice:
Cannot modify header information - headers already sent by (output started at /home/afiliados/public_html/index.php:251) in /home/afiliados/public_html/verifica_usuario.php on line 72
A função header() só pode ser chamada se ela for o primeiro output do arquivo.
É o mesmo erro que descrevo aqui, mesmo link que passei no post anterior
É o mesmo erro que descrevo aqui, mesmo link que passei no post anterior
Verifiquei seu post,fiz uma limpeza no código tentando corrigir mas infelizmente não mudou nada.
Eu alterei o header location pela tag
echo "<meta HTTP-EQUIV='refresh' CONTENT='1;URL=http://redeafiliados.com/?page=painel'>";
Porém percebi que em meu computador ele está acessando normalmente a página painel como se estivesse logado.
mas quando acesso de outro pc ele acessa como se estivesse deslogado.
Alguém saberia me ajudar?
?
Você deve estar chamando session_start mais de uma vez ou está usando funções de cabeçalho depois de saída HTML. Veja mais detalhes aqui: http://rberaldo.com.br/as-mensagens-de-erros-mais-comuns-do-php/#header
Outros detalhes:
Não existe isto:
include "?page=logar";
Deve-se incluir um arquivo, não uma query string
funções mysql_* estão obsoletas desde o PHP 5.5 e serão removidas do PHP em breve. Prefira usar MySQLi ou PDO. Veja mais aqui: http://www.ultimatephp.com.br/php-por-que-nao-utilizar-funcoes-mysql