Jump to content
Marcelo Aug.

Sistema de Login não funciona

Recommended Posts

Bom dia pessoal,

 

Estou vindo aqui porque ja não sei o que fazer mais. Tentei vários scripts e nenhum deu certo, o que está de errado no código? Ele fica acusando erro "Erro ao Selecionar" logo no começo, que foi o que eu coloquei. Alguem pode me ajudar por favor.

<html>
<head>
<meta charset="utf-8">
	<title>Painel de Login</title>
    <link rel="stylesheet" href="css/style.css">
    <link rel="stylesheet" href="css/boot.css">
</head>
<body>
<?php
    $login = $_POST['login'];
    $entrar = $_POST['entrar'];
    $senha = ($_POST['senha']);
   require("Connections/config.php");
        if (isset($entrar)) {
                     
            $verifica = mysqli_query("SELECT * FROM usuarios WHERE login = ".$login." AND senha = ".$senha."") or die("erro ao selecionar");
                if (mysqli_num_rows($verifica)<=0){
                    echo"<script language='javascript' type='text/javascript'>alert('Login e/ou senha incorretos');window.location.href='login.html';</script>";
                    die();
                }else{
                    setcookie("login",$login);
                    header("Location:painel_controle.php");
                }
        }

?>
<div id="login">

    	<form name="login" action="" method="POST">
        	<label>
            	<span>Nome:</span>
                <input type="text" class="radius" name="login" />
            </label>
            <label>
            	<span>Senha:</span>
                <input type="password" class="form-control" name="senha" />
            </label>
            <input type="submit" value="Entrar" name="entrar" class="btn btn-primary btn-large btn-block" />
        </form>
    </div>
</body>
</html>

config.php

<?php
define(HOST, 'localhost');
define(USER, 'root');
define(PASS, '');
define(DB,   'agenda');

$conecta = mysqli_connect(HOST, USER, PASS, DB) or die('Erro ao conectar ao Banco de Dados. <strong>'.mysqli_error($conecta).'</strong>');

?>

Share this post


Link to post
Share on other sites


$verifica = mysqli_query("SELECT * FROM usuarios WHERE login = '".$login."' AND senha = '".$senha."'") or die(mysql_error());

Share this post


Link to post
Share on other sites

Continua com o mesmo problema ESerra... o login não passa, continua com o mesmo erro.

 

Fiz mais um teste com o server behaviors do dreamweaver mesmo, só que ele ao invés de jogar para a página painel_controle.php está jogando para uma página index vazia. Não acursa erro nem nada.

