Jump to content
acdestefani

Sistema de Login PDO

Recommended Posts

Olá pessoal!

Peguei alguns códigos na internet para para estudar um pouco e aproveitei para desenvolver um sisteminha simples aqui onde eu trabalho. Consegui desenvolvê-lo usando esse arquivo de conexão:

<?php
 /*************************************************************************************************************  
 * @author William F. Leite                                                                                   *  
 * Data: 20/06/2014                                                                                           *  
 * Descrição: Classe elaborada com o objetivo de auxlilar nas operações CRUDs em diversos SGBDS, possui       *  
 * funcionalidades para construir instruções de INSERT, UPDATE E DELETE onde as mesmas podem ser executadas   *  
 * nos principais SGBDs, exemplo SQL Server, MySQL e Firebird. Instruções SELECT são recebidas integralmente  *  
 * via parâmetro.                                                                                             *  
 *************************************************************************************************************/  


/*
 * Constantes de parâmetros para configuração da conexão
 */
define('SGBD', 'mysql');
define('HOST', 'localhost');
define('DBNAME', 'contratos_rh');
define('CHARSET', 'utf8');
define('USER', 'tonhao');
define('PASSWORD', '100375');
define('SERVER', 'linux');

class conexao {
    
    /*
     * Atributo estático de conexão
     */
    private static $pdo;

    /*
     * Escondendo o construtor da classe
     */
    private function __construct() {
        //
    }

    /*
     * Método privado para verificar se a extensão PDO do banco de dados escolhido
     * está habilitada
     */
    private static function verificaExtensao() {

        switch(SGBD):
            case 'mysql':
                $extensao = 'pdo_mysql';
                break;
            case 'mssql':{
                if(SERVER == 'linux'):
                    $extensao = 'pdo_dblib';
                else:
                    $extensao = 'pdo_sqlsrv';
                endif;
                break;
            }
            case 'postgre':
                $extensao = 'pdo_pgsql';
                break;
        endswitch;

        if(!extension_loaded($extensao)):
            echo "<h1>Extensão {$extensao} não habilitada!</h1>";
            exit();
        endif;
    }

    /*
     * Método estático para retornar uma conexão válida
     * Verifica se já existe uma instância da conexão, caso não, configura uma nova conexão
     */
    public static function getInstance() {

        self::verificaExtensao();

        if (!isset(self::$pdo)) {
            try {
                $opcoes = array(\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8');
                switch (SGBD) :
                    case 'mysql':
                        self::$pdo = new \PDO("mysql:host=" . HOST . "; dbname=" . DBNAME . ";", USER, PASSWORD, $opcoes);
                        break;
                    case 'mssql':{
                        if(SERVER == 'linux'):
                            self::$pdo = new \PDO("dblib:host=" . HOST . "; database=" . DBNAME . ";", USER, PASSWORD, $opcoes);
                        else:
                            self::$pdo = new \PDO("sqlsrv:server=" . HOST . "; database=" . DBNAME . ";", USER, PASSWORD, $opcoes);
                        endif;
                        break;
                    }
                    case 'postgre':
                        self::$pdo = new \PDO("pgsql:host=" . HOST . "; dbname=" . DBNAME . ";", USER, PASSWORD, $opcoes);
                        break;
                endswitch;
                self::$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
            } catch (PDOException $e) {
                print "Erro: " . $e->getMessage();
            }
        }
        return self::$pdo;
    }

    public static function isConectado(){
        
        if(self::$pdo):
            return true;
        else:
            return false;
        endif;
    }

}


O sistema está funcionando perfeitamente, porém gostaria de incluir a necessidade de fazer login para acessá-lo. Usei o código abaixo, que também consegui na internet:

<?php
session_start();
include('conexao.php');

if(empty($_POST['usuario']) || empty($_POST['senha'])) {
	header('Location: index.php');
	exit();
}

$usuario = mysqli_real_escape_string($conexao, $_POST['usuario']);
$senha = mysqli_real_escape_string($conexao, $_POST['senha']);

$query = "SELECT usuario FROM tab_usuarios WHERE usuario = '{$usuario}' AND senha = md5('{$senha}')";

$result = mysqli_query($conexao, $query);

$row = mysqli_num_rows($result);

if($row == 1) {
	$_SESSION['usuario'] = $usuario;
	header('Location: painel_professor.php');
	exit();
} else {
	$_SESSION['nao_autenticado'] = true;
	header('Location: index.php');
	exit();
}

Porém esse login só funciona usando esse arquivo de conexão:

<?php
define('HOST', '127.0.0.1');
define('USUARIO', 'tonhao');
define('SENHA', '100375');
define('DB', 'contratos_rh');

$conexao = mysqli_connect(HOST, USUARIO, SENHA, DB) or die ('Não foi possível conectar');

Como poderia adaptá-lo para que funcione com o primeiro arquivo de conexão? Tentei por vários dias, mas como tenho pouca experiência com programação, não consegui.
Desde já agradeço a ajuda de todos

Spoiler

 

 

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

