Clase para el manejo de usuarios en php

Publicado poralegg | En PHP | Posted on 16-07-2010

3

Aunque estemos cómodos con nuestro código, que seguramente hemos utilizado en numerosos proyectos, nunca esta de mas ver “código ajeno”. A mi por lo menos me sirve de mucho y realmente se aprende al ver como otros han resuelto alguna funcionalidad de distinta forma que nosotros  (generalmente mejor, en mi caso).

En este caso,  se trata de  phpuserclass, que es simplemente eso, una clase para manejo de usuarios/login en php y con un extra de un login en jquery un poco mas vistoso.

Url: http://phpuserclass.com/

Clase para mostrar videos desde multiples fuentes

Publicado poralegg | En PHP, Video | Posted on 06-07-2010

0

Por suerte siempre hay algun programador talentoso y trabajador que no da una gran mano a lo que no somos ninguna de las dos cosas.

El tema es que para un proyecto que estoy realizando, necesitaba mostrar videos de varias fuentes (más de 30).  Empece por youtube, sin problemas y despues con un par mas, hasta que algo aburrido de buscar en cada uno de los sitios,  recurri a al viejo phpclasses.org y encontre EmbeVi y ahora son casi feliz.

Bajar EmbeVi

Administrar MySql con Adminer

Publicado poralegg | En MySQL, PHP | Posted on 14-06-2010

1

No se si es algo muy novedoso, pero yo lo he conocido hoy leyendo  Administra tu MySQL con Adminer. En un archivo php tenemos un administrador de base de datos bastante decente. Muy útil para cuando no tenemos acceso a algun panel a la  base directamente, subimos el archivo y ya podemos acceder sin necesidad de subir todo un admin, como el phpmyadmin.

Url:  http://www.adminer.org

Clase PHP para analizar pedidos POST/GET en nuestra web

Publicado poralegg | En PHP, Seguridad | Posted on 05-04-2010

1

Siguiendo con estos posteos en la categoria “paranoia”, encontre esta clase PHP, que nos permite analizar y detectar posible ataques HTTP a nuestras páginas. Para bajar la clase,  en este link.

Seleccionando un Datapicker

Publicado poralegg | En ASP.NET, JQuery, Javascript, PHP | Posted on 11-03-2010

1

Necesitaba elegir un Datapicker o selector de fecha…para un proyecto en donde funcionan varios calendarios al mismo tiempo.  Probe bastantes y finalmente me quede con jQuery Datapicker, uno de los mas livianos de la lista.

Los mejores 10 datapickers

RavenNuke CMS 2.40.00

Publicado poralegg | En PHP | Posted on 14-10-2009

1

RavenNuke,  como su nombre hace sospechar, es un CMS desarrollado en base al muy popular PHP Nuke. La idea de los creadores fue hacer una version mas segura, estable y con nuevas especificaciones. Habra que probarlo.

Url:  http://www.ravenphpscripts.com/

Ya disponible PHP 5.2.11

Publicado poralegg | En PHP | Posted on 06-10-2009

0

Ya esta disponible una nueva versión de nuestro querido PHP. Al parecer hay muchas mejoran en cuando a seguridad.

Detalle de la nueva versión: http://www.php.net/releases/5_2_11.php

Detalle los bugs solucionados:  www.php.net.

Persistir Objetos en PHP

Publicado poralegg | En PHP | Posted on 28-09-2009

0

Para los programadores Java, la persistencia de objetos es algo bastante más habitual que en el desarrollo PHP.  Estas clases nos pueden ayudar a trabajar con objetos.

Url:  http://www.phpclasses.org/browse/package/5686.html

Accediendo a Google Analytics con Curl

Publicado poralegg | En APIS, PHP | Posted on 08-09-2009

0

Para un proyecto reciente me han pedido mostrar en una pagina algunos datos generados por Google Analytics. Para hacerlo, podemos utilizar la Data Export API.

Conectar a nuestra cuenta de Analytics, es muy fácil utilizando la libreria de PHP, curl.


