Foros del Web » Programando para Internet » PHP »

[APORTE] EasyLogin 3.0

Estas en el tema de [APORTE] EasyLogin 3.0 en el foro de PHP en Foros del Web. Hola, Aqui esta la vercion 3.0 de Easy Login ( BETA ). Esta vercion, podes elejir entre Mysql , SQL Server , PostgreSQL o Oracle ...
  #1 (permalink)  
Antiguo 18/09/2009, 17:52
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 16 años, 6 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
  #2 (permalink)  
Antiguo 18/09/2009, 20:13
Avatar de MaTyS  
Fecha de Ingreso: enero-2009
Ubicación: Mar del Plata
Mensajes: 220
Antigüedad: 15 años, 3 meses
Puntos: 18
Respuesta: [APORTE] EasyLogin 3.0

Hola pato12, este es un excelente aporte ademas muy buen soporte para los distinto tipo de base de datos.
Se nota que el código esta muy desarrollado, ya lo estoy probando y en breve te aviso.
Un saludo
  #3 (permalink)  
Antiguo 19/09/2009, 12:51
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 16 años, 6 meses
Puntos: 101
Respuesta: [APORTE] EasyLogin 3.0

Gracias...
Ya tengo muchas mejoras planeadas y para que maneje mas base de datos jaja
Salu2
__________________
Half Music - www.halfmusic.com
  #4 (permalink)  
Antiguo 20/09/2009, 00:41
Avatar de MaTyS  
Fecha de Ingreso: enero-2009
Ubicación: Mar del Plata
Mensajes: 220
Antigüedad: 15 años, 3 meses
Puntos: 18
Respuesta: [APORTE] EasyLogin 3.0

Funciono de maravilla.
Además un lujo que funcione para distinto tipos de base de datos :).
Saludos.
  #5 (permalink)  
Antiguo 22/09/2009, 20:58
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 16 años, 6 meses
Puntos: 101
Respuesta: [APORTE] EasyLogin 3.0

Hola,
El tenga alguna sugerencia.. comentela :P
Ya tengo una vercion ya echa.. que esta optimizada, mas funciones, y mas base de datos :D
Gracias
Salu2
__________________
Half Music - www.halfmusic.com
  #6 (permalink)  
Antiguo 22/09/2009, 22:02
 
Fecha de Ingreso: noviembre-2008
Ubicación: En algún lugar del disco duro.
Mensajes: 95
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: [APORTE] EasyLogin 3.0

Excelente pato12

Última edición por mariosequeda; 22/09/2009 a las 22:08
  #7 (permalink)  
Antiguo 23/09/2009, 20:31
 
Fecha de Ingreso: noviembre-2008
Ubicación: En algún lugar del disco duro.
Mensajes: 95
Antigüedad: 15 años, 5 meses
Puntos: 0
Sonrisa Respuesta: [APORTE] EasyLogin 3.0

disculpa la preguntadera amigo pato12 pero quiero que me digas como implemento esta parte con la ultima version del Easy

Código PHP:
include('config.php');
if(
$us->login('NICK DEL USUARIO','CLAVE DEL USUARIO'))
echo 
"Usuario logeado correctamente.";
else
echo 
"El nick o clave esta mal."
mejor dicho como inicio la sesion en las paginas protegidas, gracias de antemano.

Última edición por mariosequeda; 23/09/2009 a las 20:46
  #8 (permalink)  
Antiguo 23/09/2009, 21:50
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 16 años, 6 meses
Puntos: 101
Respuesta: [APORTE] EasyLogin 3.0

Hola,
Mira el modo de uso de arriba..
Suerte
Salu2
__________________
Half Music - www.halfmusic.com
  #9 (permalink)  
Antiguo 27/09/2009, 00:36
Avatar de MaTyS  
Fecha de Ingreso: enero-2009
Ubicación: Mar del Plata
Mensajes: 220
Antigüedad: 15 años, 3 meses
Puntos: 18
Respuesta: [APORTE] EasyLogin 3.0

Hola de nuevo.
Pato lo probé en PostgreSQL, y me funciono de maravilla :).
Se agradece saludos.
  #10 (permalink)  
Antiguo 11/10/2009, 15:31
 
Fecha de Ingreso: noviembre-2008
Ubicación: En algún lugar del disco duro.
Mensajes: 95
Antigüedad: 15 años, 5 meses
Puntos: 0
Sonrisa Respuesta: [APORTE] EasyLogin 3.0

Hola amigo pato12 aquí vengo con otra consulta resulta que estoy usando el EasyLogin 3.0 y me dice siempre esto: No se pudo logear y cuando imprimo los errores me muestra lo siguiente: array(0) { } aquí te dejo el código como lo estoy usando.

Código PHP:
include('Clases/EasyLogin 3-0.php');
$sis = new EasyLogin(array("localhost","aqui mi usuario","aqui mi pass","siscart"),'users',array('username','password'),'mysql');
if(
$sis->loginUser($usuario,$clave)){ // Lo logeamos
            
echo "Logeadio!"// Si se logeo bien lo decimos
            
var_dump($sis->dataUser($usuario,$clave)); // Un dump de sus datos
        
}else // Si no se logeio
            
echo "No se pudo logear"// Lo decimos
            
var_dump($sis->getError()); 
gracias de antemano por tu ayuda.
  #11 (permalink)  
Antiguo 11/10/2009, 16:39
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 16 años, 6 meses
Puntos: 101
Respuesta: [APORTE] EasyLogin 3.0

Hola,
Las variables $usuario y $clave existen? exiten registros en la tabla?
Suerte
Salu2
__________________
Half Music - www.halfmusic.com
  #12 (permalink)  
Antiguo 12/10/2009, 08:55
 
Fecha de Ingreso: noviembre-2008
Ubicación: En algún lugar del disco duro.
Mensajes: 95
Antigüedad: 15 años, 5 meses
Puntos: 0
Sonrisa

hola amigo pato12 ya corregi el error pues efectivamente no tenia las variables $usuario y $clave y aunque existen exiten registros en la tabla ahora me muestra el siguiente error y no he podido encontrar la solucion, mejor dicho el usuario se puede logear pero igualmente aparece el error ahi te lo dejo lo.

Logeadio! admin
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\Siscart\Clases\EasyLogin 3-0.php on line 71
bool(false) array(0) { }

gracias por tu ayuda amigo.

listo amigo ya lo corregí aplicando el ejemplo de nivel de usuarios gracias de todas formas.

disculpa amigo una ultima consulta me das una idea de como manejar sesiones con este sistema, gracias.

Última edición por GatorV; 12/10/2009 a las 10:04
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 14:07.