Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
Leandro, se eu fizer o que você propôs, quando eu, por exemplo, abrir outra página que não seja a principal o caminho vai ficar "'../meusite/meusite/paginas/_login_usuarios.php'". Resolvo o problema do redirecionamento pela página principal, mas deixo os demais redirecionamentos como "../meusite/meusite/paginas/_login_usuarios.php".
Está me dando nos nervos isso...
Pessoal, depois de muita dor de cabeça e noites mal dormidas (exagero! rs) consegui resolver o bug. Disponibilizei o código abaixo para ajudar quem esteja enfrentando problemas parecidos.
<?PHP
include '../arquivos/funcoes.php'; //chama o arquivo externo
echo($data)." | "; //mostra a data
session_start(); //início da sessão
//Validação do usuário para verificar se o mesmo está autenticado corretamente
//'iseet' serve para saber se uma variável existe
if(! isset($_SESSION["autenticado"]) || $_SESSION["autenticado"] == NULL)
{
echo "<img src='/site_criandobits/imagens/lock.png'> Olá visitante! Para logar-se <a href='/site_criandobits/paginas/_login_usuarios.php'>clique aqui</a>";
}
else //caso autenticado...
{
//Mostra o nome do usuário no topo das páginas
echo "<img src='/site_criandobits/imagens/user.png'><i><font color='#FFFF99'>"." ".$_SESSION['usuario'].", seja bem-vindo(a)!</i></font>";
}
?>
se eu entendi certo o erro está no redirecionamento
altere esta parte
para