Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

E.Martins

Problemas em selecionar colunas no mysql

Recommended Posts

Boa noite, estou com problemas em um código PHP para fazer login comparando com o banco mysql, já tentei diversas formulas já procurei em varios foruns mais nada se enquadra a minha necessidade foi quando pensei em peguntar no Imasters para ver se alguem mim da uma luz.

 

Ai vai o código:

if (!empty($_POST) AND (empty($_POST['email']) OR empty($_POST['senha']))) {
        echo "Email e Senha são obrigatorios.";exit;
}  

include =('connect.php');

$email = mysql_real_escape_string($_POST['email']);
$senha = mysql_real_escape_string($_POST['senha']);
   
$sql = "SELECT `id`, `nome`, `nivel` FROM `user_db` WHERE (`email` = '".$email."') AND (`senha` = '".sha1($senha)."') AND (`ativo` = 1) LIMIT 1";
$query = mysql_query($sql);
if (mysql_num_rows($query) != 1) {
        echo "Usuario não encontrado!";exit;
}else {
        // Salva os dados encontados na variável $resultado
        $resultado = mysql_fetch_assoc($query);
      
        // Se a sessão não existir, inicia uma
        if (!isset($_SESSION)) session_start();
      
        // Salva os dados encontrados na sessão
        $_SESSION['UsuarioID'] = $resultado['id'];
        $_SESSION['UsuarioNome'] = $resultado['nome'];
        $_SESSION['UsuarioNivel'] = $resultado['nivel'];
      
        	header("Refresh: 5; URL= ./index.php");	
		exit;
}

Espero que alguem que conheça melhor PHP , sou iniciante e desconeço algumas coisas.

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

não existe sinal de igual depois do include. E nem precisa dos parênteses. Faça assim:

 

 

include 'connect.php';

 

Explique exatamente qual é o problema com seu script. Se aparece mensagem de erro, cole-a aqui.

 

Habilite todas as exibições de erro como mostrado neste tópico

 

 

 

PS: funções mysql_* estão obsoletas desde o PHP 5.5. Prefira usar MySQLi ou PDO. Veja mais aqui: http://www.ultimatephp.com.br/php-por-que-nao-utilizar-funcoes-mysql

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem o que acontece é que não estou conseguindo puxar esse select bo banco mysql.

$sql = "SELECT `id`, `nome`, `nivel` FROM `user_db` WHERE (`email` = '".$email."') AND (`senha` = '".sha1($senha)."') AND (`ativo` = 1) LIMIT 1";

Não esta retornando valores nessa select, já tentei varias formas mais mesmo assim não retorna, esse código é para um login, e a session só é criada se for capturado "id, nome, nivel", mais sempre retorna vazio o select.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente usar mysql_error(), como mostrado no link que mandei no post anterior

 

também dê um echo/var_dump em $sql, para ver a consulta. Copie-a e execute-a diretamente no mysql. Veja se os resultados são retornados

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz a conversão do mysql para mysqli e obtive esses erros:

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in F:\ServidoWeb\root\novo_login\login.php on line 1
//PHP
include './connect/db_connect.php';

if (!empty($_POST) AND (empty($_POST['email']) OR empty($_POST['senha']))) {
        mysqli_error();
}  

// Create connection
$connect = new mysqli($servername, $username, $password, $dbname) or die(mysqli_error());

$email = mysqli_real_escape_string($connect, $_POST['email']);
$senha = mysqli_real_escape_string($connect, $_POST['senha']);
   
$sql = mysqli_query($connect, "SELECT id, nome, nivel FROM user_db WHERE `email` = '$email', senha = '". sha1($senha) ."', ativo = 1 LIMIT 1");

if(mysqli_num_rows($sql) != 1){
	echo "Usuario não cadastrado!"; exit;
	 
}else {
	// Salva os dados encontados na variável $resultado
        $resultado = mysqli_fetch_assoc($sql);
      
        // Se a sessão não existir, inicia uma
        if (!isset($_SESSION)) session_start();
      
        // Salva os dados encontrados na sessão
        $_SESSION['UsuarioID'] = $resultado['id'];
        $_SESSION['UsuarioNome'] = $resultado['nome'];
        $_SESSION['UsuarioNivel'] = $resultado['nivel'];      
        
		header("Refresh: 5; URL= ./panel");	
		exit;      
    }

veja se você entende, por que sou novo em php e fico sem entender.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É o mesmo problema que descrevo aqui: http://rberaldo.com.br/as-mensagens-de-erros-mais-comuns-do-php/#mysql_result_resource

 

Apenas use as funções mysqli_* em vez de mysql_*

 

Provavelmente mysqli_query falhou e retornou false. Use mysqli_error() para verificar o erro retornado pelo MySQL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha esse erro:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' senha = '2a8621c415c136111b4620a98d61cc6c3c4ae787', ativo = 1 LIMIT 1' at line 1

Deu pra intender que é um erro de sintaxe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que já substitui, agora aparaceu outro erro.

Notice: Undefined index: email in F:\ServidoWeb\root\novo_login\login.php on line 11
Notice: Undefined index: senha in F:\ServidoWeb\root\novo_login\login.php on line 12

pelo que entendi ta indefinido email e senha.

include './connect/db_connect.php';

if (!empty($_POST) AND (empty($_POST['email']) OR empty($_POST['senha']))) {
        mysqli_error();
}  

// Create connection
$connect = new mysqli($servername, $username, $password, $dbname) or die(mysqli_error());

$email = mysqli_real_escape_string($connect, $_POST['email']);
$senha = mysqli_real_escape_string($connect, $_POST['senha']);
   
$sql = "SELECT id, nome, nivel FROM user_db WHERE email = '". $email ."' AND senha = '". sha1($senha) ."' AND ativo = 1 LIMIT 1";
$query = mysqli_query($connect, $sql) or exit( mysqli_error());

if(mysqli_num_rows($query) != 1){
	echo "Usuario não cadastrado!"; exit;
	 
}else {
	// Salva os dados encontados na variável $resultado
        $resultado = mysqli_fetch_assoc($query);
      
        // Se a sessão não existir, inicia uma
        if (!isset($_SESSION)) session_start();
      
        // Salva os dados encontrados na sessão
        $_SESSION['UsuarioID'] = $resultado['id'];
        $_SESSION['UsuarioNome'] = $resultado['nome'];
        $_SESSION['UsuarioNivel'] = $resultado['nivel'];      
        
		header("Refresh: 5; URL= ./panel");	
		exit;      
    }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixe falar como resolvi, na realidade o problema não estava no codigo e sim na criação do banco de dados, só alterei banco deixando o email como id "UNIQUE KEY".

 

 

Passei só para deixar a solução para laguém que tenha o mesmo problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.