Código PHP:
class Db{
private $servidor;
private $usuario;
private $password;
private $base_datos;
private $link;
private $result;
private $num;
private $array;
static $_instance;
private function __construct(){
$this->setConexion();
$this->conectar();
}
private function setConexion(){
$conf = Conf::getInstance();
$this->servidor=$conf->getHostDB();
$this->base_datos=$conf->getDB();
$this->usuario=$conf->getUserDB();
$this->password=$conf->getPassDB();
}
private function __clone(){ }
public static function getInstance(){
if (!(self::$_instance instanceof self)){
self::$_instance=new self();
}
return self::$_instance;
}
private function conectar(){
$link=mysql_connect($this->servidor, $this->usuario, $this->password);
if ($link){
mysql_select_db($this->base_datos,$link);
@mysql_query("SET NAMES 'utf8'");
}
if (!$link){
exit('Error en la BD');
}else{
$this->link=$link;
}
}
/*Método para ejecutar una sentencia sql*/
public function ejecutar($sql){
$this->result=mysql_query($sql,$this->link) or die(mysql_error());
return $this->result;
}
/*Método número de registros de query*/
public function numero_registros($result){
$this->num=mysql_num_rows($result);
return $this->num;
}
/*Método para obtener una fila de resultados de la sentencia sql*/
public function obtener_fila($result,$fila){
if ($fila==0){
$this->array=mysql_fetch_array($result);
}else{
mysql_data_seek($result,$fila);
$this->array=mysql_fetch_array($result);
}
return $this->array;
}
//Método de seguridad de cadenas
public function setSecure($string){
if(is_string($string)){
return mysql_real_escape_string(stripslashes(trim($string)));
}
}
/*cerrar la conexion*/
public function __destruct(){
if (is_resource($this->link)){
@mysql_close($this->link);
}
}
}
Y esta es la clase que intento crear la de Usuarios:
Código PHP:
/*Incluimos el fichero de la clase Db*/
require_once 'dbConfig/Db.class.php';
/*Incluimos el fichero de la clase Conf*/
require_once 'dbConfig/Conf.class.php';
/* Clase encarga de gestionar al usuario */
class Users extends Db{
private $sql;
private $result;
private $num;
private $userID;
static $_instance;
private function __construct(){
session_start();
$bd = Db::getInstance();
}
public static function getInstance(){
if (!(self::$_instance instanceof self)){
self::$_instance=new self();
}
return self::$_instance;
}
//Método login de los USUARIOS
public function login($usuario, $password){
$sql="SELECT * FROM user WHERE ...";
$result=$this->ejecutar($sql);
$num=$this->numero_registros($result);
if($num > 0){
$sql="SELECT * FROM user WHERE ....";
$result=$this->ejecutar($sql);
$num=$this->numero_registros($result);
if($num>0){
while ($x=$this->obtener_fila($result,0)){
$userID=$x['customers_id'];
}
$_SESSION["userID"]=$userID;
return 1;
}
else{/*error de contraseña*/ return 0;}
}
else{/*error de usuario*/ return 0;}
}
public function getUserSession(){
return $_SESSION["userID"];
}
}
Y aqui llamo al objeto:
Código PHP:
/*Incluimos el fichero de la clase Users*/
require_once 'lib/Users.class.php';
session_start();
//Invocamos al objeto usuario
$objUsers=Users::getInstance();
//Obtenemos los datos introducidos por el usuario
$usuario=$_POST["usuario"];
$password=$_POST["password"];
//comprobamos si existe
$existe_Usuario=$objUsers->login($usuario,$password);
if($existe_Usuario==1){
echo "entro!";
}
else {
echo "no es usuario!";
}
Pero cuando pruebo la clase en el formulario me muestra este error:
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in Db.class.php on line 65
Creo que no estoy instanciando bien la conexión a la clase de usuarios... y no sé si estoy invocando bien a los métodos, espero me puedan ayudar ya que estoy bien frio en la p.o.o. , gracias.