Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/09/2009, 17:52
Avatar de pato12
pato12
 
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 16 años, 7 meses
Puntos: 101
[APORTE] EasyLogin 3.0

Hola,
Aqui esta la vercion 3.0 de Easy Login (BETA). Esta vercion, podes elejir entre Mysql, SQL Server, PostgreSQL o Oracle

El modo de uso de esta vercion es igual a la anterior vercion. Lo unico que cambia es el modo de que se inicia la class. Yo solo probe el mysql y anda bien, los otros no los probe porque no los tengo .. el que lo pruebe.. me avisa

Código php:
Ver original
  1. <?php
  2. /********************************************************\
  3. *                     EasyLogin                          *
  4. **********************************************************
  5. * Autor: Pato12 de forosdelweb.com                       *
  6. * Version: 3.0 (BETA)                                    *
  7. * Web del autor: halfmusic.com                           *
  8. * Descripcion:                                           *
  9. * Sirve para registrar, logiar, revisar si un            *
  10. * usuario existe, etc...                                 *
  11. **********************************************************
  12. **********************************************************
  13. * Este scriopt PHP es libre de usar siempre              *
  14. * cuando no borren estas lineas y respeten la            *
  15. * Licencia: GNU General Public License                   *
  16. * http://creativecommons.org/licenses/GPL/2.0/deed.es_AR *
  17. *********************************************************/
  18. class EasyLogin{
  19.     protected $data=array(
  20.                     'conexion'=>false,
  21.                     'tabla'=>false,
  22.                     'campos'=>false,
  23.                     'errores'=>array(),
  24.                     'modo'=>'mysql'
  25.                     );
  26.     public function __construct($conexion=false,$tabla=false,$campos=false,$modo=false){
  27.         $error=false;
  28.         if($modo !== false)
  29.             $this->data['modo']=($modo=='postgres'?'postgres':($modo=='mssql'?'mssql':($modo=='oracle'?'oracle':'mysql')));
  30.         if($this->conpatible() === false)
  31.             return $this->setError('Tu configuracion PHP, no es compatible con el modo elejido ('.$this->data['modo'].').');
  32.         if(is_array($conexion))
  33.             $conexion=$this->conectarBD($conexion);
  34.         if($conexion === false){
  35.             $this->setError("Conexion no valida.");
  36.             $error=true;
  37.         }
  38.         if($tabla === false){
  39.             $this->setError("Tabla no valida.");
  40.             $error=true;
  41.         }
  42.         if($campos === false || !is_array($campos)){
  43.             $this->setError("Campos no validos.");
  44.             $error=true;
  45.         }
  46.         $this->data['tabla']=$this->filtro($tabla);
  47.         $this->data['campos']=$campos;
  48.         $this->data['conexion']=$conexion;
  49.         return !$error;
  50.     }
  51.     public function loginUser($user,$clave){
  52.         if($this->data['conexion'] === false)
  53.             return $this->data['conexion'];
  54.         $consulta = sprintf("SELECT * FROM %s WHERE %s='%s' AND %s='%s'",$this->data['tabla'],$this->data['campos'][0],$this->filtro($user),$this->data['campos'][1],$this->filtro($clave));
  55.         $consultar = $this->query_sql($consulta);
  56.         if($this->data['modo']=='mysql')
  57.             return mysql_num_rows($consultar)==1;
  58.         elseif($this->data['modo']=='postgres')
  59.             return pg_num_rows($consultar)==1;
  60.         elseif($this->data['modo']=='mssql')
  61.             return mssql_num_rows($consultar)==1;
  62.         elseif($this->data['modo']=='oracle')
  63.             return oci_num_rows($consultar)==1;
  64.     }
  65.     public function dataUser($dato,$select=false){
  66.         if($this->data['conexion'] === false)
  67.             return $this->data['conexion'];
  68.         $consulta = sprintf("SELECT %s FROM %s WHERE %s='%s'","*",$this->data['tabla'],!$select?$this->data['campos'][0]:$this->filtro($select),$this->filtro($dato));
  69.         $consultar = $this->query_sql($consulta);
  70.         if($this->data['modo']=='mysql')
  71.             return mysql_num_rows($consultar)>0?mysql_fetch_array($consultar):false;
  72.         elseif($this->data['modo']=='postgres')
  73.             return pg_num_rows($consultar)>0?pg_fetch_array($consultar):false;
  74.         elseif($this->data['modo']=='mssql')
  75.             return mssql_num_rows($consultar)>0?mssql_fetch_array($consultar):false;
  76.         elseif($this->data['modo']=='oracle')
  77.             return oci_num_rows($consultar)>0?oci_fetch_array($consultar):false;
  78.     }
  79.     public function existeUser($user){
  80.         if($this->data['conexion'] === false)
  81.             return $this->data['conexion'];
  82.         $user=stripslashes($this->filtro($user));
  83.         $consulta=sprintf("SELECT * FROM %s WHERE %s='%s'",$this->data['tabla'],$this->data['campos'][0],$this->filtro($user));
  84.         $consultar = $this->query_sql($consulta);
  85.         if($this->data['modo']=='mysql')
  86.             return mysql_num_rows($consultar)>0;
  87.         elseif($this->data['modo']=='postgres')
  88.             return pg_num_rows($consultar)>0;
  89.         elseif($this->data['modo']=='mssql')
  90.             return mssql_num_rows($consultar)>0;
  91.         elseif($this->data['modo']=='oracle')
  92.             return oci_num_rows($consultar)>0;
  93.     }
  94.     public function registrar($datos,$campos){
  95.         if($this->data['conexion'] === false)
  96.             return $this->data['conexion'];
  97.         if(!is_array($campos)||!is_array($datos))
  98.             $this->setError("Los campos o datos, no son array.");
  99.         $consulta=sprintf("INSERT INTO %s (%s) VALUES (%s)",$this->data['tabla'],implode(',',$campos),'\''.implode("','",$datos).'\'');
  100.         return $this->query_sql($consulta);
  101.     }
  102.     public function getError(){
  103.         return $this->data['errores'];
  104.     }
  105.     public function filtro($value){
  106.         return addslashes(trim(htmlentities($value)));
  107.     }
  108.     public function closedBD(){
  109.         if($this->data['modo']=='mysql')
  110.             return mysql_close($this->data['conexion']);
  111.         elseif($this->data['modo']=='postgres')
  112.             return pg_close($this->data['conexion']);
  113.         elseif($this->data['modo']=='mssql')
  114.             return mssql_close($this->data['conexion']);
  115.         elseif($this->data['modo']=='oracle')
  116.             return oci_close($this->data['conexion']);
  117.     }
  118.     private function conectarBD($datos){
  119.         if($this->data['modo']=='mysql'){
  120.             $conexion = mysql_connect(!$datos[0]?'localhost':$datos[0],$datos[1],$datos[2]) or $this->setError("Datos de conexion al servidor mal (".mysql_error().").");
  121.             $conexion_bd = mysql_select_db($datos[3],$conexion) or $this->setError("BD o conexion con el servidor, erronea (".mysql_error().")");
  122.             return $conexion&&$conexion_bd?$conexion:false;
  123.         }elseif($this->data['modo']=='postgres'){
  124.             $conexion = pg_connect("host=".(!$datos[0]?'localhost':$datos[0])." port=".$datos[1]." dbname=".$datos[4]." user=".$datos[2]." password=".$datos[3]."") or $this->setError("Datos de conexion al servidor mal.");
  125.             return $conexion;
  126.         }elseif($this->data['modo']=='mssql'){
  127.             $conexion = mssql_connect(!$datos[0]?'localhost':$datos[0],$datos[1],$datos[2]) or $this->setError("Datos de conexion al servidor mal.");
  128.             $conexion_bd = mssql_select_db($datos[3],$conexion) or $this->setError("BD o conexion con el servidor errada.");
  129.             return $conexion&&$conexion_bd?$conexion:false;
  130.         }elseif($this->data['modo']=='oracle'){
  131.             $conexion = oci_connect($datos[0],$datos[1],$datos[2]);
  132.             return $conexion;
  133.         }
  134.     }
  135.     private function setError($err){
  136.         $this->data['errores'][]=$err;
  137.     }
  138.     private function query_sql($sql){
  139.         if($this->data['modo']=='mysql')
  140.             return mysql_query($sql,$this->data['conexion']);
  141.         elseif($this->data['modo']=='postgres')
  142.             return pg_query($this->data['conexion'],$sql);
  143.         elseif($this->data['modo']=='mssql')
  144.             return mssql_query($sql,$this->data['conexion']);
  145.         elseif($this->data['modo']=='oracle'){
  146.             $consulta = oci_parse($this->data['conexion'],$sql);
  147.             oci_execute($consulta);
  148.             return $consulta;
  149.         }
  150.     }
  151.     private function conpatible(){
  152.         if($this->data['modo']=='mysql')
  153.             return function_exists('mysql_query');
  154.         elseif($this->data['modo']=='postgres')
  155.             return function_exists('pg_query');
  156.         elseif($this->data['modo']=='mssql')
  157.             return function_exists('mssql_query');
  158.         elseif($this->data['modo']=='oracle')
  159.             return function_exists('oci_parse');
  160.     }
  161. }
  162. ?>

