Question:
Date: 05-06-2019 14:41:07
(In Spanish)
login.php
DB.php
Votes: 0 - Answers: 1 - Views: 10 Share on: Google Facebook Twitter LinkedIn Link
Ayuda con error en instancia $db (objeto singleton)[Unresolved]
hola, no entiendo porque no compila, me podrian dar una manito con esto. Resulta que quiero verificar que no haya ninguna inyección SQL y me da un error en la instancia $db que es un objeto singleton (unico objeto con acceso a la base de datos).login.php
$db = Db::getInstance(); //condicional - si existen datos por medio $_POST se hace if ($_POST) { //obtenemos datos especificos y eliminamos codigo de un posible inyeccion de SQL $nombre= $db->real_escape_string($_POST["nombre"]); $pass = $db->real_escape_string($_POST["pass"]); }
DB.php
Class Db{ private $servidor; private $usuario; private $password; private $base_datos; private $link; private $stmt; private $array; static $_instance; /*La función construct es privada para evitar que el objeto pueda ser creado mediante new*/ private function __construct(){ $this->setConexion(); $this->conectar(); } /*Método para establecer los parámetros de la conexión*/ private function setConexion(){ $conf = Conf::getInstance(); $this->servidor=$conf->getHostDB(); $this->base_datos=$conf->getDB(); $this->usuario=$conf->getUserDB(); $this->password=$conf->getPassDB(); } /*Evitamos el clonaje del objeto. Patrón Singleton*/ private function __clone(){ } /*Función encargada de crear, si es necesario, el objeto. Esta es la función que debemos llamar desde fuera de la clase para instanciar el objeto, y así, poder utilizar sus métodos*/ public static function getInstance(){ if (!(self::$_instance instanceof self)){ self::$_instance=new self(); } return self::$_instance; } /*Realiza la conexión a la base de datos.*/ private function conectar(){ $link = $this->link=mysqli_connect($this->servidor, $this->usuario, $this->password); if($link){ $p = mysqli_select_db($this->link, $this->base_datos); @mysqli_query("SET NAMES 'utf8'"); } if (!$link){ error_log(0,'Problema de conexión a la base de datos.'); exit('Perdonen las molestias. Tenemos un problema técnico. Esperamos resolverlo en los próximos minutos'); }else{ $this->link = $link; } }
Votes: 0 - Answers: 1 - Views: 10 Share on: Google Facebook Twitter LinkedIn Link
Answers:
-
Date: 06-06-2019 06:39:41 Saludos
Tendrias que poner bien todo el codigo y que error te marca...
Un ejemplo seria asi...
/* si solo dejas if, te puede dar error */ if(isset($_POST) { /* ocupa addslashes para quitar comillas y apostrofes, evitaras inyecciones */ $nombre= addslashes($_POST["nombre"]); $pass = addslashes($_POST["pass"]); /* funciones para guardar o editar */ /* ejemplo de busqueda $conexion debes tenerla */ $sql = "SELECT nick, email, nombre FROM netolandia where login=:nombre and pass=:pass and activo=1"; $consulta = $conexion->prepare($sql); $consulta->bindParam(':nombre', $nombre); $consulta->bindParam(':pass', $pass); $consulta->execute(); $registro = $consulta->fetch(); /* y tienes en un array el registro si es encontrado y te evitas inyecciones */ }
Si estas iniciando y requieres ayuda, agregame al correo: stryfe.eme@gmail.com Votes: 0 - Link answer
To actively participate in the community first must authenticate, enter the system.Sign In