Fórum Sessão para login em php- Qual o erro? #563225
28/09/2016
0
tentei implementar o exemplo do link mas não funcionou, então modifiquei a conexão com o banco e continua a não funcionar, digito senha e usuario e ele continua na tela de login, abaixo o contigo que estou usando:
index.php
<!DOCTYPE html> <html> <head> <title></title> </head> <body> <!--/* na primeira linha usaremos o “action=ope.php” para que o formulário repasse as informações para a pagina ope.php */--> <form method="post" action="ope.php" id="formlogin" name="formlogin" > <fieldset id="fie"> <legend>LOGIN</legend><br /> <label>NOME : </label> <!--// o campo “name” dentro do input e importante, pois será ele que armazenará os dados digitados . --> <input type="text" name="login" id="login" /><br /> <label>SENHA :</label> <input type="password" name="senha" id="senha" /><br /> <input type="submit" value="LOGAR " /> </fieldset> </form> </body> </html>
ope.php
<?php
// session_start inicia a sessão
session_start();
// as variáveis login e senha recebem os dados digitados na página anterior
$login = $_POST['login'];
$senha = $_POST['senha'];
// as próximas 3 linhas são responsáveis em se conectar com o bando de dados.
$servidor = "localhost";
$usuario = "root";
$senha = "";
$banco = "server";
$mysqli = new mysqli($servidor, $usuario, $senha, $banco);
// A vriavel $result pega as varias $login e $senha, faz uma pesquisa na tabela de usuarios
$result = mysqli_query("SELECT * FROM usuario WHERE nome = '$login' AND senha = '$senha'");
/* Logo abaixo temos um bloco com if e else, verificando se a variável $result foi bem sucedida, ou seja se ela estiver encontrado algum registro idêntico o seu valor será igual a 1, se não, se não tiver registros seu valor será 0. Dependendo do resultado ele redirecionará para a pagina site.php ou retornara para a pagina do formulário inicial para que se possa tentar novamente realizar o login */
$linhas = mysqli_num_rows($result);
//if(mysqli_num_rows($result) > 0 )
if($linhas > 0)
{
$_SESSION['login'] = $login;
$_SESSION['senha'] = $senha;
header('location:site.php');
}
else{
unset ($_SESSION['login']);
unset ($_SESSION['senha']);
header('location:index.php');
}
?>
}
site.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<?php
/* esse bloco de código em php verifica se existe a sessão, pois o usuário pode simplesmente não fazer o login e digitar na barra de endereço do seu navegador o caminho para a página principal do site (sistema), burlando assim a obrigação de fazer um login, com isso se ele não estiver feito o login não será criado a session, então ao verificar que a session não existe a página redireciona o mesmo para a index.php.*/
session_start();
if((!isset ($_SESSION['login']) == true) and (!isset ($_SESSION['senha']) == true))
{
unset($_SESSION['login']);
unset($_SESSION['senha']);
header('location:index.php');
}
$logado = $_SESSION['login'];
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>SISTEMA WEB</title>
</head>
<body>
<table width="800" height="748" border="1">
<tr>
<td height="90" colspan="2" bgcolor="#CCCCCC">SISTEM WEB TESTE
<?php
echo" Bem vindo $logado";
?>
</td>
</tr>
<tr>
<td width="103" height="410" bgcolor="#CCCCCC">MENU AQUI</td>
<td width="546">CONTEUDO E ICONES AQUI</td>
</tr>
<tr>
<td colspan="2" bgcolor="#000000"> </td>
</tr>
</table>
</body>
</html>
e o banco de dados:
-- phpMyAdmin SQL Dump -- version 4.6.4 -- https://www.phpmyadmin.net/ -- -- Host: 127.0.0.1 -- Generation Time: 29-Set-2016 às 02:23 -- Versão do servidor: 10.1.16-MariaDB -- PHP Version: 7.0.9 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- Database: `server` -- -- -------------------------------------------------------- -- -- Estrutura da tabela `usuario` -- CREATE TABLE `usuario` ( `id_user` int(4) NOT NULL, `nome` varchar(50) NOT NULL, `senha` varchar(50) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Extraindo dados da tabela `usuario` -- INSERT INTO `usuario` (`id_user`, `nome`, `senha`) VALUES (1, 'ad', '123'), (2, 'bebe', 'bebe'); -- -- Indexes for dumped tables -- -- -- Indexes for table `usuario` -- ALTER TABLE `usuario` ADD PRIMARY KEY (`id_user`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `usuario` -- ALTER TABLE `usuario` MODIFY `id_user` int(4) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Alguém pode me dizer qual o erro?
Anderson Martins
Curtir tópico
+ 0Post mais votado
29/09/2016
$senha = $_POST['senha'];
Mas depois você sobrescreve a variável senha novamente
$servidor = "localhost"; $usuario = "root"; $senha = ""; $banco = "server";
Aí no seu select ele não vai encontrar esse usuário, porque você usou a mesma variável senha para a sua conexão. E ela com certeza será diferente do valor digitado no campo senha do formulário. A solução para esse problema seria trocar o nome da variável, para que ele não venha a substituir o que você pega no post.
Diego Silva
Gostei + 2
Mais Posts
29/09/2016
Diego Silva
Gostei + 0
29/09/2016
Anderson Martins
Gostei + 0
29/09/2016
Anderson Martins
Não estava passando a conexão no query de consulta.
Muito Obrigado pela atenção!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)