Boa tarde pessoal, sou novo em programação PHP e gostaria de dicas e criticas construtivas sobre um simples
sistema de login que criei...
Se tratando de segurança pensei que trabalhando com classes e OO ficaria melhor, algo do tipo: o usuario ao clicar no botao entrar ele chamará uma classe controle que vai instanciar um novo objeto do tipo usuario e chamar o metodo para carregar os dados do mesmo do banco e armazenar nos atributos, depois faço a comparação dos dados vindos pelo post com os dados dos atributos da instancia criada.
É correto? é seguro? lembrando que antes de criar o objetos passei os dados vindos pelo post por metodos como get_magic_quotes_gpc(), mysql_real_escape_string e trin()....
Gostaria de dicas para melhor isso aê...
Grato pela atenção;;
Abaixo deixo os código que julgo serem importantes para analise...
<?php
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
* Description of Usuario
*
* @author VIRTUALWEB
*/
class Administrador{
//put your code here
private $id;
private $nome;
private $senha;
private $usuario;
private $email;
private $tabela = 'tb_administrador';
private $nivelAcesso;
public function __construct(){
require_once 'Conexao.class.php';
}
public function setId($id){
$this->id = $id;
}
public function getId(){
return $this->id;
}
public function setNome($nome){
$this->nome = $nome;
}
public function getNome(){
$this->nome;
}
public function setSenha($senha){
$this->senha = $senha;
}
public function getSenha(){
return $this->senha;
}
public function setUsuario($usuario){
$this->usuario = $usuario;
}
public function getUsuario(){
return $this->usuario;
}
public function setEmail($email){
$this->email = $email;
}
public function getEmail(){
return $this->email;
}
public function setabela($tabela){
$this->tabela = $tabela;
}
public function gettabela(){
return $this->tabela;
}
public function setNivelAcesso($nivelAcesso){
$this->nivelAcesso = $nivelAcesso;
}
public function getNivelAcesso(){
return $this->nivelAcesso;
}
public function loadAdm(){
$con = new Conexao();
$con->open();
$sql = "SELECT * FROM tb_administrador ";
$limite = mysql_query($sql);
while($sql = mysql_fetch_array($limite)){
$this->id = $sql["id"];
$this->nome = $sql["nome"];
$this->usuario = $sql["login"];
$this->senha = $sql["senha"];
$this->email = $sql["email"];
$this->nivelAcesso = $sql["nivel_acesso"];
}
}
}
?>
Pergunta
bruno_osprimosbh
Boa tarde pessoal, sou novo em programação PHP e gostaria de dicas e criticas construtivas sobre um simples
sistema de login que criei...
Se tratando de segurança pensei que trabalhando com classes e OO ficaria melhor, algo do tipo: o usuario ao clicar no botao entrar ele chamará uma classe controle que vai instanciar um novo objeto do tipo usuario e chamar o metodo para carregar os dados do mesmo do banco e armazenar nos atributos, depois faço a comparação dos dados vindos pelo post com os dados dos atributos da instancia criada.
É correto? é seguro? lembrando que antes de criar o objetos passei os dados vindos pelo post por metodos como get_magic_quotes_gpc(), mysql_real_escape_string e trin()....
Gostaria de dicas para melhor isso aê...
Grato pela atenção;;
Abaixo deixo os código que julgo serem importantes para analise...
Arquivo Usuario.Controller.php
<?php session_start(); require_once '../Model/Conexao.class.php'; require_once '../Model/Administrador.class.php'; require_once '../Model/Function.class.php'; //extract($_POST); if(getenv("REQUEST_METHOD") == "POST"){ $con = new Conexao(); $function = new Funcao(); $login = isset($_POST["login"]) ? $function->limpaString($_POST["login"]) : ""; $senha = isset($_POST["senha"]) ? $function->limpaString($_POST["senha"]) : ""; $login = $function->antiSqlInjection($login); $senha = $function->antiSqlInjection($senha); //Acho que esse if aqui é desnecessário if(!empty($login)|| !empty($senha)){ $adm = new Administrador(); $adm->loadAdm(); if($login == $adm->getUsuario() && $senha == $adm->getSenha()){ $_SESSION['idSession'] = (int)$adm->getId(); $_SESSION['nomeSession'] = $adm->getNome(); $_SESSION['loginSession'] = $adm->getUsuario(); $_SESSION['senhaSession'] = $adm->getSenha(); $_SESSION['emailSession'] = $adm->getEmail(); $_SESSION['nivel_acessoSession'] = $adm->getNivelAcesso; header('Location: ../View/logado.php'); } else{ unset($_SESSION['loginSession']); unset($_SESSION['senhaSession']); header('Location: ../login.php'); } } } else{ header('Location: ../login.php'); } ?>Arquivo Administrador.class.php<?php /* * To change this template, choose Tools | Templates * and open the template in the editor. */ /** * Description of Usuario * * @author VIRTUALWEB */ class Administrador{ //put your code here private $id; private $nome; private $senha; private $usuario; private $email; private $tabela = 'tb_administrador'; private $nivelAcesso; public function __construct(){ require_once 'Conexao.class.php'; } public function setId($id){ $this->id = $id; } public function getId(){ return $this->id; } public function setNome($nome){ $this->nome = $nome; } public function getNome(){ $this->nome; } public function setSenha($senha){ $this->senha = $senha; } public function getSenha(){ return $this->senha; } public function setUsuario($usuario){ $this->usuario = $usuario; } public function getUsuario(){ return $this->usuario; } public function setEmail($email){ $this->email = $email; } public function getEmail(){ return $this->email; } public function setabela($tabela){ $this->tabela = $tabela; } public function gettabela(){ return $this->tabela; } public function setNivelAcesso($nivelAcesso){ $this->nivelAcesso = $nivelAcesso; } public function getNivelAcesso(){ return $this->nivelAcesso; } public function loadAdm(){ $con = new Conexao(); $con->open(); $sql = "SELECT * FROM tb_administrador "; $limite = mysql_query($sql); while($sql = mysql_fetch_array($limite)){ $this->id = $sql["id"]; $this->nome = $sql["nome"]; $this->usuario = $sql["login"]; $this->senha = $sql["senha"]; $this->email = $sql["email"]; $this->nivelAcesso = $sql["nivel_acesso"]; } } } ?>Arquivo Function.class.php<?php class Funcao { public function mask($val, $mask){ $maskared = ''; $k = 0; for($i = 0; $i<=strlen($mask)-1; $i++){ if($mask[$i] == '#'){ if(isset($val[$k])) $maskared .= $val[$k++]; } else{ if(isset($mask[$i])) $maskared .= $mask[$i]; } } return $maskared; } public function limpaString($string){ $novaString = trim($string); $novaString = addslashes($novaString); return $novaString; } public function antiSqlInjection($str) { if(!is_numeric($str)) { $str = get_magic_quotes_gpc() ? stripslashes($str) : $str; $str = function_exists('mysql_real_escape_string') ? mysql_real_escape_string($str) : mysql_escape_string($str); return $str; } else{ $str = ""; return $str; } } } ?>Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.