Buenas tardes che!
Por favor me dan una mano... que fallas en cuanto a seguridad tengo en mis clases? Soy medio nuevo, novato, principiante.
Conecto a mis bases de datos con mi claseBaseDatos.php que es esta...
Código PHP:
<?php
class BaseDatos {
private $HOSTNAME;
private $BASEDATOS;
private $USUARIO;
private $CLAVE;
private $CONEXION;
private $QUERY;
private $RESULT;
private $ERROR;
/**
* Constructor de la clase que inicia ls variables instancias de la clase
* vinculadas a la coneccion con el Servidor de BD
*/
public function __construct(){
$this->HOSTNAME = "localhost";
$this->BASEDATOS = "registro";
$this->USUARIO = "root";
$this->CLAVE= "toor";
$this->RESULT=0;
$this->QUERY="";
$this->ERROR="";
}
/**
* Funcion que retorna una cadena
* con una peque�a descripcion del error si lo hubiera
*
* @return cadena
*/
public function getError(){
return $this->ERROR;
}
/**
* Inicia la coneccion con el Servidor y la Base Datos Mysql.
* Retorna true si la coneccion con el servidor se pudo establecer y false en caso contrario
*
* @return boolean
*/
public function Iniciar(){
$conexion = mysql_connect($this->HOSTNAME,$this->USUARIO,$this->CLAVE);
if ($conexion){
if (mysql_select_db($this->BASEDATOS,$conexion)){
$this->CONEXION = $conexion;
unset($this->QUERY);
unset($this->ERROR);
return true;
} else {
$this->ERROR = mysql_errno($conexion) . ": " . mysql_error($conexion);
return false;
}
}else{
$this->ERROR = mysql_errno($conexion) . ": " . mysql_error($conexion);
return false;
}
}
/**
* Ejecuta una consulta en la Base de Datos.
* Recibe la consulta en una cadena enviada por parametro.
*
* @param cadena $consulta
* @return boolean
*/
public function Ejecutar($consulta){
unset($this->ERROR);
$this->QUERY = $consulta;
if( $this->RESULT = mysql_query($consulta)){
return true;
} else {
$this->ERROR =mysql_errno( $this->CONEXION) . ": " . mysql_error( $this->CONEXION);
return false;
}
}
/**
* Devuelve un registro retornado por la ejecucion de una consulta
* el puntero se despleza al siguiente registro de la consulta
*
* @return unknown
*/
public function Registro() {
if ($this->RESULT){
if($temp = mysql_fetch_assoc($this->RESULT)) {
return $temp;
}else{
mysql_free_result($this->RESULT);
return false;
}
}else{
$this->ERROR = mysql_errno($this->CONEXION) . ": " . mysql_error($this->CONEXION);
return false;
}
}
/**
* Devuelve el id de un campo autoincrement utilizado como clave de una tabla
* Retorna el id numerico del registro insertado, devuelve null en caso que la ejecucion de la consulta falle
*
* @param cadena $consulta
* @return id de la tupla insertada
*/
public function devuelveIDInsercion($consulta){
unset($this->ERROR);
$this->QUERY = $consulta;
if ($this->RESULT = mysql_query($consulta)){
$id = mysql_insert_id();
return $id;
} else {
$this->ERROR =mysql_errno( $this->CONEXION) . ": " . mysql_error( $this->CONEXION);
return null;
}
}
}
?>
Y la utilizo desde mis otras clases como por ejemplo para abm de una tabla de usuarios... mi claseUsuarios.php
En esta clase uno de mis errores es no comprobar si los id_usuario son enteros, no es cierto? Hay mas problemas?
Una vez leí que tenia que comprobar si el objeto BaseDatos no existia antes de crearlo... esto por que es?
Código PHP:
<?php
include_once "claseBaseDatos.php";
class Usuario{
private $id_usuario;
private $nombre;
private $apellido;
private $usuario;
private $pass;
private $rol;
private $email;
private $telefono;
public function __construct(){
$this->idusuario = "";
$this->nombre = "";
$this->apellido = "";
$this->usuario = "";
$this->pass = "";
$this->rol = "";
$this->email = "";
$this->telefono = "";
}
public function cargar($id_usuario = null, $nombre, $apellido, $usuario, $pass, $rol, $email, $telefono){
$this->setIdUsuario($id_usuario);
$this->setNombre($nombre);
$this->setApellido($apellido);
$this->setUsuario($usuario);
$this->setPass($pass);
$this->setRol($rol);
$this->setEmail($email);
$this->setTelefono($telefono);
}
public function setIdUsuario($id_usuario){
$this->idusuario = $id_usuario;
}
public function setNombre($nombre){
$this->nombre=$nombre;
}
public function setApellido($apellido){
$this->apellido=$apellido;
}
public function setUsuario($usuario){
$this->usuario=$usuario;
}
public function setPass($pass){
$this->pass=$pass;
}
public function setRol($rol){
$this->rol=$rol;
}
public function setEmail($email){
$this->email=$email;
}
public function setTelefono($telefono){
$this->telefono=$telefono;
}
public function getIdUsuario(){
return $this->idusuario;
}
public function getNombre(){
return $this->nombre;
}
public function getApellido(){
return $this->apellido;
}
public function getUsuario(){
return $this->usuario;
}
public function getPass(){
return $this->pass;
}
public function getRol(){
return $this->rol;
}
public function getEmail(){
return $this->email;
}
public function getTelefono(){
return $this->telefono;
}
public function Agregar(){
$base=new BaseDatos();
$consultaInsertar="INSERT INTO usuarios (id_usuario, nombre, apellido, usuario, pass, rol, email, telefono) VALUES ('".$this->getIdUsuario()."', '".$this->getNombre()."', '".$this->getApellido()."', '".$this->getUsuario()."', '".$this->getPass()."', '".$this->getRol()."', '".$this->getEmail()."', '".$this->getTelefono()."')";
if($base->Iniciar()){
if($base->Ejecutar($consultaInsertar)){
return true;
} else {
echo $base->getError();
return false;
}
} else {
echo $base->getError();
return false;
}
}
public function Buscar($id_usuario){
$base=new BaseDatos();
$consultaUsuario="SELECT * FROM usuarios WHERE id_usuario=".$id_usuario;
if($base->Iniciar()){
if($base->Ejecutar($consultaUsuario)){
if($row2=$base->Registro()){
$this->setIdUsuario($row2['id_usuario']);
$this->setNombre($row2['nombre']);
$this->setApellido($row2['apellido']);
$this->setUsuario($row2['usuario']);
$this->setRol($row2['rol']);
$this->setEmail($row2['email']);
$this->setTelefono($row2['telefono']);
return true;
}
} else {
echo $base->getError();
return false;
}
} else {
echo $base->getError();
return false;
}
}
public static function Listar($condicion){
$base=new BaseDatos();
$consultaListar="SELECT * FROM usuarios ";
if ($condicion!=""){
$consultaListar.=' WHERE '.$condicion;
}
$consultaListar.=" ORDER BY id_usuario ";
if($base->Iniciar()){
if($base->Ejecutar($consultaListar)){
$arreglo= array();
while($row2=$base->Registro()){
$id_usuario= ($row2['id_usuario']);
$nombre = ($row2['nombre']);
$apellido = ($row2['apellido']);
$nombre_usuario = ($row2['usuario']);
$pass = ($row2['pass']);
$rol = ($row2['rol']);
$email = ($row2['email']);
$telefono = ($row2['telefono']);
$usuario=new Usuario();
$usuario->cargar($id_usuario, $nombre, $apellido, $nombre_usuario, $pass, $rol, $email, $telefono);
array_push($arreglo,$usuario);
}
return $arreglo;
} else {
echo $base->getError();
return false;
}
} else {
echo $base->getError();
return false;
}
}
public function Eliminar(){
$base=new BaseDatos();
if($base->Iniciar()){
$consultaBorra="DELETE FROM usuarios WHERE id_usuario=".$this->getIdUsuario();
if($base->Ejecutar($consultaBorra)){
return true;
}else{
echo $base->getError();
return false;
}
}else{
echo $base->getError();
return false;
}
}
public function Actualizar(){
$base = new BaseDatos();
$consultaModifica="UPDATE usuarios SET nombre='".$this->getNombre()."', apellido='".$this->getApellido()."', usuario='".$this->getUsuario()."', pass='".$this->getPass()."', rol='".$this->getRol()."', email='".$this->getEmail()."', telefono='".$this->getTelefono()."' WHERE id_usuario=". $this->getIdUsuario();
if($base->Iniciar()){
if($base->Ejecutar($consultaModifica)){
return true;
}else{
echo $base->getError();
return false;
}
}else{
echo $base->getError();
return false;
}
}
}
?>
Saludos! Gracias!!