header("Content-type: text/plain");

$email = "tumailde@googleanalytics.com";
$password = "xxxxxxx";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.google.com/accounts/ClientLogin");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_HEADER,true);
curl_setopt($ch, CURLOPT_POSTFIELDS,"accountType=GOOGLE&Email=$email&Passwd=$password&service=analytics&source=untest");
curl_exec($ch);
curl_close($ch);

Aqui les dejo muchas aplicaciones que han sido creadas con esta API.

Clase PHP para administrar las bases de datos de un cPanel

Publicado poralegg | En PHP | Posted on 26-08-2009

1

Hace un par de días necesitaba para un proyecto, que determinados clientes puedan acceder a las bases de datos del servidor, desde si mini panel en el sitio web. Encontre esta clase que me ayudo bastante.


/**
* Name: cPanel Database Class
* Version: 1.0
* Author:     The HungryCoder
* Contact:    thehungrycoder@gmail.com
* Homepage: www.hungrycoder.xenexbd.com
*/

class cpanel_db {
    protected $cpdomain;
    protected $cpuser;
    protected $cppass;
    protected $cptheme;
    private $error;
    public $callresult;

    function __construct($cpdomain,$cpuser,$cppass,$cptheme='x3'){
        $this->cpdomain = $cpdomain;
        $this->cpuser = $cpuser;
        $this->cppass = $cppass;
        $this->cptheme = $cptheme;

    }