  • Similar Content

    • By eduardodsilvaq
      Erro retornado no console do navegador: 400 bad request
      Rastreei o erro ate essa parte no arquivo admin-ajax.php mudando o valor de resposta de 0 para 1:
      if ( is_user_logged_in() ) { // If no action is registered, return a Bad Request response. if ( ! has_action( "wp_ajax_{$action}" ) ) { wp_die( '0', 400 ); } Tentei de tudo, mas infelizmente nao entendi oq realmente significa esse login e como ele funciona.
      Vi algumas pessoas tendo problema com o host, no meu caso estou usando hostinger. (Nao creio que isso e relevante mas ta ai.)
       
      Código utilizado:
       
      Javascript
      function formValidation() { event.preventDefault(); var name = document.forms["contactForm"]["name"].value; var email = document.forms["contactForm"]["email"].value; var subject = document.forms["contactForm"]["subject"].value; var message = document.forms["contactForm"]["message"].value; document.getElementById('status').innerHTML = ''; var errorMessage="<span class='error'>All fields are required.</span>"; var regEx = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; if (name.trim() == "" ||email.trim() == "" || subject.trim() == "" || message.trim() == "") { document.getElementById('status').innerHTML = errorMessage; return false; } if (!regEx.test(email)) { var errorMessage="<span class='error'>Invalid email.</span>"; document.getElementById('status').innerHTML = errorMessage; return false; } processContactSubmit(); return true; } function processContactSubmit() { var request = new XMLHttpRequest(); request.open("POST", "/wp-admin/admin-ajax.php?action=process_contact_form"); request.onreadystatechange = function() { if(this.readyState === 4 && this.status === 200) { document.getElementById("status").innerHTML = this.responseText; } }; var myForm = document.getElementById("contactForm"); var formData = new FormData(contactForm); request.send(formData); } functions.php
      add_action('wp_ajax_nopriv_process_contact_form', 'process_contact_form'); add_action('wp_ajax_process_contact_form', 'process_contact_form'); //Retirar essa parte para error no console, no contrario ira aparecer no navegador o numero 0. function process_contact_form() { $to = "Recipient Email Address"; $subject = $_POST["subject"]; $headers = "Testing"; $message = $_POST["message"]; $attachments = ""; $sent = wp_mail($to, $subject, $message, $headers, $attachments); if (! $sent) { echo "<span class='error'>Problem in sending mail.</span>"; } else { echo "<span class='success'>Hi, thank you for the message.</span>"; } wp_die(); } Html
      <form name="contactForm" id="contactForm" method="post" onsubmit="return formValidation()" action=""> <p class="comment-form-comment"><textarea id="message" name="message" required="" placeholder="" aria-required="true"></textarea></p> <p class="comment-form-author"><label for="author">Nome: </label> <input id="name" name="name" required="" size="30" type="text" value=" " /></p> <p class="comment-form-author about"><label for="author">Assunto: </label> <input id="subject" name="subject" required="" size="40" type="text" value=" " /></p> <p class="comment-form-email"><label for="email">Email: </label> <input id="email" name="email" required="" size="30" type="text" value="" /></p> <p class="form-submit"><input id="submit" class="submit" name="email_contato" type="submit" value="Enviar" /></p> </form>&nbsp; <h3><div id="status"></div></h3>  
    • By mm_edilson
      Boa tarde, amigos. Estou criando um sistema de login com PHP e PDO, mas não consigo achar um erro. Ao abrir a página de cadastro, retorna "esta página não está funcionando". Já vasculhei o código de cima a baixo várias vezes, e não consigo encontrar o erro. Se puderem ajudar, fico muito grato.
       
      Minha página de cadastro:
      <?php require_once 'classes/usuarios.php'; $u = new Usuario; ?> <htm lang="pt-br"> <head> <meta charset="utf-8"> <title>SGI - CADASTRO DE USUÁRIO</title> <link rel="stylesheet" href="css/stilo.css"> <body> <div id="corpo-form"> <h1>SGI - LOGIN</h1> <form method="POST"> <input type="text" name="nome" placeholder="Nome Completo" maxlengtht="75"> <input type="email" name="email" placeholder="Usuário" maxlength="50"> <input type="password" name="senha" placeholder="Senha" maxlength="12"> <input type="password" name="confsenha" placeholder="Confirmar Senha" maxlength="12"> <input type="submit" value="INSERIR"> </form> </div> <?php if(isset($_POST['nome'])) { $nome = addslashes($_POST['nome']); $email = addslashes($_POST['email']); $senha = addslashes($_POST['senha']); $confsenha = addslashes($_POST['confsenha']); if(!empty($nome) && !empty($email) && !empty($senha) && !empty($confsenha)) { $u->conectar("****","localhost","***","***"); if($u->msgErro == "") { if($senha == $confsenha){ if($u->cadastrar($nome,$email,$senha)) { echo "Cadastro realizado com sucesso!"; } else { echo "Email já cadastrado no sistema!"; } } else { echo "Senhas digitadas não correspondem."; } } else { echo "Erro:" .$u->msgErro; } } else { echo "Por favor, preencha todos os campos."; } } ?> </body> </head> </html>  
      E aqui a classe usuários
       
      <?php Class Usuario { private $pdo; public $msgErro = ""; public function conectar($nome, $host, $usuario, $senha) { global $pdo; try { $pdo = new PDO("mysql:dbname=".$nome.";host=.$host,$usuario,$senha); } catch (PDOException $e) { $msgErro = $e->getMessage(); } public function cadastrar($nome, $email, $senha, $situacoe_id, $niveis_acesso_id, $created, $modified) { global $pdo; $sql = $pdo->prepare("SELECT id FROM usuarios WHERE email = :e"); $sqk->bindValue(":e",$email); $sql->execute(); if($sql->rowCount() > 0) { return false; } else { $sql = $pdo->prepare("INSERT TO usuarios ($nome, $email, $senha, $situacoe_id, $niveis_acesso_id, $created, $modified) VALUES(:n, :e, :p, :s, :n, :c, :m)"); $sqk->bindValue(":n",$nome); $sqk->bindValue(":e",$email); $sqk->bindValue(":p",md5($senha)); $sqk->bindValue(":s",$situacoe_id); $sqk->bindValue(":n",$niveis_acesso_id); $sqk->bindValue(":c",$created); $sqk->bindValue(":m",$modified); $sql->execute(); return true; } } public function logar($email, $senha) { global $pdo; $sql = $pdo->prepare("SELECT id FROM usuarios WHERE email = :e AND senha = :p"); $sql->bindValue(":e",$email); $sql->bindValue(":p"md5($senha)); $sql->execute(); if($sql->rowCont() > 0) { $dado = $sql->fetch(); session_start(); $_SESSION['id'] = $dado['id']; return true; } else { return false; } } } ?>  
      Se alguém puder ajudar, e conseguir identificar onde está o erro, fico muito, muito agradecido. Abraços
       
       
       
    • By Marcones Borges
      Olá, estou precisando de uma ajuda...
       
      Tenho duas tabelas
      ministros
      entradas
       
      Preciso exibir a lista dos ministros que não contam no relatório gerado em entradas.
       
      Fiz assim a combinação.
       

      $sql = "SELECT ministro.id, ministro.area, entrada.beneficiario, entrada.id_benificiario, entrada.id_benificiario, entrada.tipo_lancamento FROM ministro INNER JOIN entrada ON ministro.id = entrada.id_benificiario WHERE ministro.area = entrada.area_beneficiario AND ministro.nome = entrada.beneficiario AND entrada.id_benificiario='[{$id_exer}' AND entrada.tipo_lancamento='ministro'  "; $stm = $conexao->prepare($sql); $stm->execute(); $clientes = $stm->fetchAll(PDO::FETCH_OBJ);
       
      Fiz as combinações direitinho mais não consigui exbir os que estão na tabela ministro e não estão na tabela entrada.
    • By Marcones Borges
      Olá, sou iniciante em php, estou tentando migrar um código de php 5.6 para pdo mais da erro, não roda....
      Alguém pode me ajudar?

      include '../Connections/functions.php';           function montaSelect()         {  $sql = "SELECT * FROM membros"; $result = $con->query($sql); if ($result->num_rows > 0 )  {   while($dados = $result->fetch_assoc())   {   $opt .= '<option value="'.$dados['id'].'">'.$dados['nome'].'</option>';   } } else {           $opt = '<option value="0">Nenhum Membro cadastrado</option>';     return $opt; }         }
       
      Este era o código original:
       

      // require 'topof.php'; // echo $usuario;         /**          * função que retorna o select          */         function montaSelect()         {                 $sql = "SELECT id, nome FROM membros '";                 $query = mysql_query( $sql );                 if( mysql_num_rows( $query ) > 0 )                 {                         while( $dados = mysql_fetch_assoc( $query ) )                         {                                 $opt .= '<option value="'.$dados['id'].'">'.$dados['nome'].'</option>';                         }                 }                 else                         $opt = '<option value="0">Nenhum Membro cadastrado</option>';                 return $opt;         }
    • By belann
      Olá!
       
      Eu tentar logar no wordpress que instalei em minha máquina usando localhost e logando com wp-login.php, está dando uma mensagem que o banco de dados não pode ser acessado.
      Estou usando o xampp. O que pode estar errado.
×

Important Information

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