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<?php
/********************************************************\
* EasyLogin *
**********************************************************
* Autor: Pato12 de forosdelweb.com *
* Version: 3.0 (BETA) *
* Web del autor: halfmusic.com *
* Descripcion: *
* Sirve para registrar, logiar, revisar si un *
* usuario existe, etc... *
**********************************************************
**********************************************************
* Este scriopt PHP es libre de usar siempre *
* cuando no borren estas lineas y respeten la *
* Licencia: GNU General Public License *
* http://creativecommons.org/licenses/GPL/2.0/deed.es_AR *
*********************************************************/
class EasyLogin{
'conexion'=>false,
'tabla'=>false,
'campos'=>false,
'modo'=>'mysql'
);
public function __construct($conexion=false,$tabla=false,$campos=false,$modo=false){
$error=false;
if($modo !== false)
$this->data['modo']=($modo=='postgres'?'postgres':($modo=='mssql'?'mssql':($modo=='oracle'?'oracle':'mysql')));
if($this->conpatible() === false)
return $this->setError('Tu configuracion PHP, no es compatible con el modo elejido ('.$this->data['modo'].').');
$conexion=$this->conectarBD($conexion);
if($conexion === false){
$this->setError("Conexion no valida.");
$error=true;
}
if($tabla === false){
$this->setError("Tabla no valida.");
$error=true;
}
if($campos === false || !is_array($campos)){ $this->setError("Campos no validos.");
$error=true;
}
$this->data['tabla']=$this->filtro($tabla);
$this->data['campos']=$campos;
$this->data['conexion']=$conexion;
return !$error;
}
public function loginUser($user,$clave){
if($this->data['conexion'] === false)
return $this->data['conexion'];
$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)); $consultar = $this->query_sql($consulta);
if($this->data['modo']=='mysql')
elseif($this->data['modo']=='postgres')
elseif($this->data['modo']=='mssql')
elseif($this->data['modo']=='oracle')
return oci_num_rows($consultar)==1;
}
public function dataUser($dato,$select=false){
if($this->data['conexion'] === false)
return $this->data['conexion'];
$consulta = sprintf("SELECT %s FROM %s WHERE %s='%s'","*",$this->data['tabla'],!$select?
$this->data['campos'][0]:$this->filtro($select),$this->filtro($dato)); $consultar = $this->query_sql($consulta);
if($this->data['modo']=='mysql')
elseif($this->data['modo']=='postgres')
elseif($this->data['modo']=='mssql')
elseif($this->data['modo']=='oracle')
return oci_num_rows($consultar)>0?oci_fetch_array($consultar):false;
}
public function existeUser($user){
if($this->data['conexion'] === false)
return $this->data['conexion'];
$consulta=sprintf("SELECT * FROM %s WHERE %s='%s'",$this->data['tabla'],$this->data['campos'][0],$this->filtro($user)); $consultar = $this->query_sql($consulta);
if($this->data['modo']=='mysql')
elseif($this->data['modo']=='postgres')
elseif($this->data['modo']=='mssql')
elseif($this->data['modo']=='oracle')
return oci_num_rows($consultar)>0;
}
public function registrar($datos,$campos){
if($this->data['conexion'] === false)
return $this->data['conexion'];
$this->setError("Los campos o datos, no son array.");
$consulta=sprintf("INSERT INTO %s (%s) VALUES (%s)",$this->data['tabla'],implode(',',$campos),'\''.implode("','",$datos).'\''); return $this->query_sql($consulta);
}
public function getError(){
return $this->data['errores'];
}
public function filtro($value){
}
public function closedBD(){
if($this->data['modo']=='mysql')
elseif($this->data['modo']=='postgres')
return pg_close($this->data['conexion']); elseif($this->data['modo']=='mssql')
elseif($this->data['modo']=='oracle')
return oci_close($this->data['conexion']);
}
private function conectarBD($datos){
if($this->data['modo']=='mysql'){
$conexion = mysql_connect(!$datos[0]?
'localhost':$datos[0],$datos[1],$datos[2]) or
$this->setError("Datos de conexion al servidor mal (".mysql_error().")."); $conexion_bd = mysql_select_db($datos[3],$conexion) or
$this->setError("BD o conexion con el servidor, erronea (".mysql_error().")"); return $conexion&&$conexion_bd?$conexion:false;
}elseif($this->data['modo']=='postgres'){
$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."); return $conexion;
}elseif($this->data['modo']=='mssql'){
$conexion = mssql_connect(!$datos[0]?
'localhost':$datos[0],$datos[1],$datos[2]) or
$this->setError("Datos de conexion al servidor mal."); $conexion_bd = mssql_select_db($datos[3],$conexion) or
$this->setError("BD o conexion con el servidor errada."); return $conexion&&$conexion_bd?$conexion:false;
}elseif($this->data['modo']=='oracle'){
$conexion = oci_connect($datos[0],$datos[1],$datos[2]);
return $conexion;
}
}
private function setError($err){
$this->data['errores'][]=$err;
}
private function query_sql($sql){
if($this->data['modo']=='mysql')
elseif($this->data['modo']=='postgres')
return pg_query($this->data['conexion'],$sql); elseif($this->data['modo']=='mssql')
elseif($this->data['modo']=='oracle'){
$consulta = oci_parse($this->data['conexion'],$sql);
oci_execute($consulta);
return $consulta;
}
}
private function conpatible(){
if($this->data['modo']=='mysql')
elseif($this->data['modo']=='postgres')
elseif($this->data['modo']=='mssql')
elseif($this->data['modo']=='oracle')
}
}
?>
Modo de iniciar la class:
Mysql
Código php:
Ver original$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$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$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$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<?php
include('EasyLogin 3-0.php');
$sis = new EasyLogin
(array("localhost","root","","base_de_datos"),'users',array('nick','clave'),'mysql');
$usuario = 'demo_user'; // Usuario a registrar
$clave = 'demo'; // Clave del usuario
if($sis->existeUser($usuario)){ // Si el usuario existe
echo "No se pudo registrar, el usuario ya existe."; // Imprimimos
}else{ // Si no
$campos=array('nick','clave','email'); // Definimos campos $datos=array($sis->filtro($usuario),$sis->filtro($clave),'[email protected]'); // Definimos los datos del campo $reg=$sis->registrar($datos,$campos); // Registramos
if($reg){ // Si salio bien
echo "Registrado correctamente.<br />"; // Lo decimos
if($sis->loginUser($usuario,$clave)){ // Lo logeamos
echo "Logeadio!"; // Si se logeo bien lo decimos
var_dump($sis->dataUser($usuario)); // Un dump de sus datos // aqui la session o cookies que identifique al usuario
}else // Si no se logeio
echo "No se pudo logear"; // Lo decimos
}else // Si no se registro
echo "No se pudo registrar."; // Lo decimos
}
var_dump($sis->getError()); // Hacemos un dump de los errores que se producieron
$sis->closedBD(); // Cerramos la conexion a la bd
?>
Repito, solo lo probe en
mysql.. yo nunca use otro que no sea mysql, por eso puede tener bug..
Gracias
Salu2