<?php virtual('/Connections/login.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysqli_real_escape_string") ? mysqli_real_escape_string($theValue) : mysqli_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysqli_real_escape_string") ? mysqli_real_escape_string($theValue) : mysqli_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}
?>
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['login'])) {
  $loginUsername=$_POST['login'];
  $password=$_POST['senha'];
  $MM_fldUserAuthorization = "";
  $MM_redirectLoginSuccess = "/painel_controle.php";
  $MM_redirectLoginFailed = "/agenda.php";
  $MM_redirecttoReferrer = false;
  mysqli_select_db($database_login, $login);
  
  $LoginRS__query=sprintf("SELECT usuario, senha FROM usuarios WHERE usuario=%s AND senha=%s",
    GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 
   
  $LoginRS = mysqli_query($LoginRS__query, $login) or die(mysqli_error());
  $loginFoundUser = mysqli_num_rows($LoginRS);
  if ($loginFoundUser) {
     $loginStrGroup = "";
    
	if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;	      

    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];	
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}
?>
<html>
<head>
<meta charset="utf-8">
	<title>Painel de Login</title>
    <link rel="stylesheet" href="css/style.css">
    <link rel="stylesheet" href="css/boot.css">
</head>
<body>
<div id="login">

    	<form name="login" action="<?php echo $loginFormAction; ?>" method="POST">
        	<label>
            	<span>Nome:</span>
                <input type="text" class="radius" name="login" />
            </label>
            <label>
            	<span>Senha:</span>
                <input type="password" class="form-control" name="senha" />
            </label>
            <input type="submit" value="Entrar" name="entrar" class="btn btn-primary btn-large btn-block" />
        </form>
    </div>
</body>
</html>
Edited by Marcelo Aug.

Share this post


Link to post
Share on other sites

Estou tentando o 3º código mas ainda não da certo... por favor alguem me ajude com isso!

 

está acusando erro na linha 36 "Fatal error: Call to a member function query() on a non-object in D:\wamp\www\agenda\index.php on line 36"

 

essa linha está mostrando o erro

$select = $mysqli->query("SELECT * FROM usuarios WHERE nome='$nome' AND senha='$senha'");
<html>
<head>
<meta charset="utf-8">
<?php include ("Connections/config.php");?>
	<title>Painel de Login</title>
    <link rel="stylesheet" href="css/style.css">
    <link rel="stylesheet" href="css/boot.css">
</head>
<body>
<div id="login">

    	<form name="login" action="" method="POST">
        	<label>
            	<span>Nome:</span>
                <input type="text" class="radius" name="nome" />
            </label>
            <label>
            	<span>Senha:</span>
                <input type="password" class="form-control" name="senha" />
            </label>
            <input type="submit" value="Entrar" name="entrar" class="btn btn-primary btn-large btn-block" />
        </form>
    </div>
</body>
</html>
<?php
	if(isset($_POST["entrar"])){
		$nome = $_POST["nome"];
		$senha = md5($_POST["senha"]);

	if($nome == "" || $senha == ""){
		echo "<script> alert('Preencha todos os campos!');</script>";
		return true;
	}
	
	$select = $mysqli->query("SELECT * FROM usuarios WHERE nome='$nome' AND senha='$senha'");
	$row = $select->num_rows;
	$get = $select->fetch_array();
	if($row > 0){
		echo "<script>alert('Bem vindo); location.href='http://localhost/agenda/painel_controle.php' </scrip>";
	}else{
		echo "<script>alert('Usuário ou Senha Incorretos);</scrip>";
	}
}

?>

Edited by Marcelo Aug.

Share this post


Link to post
Share on other sites

Mude $select->num_rows and $select->fetch_array() para:

mysqli_num_rows($select);
mysqli_fetch_array($select);

E o query fica do seu jeito.

 

$mysqli->query

 

Mas ele ainda mostra o erro no $mysqli->query ... ja olhei várias e várias vezes para a linha do comando e não vejo erro, o login trava ali e não vai mais para frente por causa do erro.

Share this post


Link to post
Share on other sites

O correto é sempre utiliza <?php e isto não influencia em nada no erro...

 

Lá no meu primeiro post eu me equivoquei, não vi que você estava utiliznado mysqli, então aquele or die que passei foi bobagem.

 

Observe que mysqli_ e $mysqli-> são duas coisas distintas... como você está fazendo a conexão com o banco de dados?

Share this post


Link to post
Share on other sites

Já instanciou a conexão? Se $mysqli não for uma instância de mysqli, então não vai ter conexão com o objeto selecionado (ou seja, nenhum). O seu config.php:

<?php
define(HOST, 'localhost');
define(USER, 'root');
define(PASS, '');
define(DB,   'agenda');

$conecta = mysqli_connect(HOST, USER, PASS, DB) or die('Erro ao conectar ao Banco de Dados. <strong>'.mysqli_error($conecta).'</strong>');

?>

Ele não instancia nenhum objeto para retornar "objeto->query();"

 

Tente fazer mysqli->query(); em vez de $mysqli_.query();.

Share this post


Link to post
Share on other sites

Bom dia pessoal, consegui resolver muito obrigado pela ajuda.

 

Usei o último código que eu postei aqui no tópico, nele nos dois últimos echo estavam faltando '' para finalizar o comando alert e também tirei a criptografia da senha. Também transformei o $mysqli->query() para mysqli_query().

 

Agora só quero colocar uma restrição ao painel para usuários não logados, alguma dica de como posso fazer isso?

 

Observe que mysqli_ e $mysqli-> são duas coisas distintas... como você está fazendo a conexão com o banco de dados?

A conexão está la em cima ESerra. Mas poderia me dizer qual a diferença dos dois formatos do mysqli? com o _ ou ->

 

 

Tente fazer mysqli->query(); em vez de $mysqli_.query();.

Fiz a alteração como expliquei aqui no post, mas obrigado pelas dicas Diego! Vou ficar atento nesse detalhe de declarar o objeto antes.

Edited by Marcelo Aug.

Share this post


Link to post
Share on other sites

Em um erro que já tive há um tempo sim, eu resolvi trocando para <?, mas, do msm jeito esse erro não se causa por isso como disse.

Se você apenas se der ao trabalho de ler o manual, verá que o uso de <? é desencorajado, dependendo do servidor inclusive <? sequer irá funcionar, já que isto dai depende de short_open_tag ativo para funcionar.

 

A conexão está la em cima ESerra. Mas poderia me dizer qual a diferença dos dois formatos do mysqli? com o _ ou ->

Claro que posso, mas antes faça uma uma leitura bem apurada:

mysqli_

$mysqli->

No primeiro caso você está apenas utilizando alguma função do mysqli, no segundo caso você está utilizando o objeto que você deve ter instanciado anteriormente ($mysqli = new ALGUMA_COISA), o problema no seu caso é que em nenhum momento você cria este objeto, por isto o erro que você citou no post #4, no seu caso, você tem que usar o mysqli_ para tudo.

Edited by ESerra

Share this post


Link to post
Share on other sites

Claro que posso, mas antes faça uma uma leitura bem apurada:

mysqli_

$mysqli->

No primeiro caso você está apenas utilizando alguma função do mysqli, no segundo caso você está utilizando o objeto que você deve ter instanciado anteriormente ($mysqli = new ALGUMA_COISA), o problema no seu caso é que em nenhum momento você cria este objeto, por isto o erro que você citou no post #4, no seu caso, você tem que usar o mysqli_ para tudo.

Entendi! Muito obrigado pela explicação ESerra, agora entendi o porque de não estar funcionando como eu tinha feito.

 

Vou dar uma lida no manual certinho pra entender melhor.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.