Modo de iniciar la class:
Mysql
Código php:
Ver original
  1. $sis = new EasyLogin(array("localhost","root","","base_de_datos"),'tabla_users',array('fila_nick','fila_clave'),'mysql'); // Este ultimo parametro, es opcional, si no se define por defecto es mysql

SQL Server
Código php:
Ver original
  1. $sis = new EasyLogin(array('host','usuario','clave','base_de_datos'),'tabla_users',array('fila_nick','fila_clave'),'mssql'); // Este ultimo parametro, es mssql para usar SQL Server

PostgreSQL
Código php:
Ver original
  1. $sis = new EasyLogin(array('host','puerto','usuario','clave','base_de_datos'),'tabla_users',array('fila_nick','fila_clave'),'postgres'); // Este ultimo parametro, es postgrespara usar PostgreSQL

Oracle
Código php:
Ver original
  1. $sis = new EasyLogin(array('usuario','clave','base_de_datos'),'tabla_users',array('fila_nick','fila_clave'),'oracle'); // Este ultimo parametro, es postgrespara usar Oracle

Modo de uso
Código php:
Ver original
  1. <?php
  2. include('EasyLogin 3-0.php');
  3. $sis = new EasyLogin(array("localhost","root","","base_de_datos"),'users',array('nick','clave'),'mysql');
  4.  
  5. $usuario = 'demo_user'; // Usuario a registrar
  6. $clave = 'demo'; // Clave del usuario
  7.  
  8. if($sis->existeUser($usuario)){ // Si el usuario existe
  9.     echo "No se pudo registrar, el usuario ya existe."; // Imprimimos
  10. }else{ // Si no
  11.     $campos=array('nick','clave','email'); // Definimos campos
  12.     $datos=array($sis->filtro($usuario),$sis->filtro($clave),'[email protected]'); // Definimos los datos del campo
  13.     $reg=$sis->registrar($datos,$campos); // Registramos
  14.     if($reg){ // Si salio bien
  15.         echo "Registrado correctamente.<br />"; // Lo decimos
  16.         if($sis->loginUser($usuario,$clave)){ // Lo logeamos
  17.             echo "Logeadio!"; // Si se logeo bien lo decimos
  18.             var_dump($sis->dataUser($usuario)); // Un dump de sus datos
  19.             // aqui la session o cookies que identifique al usuario
  20.         }else // Si no se logeio
  21.             echo "No se pudo logear"; // Lo decimos
  22.     }else // Si no se registro
  23.         echo "No se pudo registrar."; // Lo decimos
  24. }
  25. var_dump($sis->getError()); // Hacemos un dump de los errores que se producieron
  26.  
  27. $sis->closedBD(); // Cerramos la conexion a la bd
  28. ?>

Repito, solo lo probe en mysql.. yo nunca use otro que no sea mysql, por eso puede tener bug..

Gracias
Salu2
__________________
Half Music - www.halfmusic.com

Última edición por pato12; 23/09/2009 a las 21:50 Razón: Agregar modo de uso :P