Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
O "echo 'Usuário não encontrado no banco de dados.';}" não aparece na tela caso o login e senha estejam incorretos, alguém sabe oque pode estar acontecendo?
<form name="pLogarForm" class="pLogarForm" method="post" action=""></form>
<?php
if (isset($_GET['userEntrar'])) {
$login = $_POST["userEmail"];
$senha = $_POST["userSenha"];
$sql = mysql_query("SELECT * FROM explo_us WHERE loginexplo = '$login' AND senhaexplo = '$senha'") or die(mysql_error());
$row = mysql_num_rows($sql);
if($row > 0 ){
if (!isset($_SESSION)) {
session_start();
$_SESSION["userEmail"] = $_POST["userEmail"];
$_SESSION["userSenha"] = $_POST["userSenha"];}
}else{
echo 'Usuário não encontrado no banco de dados.';}
}
?>Você poderia postar o resultado da sua query ?
Um detalhe , recomendo ja passar para PDO. Pode não ser a solução do cod que você esta usando, mas abaixo tem um cod que eu usava para realizar login de usuários.
class Conexao{
public static $instance;
public static function getInstance(){
if (!isset(self::$instance)){
self::$instance = new PDO('mysql:host=localhost;dbname=Banco', 'usuario', 'senha', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
self::$instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
self::$instance->setAttribute(PDO::ATTR_ORACLE_NULLS, PDO::NULL_EMPTY_STRING);
}
return self::$instance;
}
}
require_once'Conexao.php'
class Usuario{
private $banco; //banco de dados utilizado
public $tabela; //tabela que sera usada na consulta
public $senha; // senha de login usuario;
public $user; // usuario
function __construct(){
$this->dadosBanco();
}
private function dadosBanco(){
$this->tabela = "nome da tabela";
}
public function validaUsuario($user,$senha){
$this->usuario = $user; //recebe o usuario
$this->senha = $senha;
try{
$sql = "SELECT nome,usuario FROM ".$this->tabela." where usuario = '".$this->usuario."' and senha = '".$this->senha."'";
$stmt = Conexao::getInstance()->prepare($sql);
$stmt->execute(); //procura um usuario no banco com o mesmo login e senha ('case sensitive')
if($stmt->rowCount() == 1){
return true;
} else {
return false;
}
} catch (Exception $e){
print "Ocorreu um erro ao tentar executar esta ação";
echo "Erro: Código: " . $e-> getCode() . " Mensagem: " . $e->getMessage();
}
}
public function logaUsuario($user,$senha){
$this->usuario = $user;
$this->senha = $senha;
if($this->validaUsuario($user,$senha)){ //se o retorno da funcao for verdadeiro
if(!isset($_SESSION)) { //inicia a sessao
session_start();
}
try{
$sql = "SELECT id,nome,usuario FROM ".$this->tabela." where usuario = '".$this->usuario."' and senha = '".$this->senha."'";
$stmt = Conexao::getInstance()->prepare($sql);
$stmt->execute();
$linha = $stmt->fetchAll(PDO::FETCH_ASSOC);
if($stmt->rowCount() == 1){
$_SESSION['usuario_id'] = $linha[0]['id'];
$_SESSION['usuario_nome'] = $linha[0]['nome'];
$_SESSION['usuario_login'] = $linha[0]['usuario'];
$_SESSION['usuario_logado'] = true;
return true;
}
} catch (Exception $e){
print "Ocorreu um erro ao tentar executar esta ação";
echo "Erro: Código: " . $e-> getCode() . " Mensagem: " . $e->getMessage();
}
} else {
return false;
}
}
public function usuarioLogado(){
if (!isset($_SESSION)) { //inicia a sessao
session_start();
}
if($_SESSION['usuario_logado']){ //se a sessao $_SESSION['usuario_logado'] for igual a TRUE , retorna verdadiro
return true;
}else {
return false;
}
}
public function logof(){
if(!isset($_SESSION)){ //inicia a sessao
session_start();
}
$_SESSION['usuario_logado'] == false; //DEFINE A SESSAO DE USUARIO LOGADO COMO FALSO;
session_destroy(); //DESTROI A SESSAO;
}
}
Na sua pagina do formulário , você pode submeter o formulário para ela mesma ou para uma outra pagina . Ex:
RealizaLogin.php
Nela , você chama o arquivo com a classe require_once 'Usuário.php';
<php
$usuario = new Usuario(); // Instancia a classe
$user = 'admin';
$senha = '1234';
$usuario->logaUsuario($user,$senha);
?>$usuario = new Usuario();
if ($usuario->usuarioLogado() === false) { // Não há um usuário logado, redireciona pra tela de login
header("Location: /views/login.php");
exit;
}
Para deslogar o usuario :
$usuario = new Usuario();
$usuario->logof();
Sei que a resposta ficou grande , mas acredito que fique melhor dessa forma .
Qualquer coisa, posta ae.
<?php
if (isset($_GET['userEntrar'])) {
$login = $_POST["userEmail"];
$senha = $_POST["userSenha"];
$sql = mysql_query("SELECT * FROM explo_us WHERE loginexplo = '$login' AND senhaexplo = $senha'") or die(mysql_error());
$row = mysql_num_rows($sql);
if($row > 0 ){
if (!isset($_SESSION)) {
session_start();
$_SESSION["userEmail"] = $_POST["userEmail"];
$_SESSION["userSenha"] = $_POST["userSenha"];
}else{
echo 'Usuário não encontrado no banco de dados.';
}
}
}
?>Não funcionou pq o Else e referente ao if do session:
if (!isset($_SESSION))
{
----
}
else
{
}
else
{
echo "usuario não encontrado no banco de dados";
}Olá...
Realmente o seu "else" está referenciando o if da ($_SESSION).
Tente fazer a condição como : if($row !== 1){ erro } else { continua }, pois se houver erro ele já para no começo.
Tente estudar e fazer algo como o h_felix te passou, mysql já está obsoleta dependendo da versão do php que está usando.
Estude PDO para conexões e excessões para tratar os erros ;D
Abraços
Esse é um típico problema que a simples Indentação correta ajuda a identificar. Por isso é tão importante indentar o código ;)
Também é importante dizer que seu código está vulnerável a SQL Injection. Filtre os dados de entrada ou use Prepared Statements
PS: funções mysql_* estão obsoletas desde o PHP 5.5 e já foram removidas no PHP 7. Prefira usar MySQLi ou PDO. Veja mais aqui: http://rberaldo.com.br/mysql-obsoleto-php/
Da echo na sua query