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