    private function callUrl($urlsuffix){
        if(empty($urlsuffix)) return $this->error('URL is empty');

        $url = "http://".$this->cpdomain.":2082/frontend/".$this->cptheme.$urlsuffix;
        $this->callresult=''; //reset
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_HEADER, 1);
        curl_setopt($ch, CURLOPT_USERPWD, "$this->cpuser:$this->cppass");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    //    curl_setopt($ch, CURLOPT_VERBOSE , 1 );
        $this->callresult = curl_exec($ch);
        $info = curl_getinfo($ch);
        curl_close($ch);
        return $info;
    }

    /**
     * Create Database
     *
     * @param string $dbname
     * @return boolean
     */
    public function createDb($dbname){
        $suffix = "/sql/addb.html?db=$dbname";

        //return $this->callresult;
        $this->callUrl($suffix);

        return $this->isSuccess('db');
    }   

    public function createUser($username,$pass){
        $suffix = "/sql/adduser.html?user=$username&pass=$pass&pass2=$pass";

        //return $this->callresult;
        $this->callUrl($suffix);

        return $this->isSuccess('user');
    }

    public function grantPriv($db,$user){
        //prepare the params
        $params = "db=$db&user=$user&update=&ALL=ALL&SELECT=SELECT&CREATE=CREATE&INSERT=INSERT&ALTER=ALTER&UPDATE=UPDATE&DROP=DROP&DELETE=DELETE&LOCKTABLES=LOCK&INDEX=INDEX&REFERENCES=REFERENCES&CREATETEMPORARYTABLES=TEMPORARY&CREATEROUTINE=CREATEROUTINE";
        $callurl = "/sql/addusertodb.html?$params";

        $this->callUrl($callurl);

        return $this->isSuccess('grant');
    }

    private function isSuccess($type='db'){
        switch ($type){
            case 'db':
                if(eregi('Added the database',$this->callresult)){
                    return true;
                } else {
                    return false;
                }
                break;

            case 'user':
                if(eregi('Added user',$this->callresult)){
                    return true;
                } else {
                    return false;
                }
                break;

            case 'grant':
                if(eregi('was added to the database',$this->callresult)){
                    return true;
                } else {
                    return false;
                }
                break;
            case 'deldb':
                if(eregi('deleted the database',$this->callresult)){
                    return true;
                } else {
                    return false;
                }
                break;
            case 'deluser':
                if(eregi('Deleted the user',$this->callresult)){
                    return true;
                } else {
                    return false;
                }
                break;
        }
    }

    public function error($msg){
        $this->error = $msg;
        return false;
    }

    public function runBatch($dbname,$dbuser,$dbpass){
        if(empty($dbname) OR empty($dbuser) OR empty($dbpass)) return false;
        $result = array();
        //create the database
        $result['db'] = $this->createDb($dbname);

        //create the user
        $result['user'] = $this->createUser($dbuser,$dbpass);

        //grant the access with real db name and username
        $result['grant'] = $this->grantPriv($this->cpuser.'_'.$dbname,$this->cpuser.'_'.$dbuser);

        return $result;
    }

    /**
     * This method deletes a number of databases from cpanel.
     *
     * @param array $dbs
     * @return array
     */
    public function delDb($dbs){
        //this method will delete a number of dbs.
        if(is_array($dbs)){
            foreach ($dbs as $db){
                $db_full_name = $this->cpuser .'_'.$db;
                $suffix = "/sql/deldb.html?db=$db_full_name";
                $this->callUrl($suffix);
                $result[$db] = $this->isSuccess('deldb');
            }
            return $result;
        } else {
            $this->error('Not an array');
        }
        return false;
    }
    /**
     * This method deletes a number of users from cpanel.
     *
     * @param array $dbs
     * @return array
     */
    public function delUser($users){
        //this method will delete a number of dbs.
        if(is_array($users)){
            foreach ($users as $user){
                $user_full_name = $this->cpuser .'_'.$user;
                $suffix = "/sql/deluser.html?user=$user_full_name";
                $this->callUrl($suffix);
                $result[$user] = $this->isSuccess('deluser');
            }
            return $result;
        } else {
            $this->error('Not an array');
        }
        return false;
    }

    /**
     * Find whether a database is exists in cPanel or not!
     *
     * @param string $dbname Do not include the database name prefix (anything before _).
     * @return boolean
     */
    public function isDbExists($dbname,$limit=100){
        $suffix = "/sql/index.html?itemsperpage=$limit";
        $this->callUrl($suffix);
        $html = $this->callresult;
        $html = substr($html,stripos($html,'


'));
        $html = str_ireplace('','BR',$html);
        $html = strip_tags($html);
        $all_db = explode('BR',$html); //array of all databases.

        //trim the whitespaces surrounding the dbname
        $all_db = array_map('trim',$all_db);
        //print_r($all_db);

        if(in_array($this->cpuser.'_'.$dbname,$all_db)){
            return true;
        } else {
            return false;
        }
    }   

    public function isUserExists($username,$limit=100){
        $suffix = "/sql/index.html?itemsperpage=$limit";
        $this->callUrl($suffix);
        $html = $this->callresult;

        $html = substr($html,stripos($html,'


'));

        $html = str_ireplace('','BR',$html);
        $html = strip_tags($html);
        $all_user = explode('BR',$html); //array of all databases.

        //trim the whitespaces surrounding the dbname
        $all_user = array_map('trim',$all_user);
        //print_r($all_db);

        if(in_array($this->cpuser.'_'.$username,$all_user)){
            return true;
        } else {
            return false;
        }
    }
}

Usando la clase


error_reporting(E_ALL);
include('cpanel_mysql.class.php');

$db = new cpanel_db('domain','user','pass');

//create db
if($db->createDb('cpdb')){
    echo 'Db Created';
} else {
    echo 'Db not created';
}

//create user
if($db->createUser('cpuser','3837djd')){
    echo 'User Created';
} else {
    echo 'User not created';
}

//grant access
if($db->grantPriv('cpdb','cpuser')){
    echo 'Priv granted';
} else {
    echo 'Priv not granted';
}

//we can run the above three by this single line:
//$result = $db->runBatch('batch','batch','elkdrlfd');
    //we can now check the result
    print_r($result);

//del database
$db->delDb(array('db1','db2','db3'));

//del users
$db->delUser(array('user1','user1','user3'));

//we can also check whether a db/user exists
if($db->isUserExists('cpuser')) echo 'User exists';

if($db->isDbExists('cpdb')) echo 'Db exists';