Bug ao iniciar uma sessão
Estou implementando no meu site o controle de sessões. Estou com dificuldades para sanar um bug que, ao carregar o site, o link para levar o visitante a página de login não encaminha corretamente o visitante a página de login. Veja:
<?PHP
include '../arquivos/funcoes.php';
echo($data)." | ";
session_start(); //início da sessão
if(! isset($_SESSION["autenticado"]) || $_SESSION["autenticado"] != TRUE)
{
/*O BUG ESTÁ NESTA PARTE - Sempre quando abro o navegador e acesso o meu site, o link que leva para
a página de login aponta para "/paginas/_login_usuarios.php" ao invés de "/meusite/paginas/_login_usuarios.php".
Só depois que eu acesso primeiro outra página é que o link encaminha para o endereço correto. Por exemplo,
se eu acessar "/meusite/paginas/html.php" e depois acessar a página principal, o link aponta corretamente para /meusite/index.php.
Acontece a mesma coisa com o link da imagem.*/
echo("<img src='../imagens/lock.png'>");
echo "<i> Usuário não registrado. Faça o seu login <a href='../paginas/_login_usuarios.php'><font color='#FFFFFF'>clicando aqui</font></a></i> ";
}
else
{
//Mostra o nome do usuário no topo das páginas
echo ("<img src='../imagens/user.png'><i><font color='#FFFF99'>"." ".$_SESSION['usuario'].", seja bem-vindo(a)!</i></font>");
}
?>
O código para a validação da sessão é:
<?PHP
$ip = getenv("REMOTE_ADDR"); //IP
$navegador = ($_SERVER['HTTP_USER_AGENT']); //Navegador
date_default_timezone_set('America/Sao_Paulo');
$data = date("Y/m/d"); //Data (formato americano)
$hora = date ("H:i"); //Hora
//Dados do servidor
$servidor = 'localhost';
$usuario = 'root';
$senha = '';
$banco = 'site_contatos';
$tabela = 'cadastros';
//Executa a conexão com o MySQL
$link = mysql_connect($servidor, $usuario, $senha) or die ('Não foi possível conectar: '.mysql_error());
//Seleciona o banco de dados
$select = mysql_select_db($banco);
if($_REQUEST["acao"] = "login") //se a variável "action" passada via URL for igual a "login"
{
$login = $_POST["login"];
$senha = $_POST["senha"];
//Verifica no banco se o login informado já está cadastrado
$buscar = mysql_query("SELECT nome, COUNT(*) AS total FROM cadastros WHERE login = '$login' AND senha = '$senha'");
$total = mysql_result($buscar,0,"total");
if ($total != 0)
{
$query = mysql_query("SELECT * FROM cadastros WHERE login = '$login' AND senha = '$senha'");
while ($l = mysql_fetch_array($query)) //percorre registros da tabela
{
$nome = $l["nome"]; //armazena o valor do campo nome que satisfaça as condições da query
}
session_start(); //inicio da sessão - caso o login e senha estejam corretos
$_SESSION["usuario"] = $nome; //armazena o nome do usuário
$_SESSION["autenticado"] = TRUE; //armazena autenticado como TRUE
header("Location: /site_criandoBits"); //redireciona para a página principal
}
else //caso a autenticação falhe...
{
header("Location: _avisoLogin.php"); //redirecionamento para página de aviso
}
}
else //caso a requisição falhe...
{
header("Location: _avisoLogin.php"); //redirecionamento para página de aviso
}
?>
Alguém aqui sabe identificar onde está o problema?
Desde já agradeço a qualquer ajuda.
Discussão (3)
Carregando comentários...