Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Colegas,
Estou implementando um controle de acesso ao meu site, mas estou com problemas na sessão. Tenho o formulário de login, que envia os dados para o arquivo ope.php que faz a verificação e abre (ou não) a página index.php. que está dentro da pasta admin. Login e ope estão fora desta pasta.
No ope.php tenho:
<?php include_once "./conexao/conexao.php";?>
session_start();
<?php
if(isset($_POST['acao']))
{
$usuario = ($_POST['usuario']);
$senha = ($_POST['senha']);
if($usuario=="")
{
echo '<script>alert("Informe o seu login.");location.href="./frmloginadm.php";</script>';
}
if($senha=="")
{
echo '<script>alert("Informe a sua senha.");location.href="./frmloginadm.php";</script>';
}
else
if(!empty($usuario) and !empty($senha));
{
$sql= ("select * from usuario where login = ? and senha = ?");
$verifica= $pdo->prepare($sql);
$verifica->bindValue(1,$usuario);
$verifica->bindValue(2,$senha);
$verifica->execute();
if($verifica->rowCount()>0)
{
$_SESSION['usuario'] = $usuario;
$_SESSION['senha'] = $senha;
header("location:./adm/index.php");
}
else
{
unset ($_SESSION['usuario']);
unset ($_SESSION['senha']);
echo '<script>alert("Usuário ou senha inválidos");location.href="./frmloginadm.php";</script>';
}
}
}
?>
Na index.php tenho o seguinte controle logo no início:
<?php include_once "../conexao/conexao.php";?>
<?php session_start();
if((!isset ($_SESSION['usuario']) == true) and (!isset ($_SESSION['senha']) == true)){
unset($_SESSION['usuario']);
unset($_SESSION['senha']);
header('location:frmloginadm.php');
}
$logado = $_SESSION['usuario'];
?>
Se deixo de digitar o login e/ou senha o sistema acusa corretamente que devo preenchê-los e volta para o formulário de login. Mas se digito usuário e senha errados o sistema acusa o erro e também volta para o formulário de login, mas aparece a mensagem:
Noticee: Undefined variable: _SESSION in C:\Program Files (x86)\EasyPHP-DevServer-13.1VC9\data\localweb\laranja\ope.php on line 35
Noticee: Undefined variable: _SESSION in C:\Program Files (x86)\EasyPHP-DevServer-13.1VC9\data\localweb\laranja\ope.php on line 36
Ao digitar o usuário e senhas corretos, o sistema não abre a página index.php que está dentro da pasta admin.
Onde está o erro?
Mas qual é a linha 35? E a 36?
Segue aí Gabirel:
else
{
**35**- unset ($_SESSION['usuario']);
**36**- unset ($_SESSION['senha']);
echo '<script>alert("Usuário ou senha inválidos");location.href="./frmloginadm.php";</script>';
}Primeiro: A verificação está com algo errado, porque você disse que coloca as informações de login corretas mas não funciona
Segundo: Você não pode utilizar a função unset em variáveis que nem se quer foram declaradas.
Deixe apenas isso:
echo '<script>alert("Usuário ou senha inválidos");location.href="./frmloginadm.php";</script>';>
Segue aí Gabirel:
else
{
**35**- unset ($_SESSION['usuario']);
**36**- unset ($_SESSION['senha']);
echo '<script>alert("Usuário ou senha inválidos");location.href="./frmloginadm.php";</script>';
}
Quando digito os dados corretamente está aparecendo o seguinte endereço na barra de endereços:
http://localhost/laranja/adm/frmloginadm.php
Na verdade nesta pasta ele devia procurar pelo index.php
Então, como eu disse no post #4. Os dados estão sendo verificar de forma errada.
Mostre um print da sua tabela usuarios, um print com os registros de preferência.
>
Primeiro: A verificação está com algo errado, porque você disse que coloca as informações de login corretas mas não funciona
Segundo: Você não pode utilizar a função unset em variáveis que nem se quer foram declaradas.
Deixe apenas isso:
echo '<script>alert("Usuário ou senha inválidos");location.href="./frmloginadm.php";</script>';
Blz. Comentei o trecho do código e não há mais a mensagem de erro. Agora falta resolver a parte em que ele deve abrir a index.php.
>
Então, como eu disse no post #4. Os dados estão sendo verificar de forma errada.
Mostre um print da sua tabela usuarios, um print com os registros de preferência.
A tabela tem apenas 3 campos: id, login e senha.
Fiz um teste aqui e é o seguinte:
Tenho dentro do "localhost" um primeiro arquivo index.php (que é a página inicial do site. Nela clico em administrativo e abrirá o formulário de login.), o ope.php e o frmloginadm.php. Dentro da localhost tenho a pasta adm que tem um outro index.php. Essa só será acessada se o login for feito corretamente.
O teste que fiz foi mudar o trecho: header("location:./adm/index.php"); para header("location:./index.php"); e aí ele abre a página inicial do site. Mas preciso que abra o index da pasta adm. Portanto o erro está acontecendo nesta linha.
Mude o código da **admin/index.php **pra isso, porque não há sentido algum nisso: **!isset ($_SESSION['usuario']) == true**
if((!isset ($_SESSION['usuario'])) and (!isset ($_SESSION['senha']))){
header('location:frmloginadm.php');
}
$logado = $_SESSION['usuario'];>
Mude o código da **admin/index.php **pra isso, porque não há sentido algum nisso: **!isset ($_SESSION['usuario']) == true**
if((!isset ($_SESSION['usuario'])) and (!isset ($_SESSION['senha']))){
header('location:frmloginadm.php');
}
$logado = $_SESSION['usuario'];
Ótimo, Gabriel. O erro que estava aparecendo agora sumiu. Restou apenas um problema: continua não abrindo a página index.php da pasta admin. Aparece a mensagem:
A URL requisitada não foi encontrada neste servidor. O link na página referida parece estar com algum erro ou desatualizado. Por favor informe o autor desta página sobre o erro.
Se você acredita ter encontrado um problema no servidor, por favor entre em contato com o webmaster
E na barra de endereços: http://localhost/laranja/adm/frmloginadm.php
Não sei por que ele está levando o sistema a procurar na pasta admin pelo arquivo frmloginadm.php ao invés de index.php.
>
Ótimo, Gabriel. O erro que estava aparecendo agora sumiu. Restou apenas um problema: continua não abrindo a página index.php da pasta admin. Aparece a mensagem:
A URL requisitada não foi encontrada neste servidor. O link na página referida parece estar com algum erro ou desatualizado. Por favor informe o autor desta página sobre o erro.
Se você acredita ter encontrado um problema no servidor, por favor entre em contato com o webmaster
E na barra de endereços: http://localhost/laranja/adm/frmloginadm.php
Não sei por que ele está levando o sistema a procurar na pasta admin pelo arquivo frmloginadm.php ao invés de index.php.
Resolvido. session_start(); estava fora das tags <?php ?>
Obrigado Gabriel.
Mas qual é a linha 35? E a 36?