Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá amigos do Fórum, tenho um script de Autenticação de Usuário em PHP e MySQL que uso a anos, em vários sites, mas hoje me deparei com essa dificuldade, o script não Loga de jeito nenhum nos servidores da Locaweb.
Já teste em vários outros servidores, inclusive aqui no meu local, e funciona normal, mas na Locaweb não funciona!
Na verdade o login até passa, mas quando é redirecionado para a página restrita acaba retornando pro login.php novamente.
Então o Login passa direitinho mas parece que não grava a seção pra manter o usuário logado e acaba retornando pro login.php.
Segue os códigos-fontes.
conecta.php
<?
//DADOS PARA CONEXÃO
$servidor = "localhost"; //SERVIDOR
$bd = "localhost"; //DATABASE
$usuario = "root"; //USUÁRIO
$senha = ""; //SENHA
//CONECTANDO
$conn = @mysql_connect($servidor, $usuario, $senha)
or die("ERRO NA CONEXÃO");
//SELECIONA O DATABASE A SER UTILIZADO
$db = @mysql_select_db($bd, $conn)
or die("ERRO NA SELEÇÃO DO DATABASE");
?>
login.php
<html>
<head>
<title>ADMINISTRADOR</title>
<body>
<form action="autentica.php" method="post" name="frmAutentica" target="_parent">
<table width="32%" border="0" align="center" cellspacing="0" cellpading="0">
<tr bgcolor="#252d3a">
<td colspan="2" bgcolor="#c31c52"><p align="center"><font color="#FFFFFF"><strong>ADMINISTRADOR</strong></font></p></td>
</tr>
<tr>
<td width="10%" height="12"><p align="justify"><strong>USUÁRIO:</strong></p></td>
<td width="40%"><input name="admin" type="text" id="admin" size="13"></td>
</tr>
<tr>
<td width="10%"><p align="justify"><strong>SENHA:</strong></p></td>
<td width="40%"><input name="senha" type="password" id="senha" size="13"></td>
</tr>
<tr>
<td align="center"> </td>
<td><input type="submit" name="btnLogar" value="Logar no sistema >>"></td>
</tr>
</table>
</form>
</body>
</html>
autentica.php
<?
//CONECTA COM O BANCO DE DADOS
require_once("conecta.php");
//RECEBE OS DADOS DO FORMULÁRIO
$usuario = $_POST[admin];
$senha = $_POST[senha];
//VERIFICA
$sql = mysql_query("
SELECT A.ID_USUARIO, A.NOME_USUARIO FROM tb_admin A
WHERE A.USUARIO_ADM = '$usuario'
AND A.SENHA_ADM = '$senha'") or die("ERRO NO COMANDO SQL");
//LINHAS AFETADAS PELA CONSULTA
$row = mysql_num_rows($sql);
//VERIFICA SE RETORNOU ALGO
if($row == 0) echo "<p class=\"bar01\" style=\"color: #ff0000; font-size: 14px;\">Usuário ou Senha inválidos<br><strong>Tente Novamente!</strong></p>";
else {
//PEGA OS DADOS
$id = mysql_result($sql, 0, "ID_USUARIO");
$nome = mysql_result($sql, 0, "NOME_USUARIO");
//INICIALIZA A SESSÃO
session_start();
//GRAVA AS VARIÁVEIS NA SESSÃO
$_SESSION[id] = $id;
$_SESSION[nome] = $nome;
//REDIRECIONA PARA A PÁGINA QUE VAI EXIBIR OS PRODUTOS
Header("Location: resultado.php");
}//FECHA ELSE
?>
resultado.php
<?
//VERIFICA SE A SESSÃO ESTÁ ATIVA
require_once("verifica.php");
?>
<html>
<head>
<title>ADMINISTRADOR</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body></body>
</html>
verifica.php
<?
//INICIALIZA A SESSÃO
session_start();
//SE NÃO TIVER VARIÁVEIS REGISTRADAS
//RETORNA PARA A TELA DE LOGIN
if( (!isset($_SESSION[id_usuario])) AND (!isset($_SESSION[nome_usuario])) )
Header("Location: login.php");
?>>
Por favor, faça isso:
na página autentica.php
<?
//INICIALIZA A SESSÃO
session_start();
print_r( $_SESSION ); exit;
?>
Diga-me o que foi impresso na tela, em seguida poderemos continuar.
Olá Wercks Oliveira, não imprimiu nada na tela, não notei nenhuma mudança, permanece a mesma coisa.
Veja como eu inserir o que você pediu:
<?
//INICIALIZA A SESSÃO
session_start();
print_r( $_SESSION ); exit;
?>
<?
//CONECTA COM O BANCO DE DADOS
require_once("conecta.php");
//RECEBE OS DADOS DO FORMULÁRIO
$usuario = $_POST[admin];
$senha = $_POST[senha];
//VERIFICA
$sql = mysql_query("
SELECT A.ID_USUARIO, A.NOME_USUARIO FROM tb_admin A
WHERE A.USUARIO_ADM = '$usuario'
AND A.SENHA_ADM = '$senha'") or die("ERRO NO COMANDO SQL");
//LINHAS AFETADAS PELA CONSULTA
$row = mysql_num_rows($sql);
//VERIFICA SE RETORNOU ALGO
if($row == 0) echo "<p class=\"bar01\" style=\"color: #ff0000; font-size: 14px;\">Usuário ou Senha inválidos<br><strong>Tente Novamente!</strong></p>";
else {
//PEGA OS DADOS
$id = mysql_result($sql, 0, "ID_USUARIO");
$nome = mysql_result($sql, 0, "NOME_USUARIO");
//INICIALIZA A SESSÃO
session_start();
//GRAVA AS VARIÁVEIS NA SESSÃO
$_SESSION[id] = $id;
$_SESSION[nome] = $nome;
//REDIRECIONA PARA A PÁGINA QUE VAI EXIBIR OS PRODUTOS
Header("Location: resultado.php");
}//FECHA ELSE
?>
<html>
<head>
<title>ADMINISTRADOR</title>
<link rel="stylesheet" type="text/css" href="../style.css">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body>
<p align="center"> </p>
<p align="center"> </p>
<div align="center"><img src="../images/logotipo.jpg"> </div>
<p align="center"> </p>
<p align="center"> </p>
<form action="autentica.php" method="post" name="frmAutentica" target="_parent">
<table width="32%" border="0" align="center" cellspacing="0" cellpading="0">
<tr bgcolor="#252d3a">
<td colspan="2" bgcolor="#f70101"><p align="center"><font color="#FFFFFF"><strong>ADMINISTRADOR</strong></font></p></td>
</tr>
<tr>
<td width="10%" height="12"><p align="justify"><strong>USUÁRIO:</strong></p></td>
<td width="40%"><input name="admin" type="text" id="admin" size="13"></td>
</tr>
<tr>
<td width="10%"><p align="justify"><strong>SENHA:</strong></p></td>
<td width="40%"><input name="senha" type="password" id="senha" size="13"></td>
</tr>
<tr>
<td align="center"> </td>
<td><input type="submit" name="btnLogar" value="Logar no sistema >>"></td>
</tr>
</table>
</form>
<p align="center"> </p>
</body>
</html>Voce n fez o que o werks disse, veja o que ele escreveu e veja o que voce testou...
A sessao so é iniciada antes de qualquer envio de cabeçario.Veja que ha uma quebra de linha antes do <?php.
e se a condificação do arquivo dever com BOM, ira ter um envio de «¿n (algo assim n me lembro bem), e nao dara certo tambem...
Use a dica dos amigos acima, e troque
isso:
<?
?>
por:
<?php
?>
Olá Wercks Oliveira, corrigir os parâmetros, continua não logando, ou seja, não mantendo o usuário logado e redirecionando para a login.php
Já bati cabeça com isso e estou sem raciocínio nenhum em relação a essa pane.
Obrigado amigoooooooo