miércoles, 27 de marzo de 2013

Curl PHP

PHP soporta libcurl, una biblioteca creada por Daniel Stenberg que permite conectarse y comunicarse con diferentes tipos de servidores y diferentes tipos de protocolos. Actualmente, libcurl admite los protocolos http, https, ftp, gopher, telnet, dict, file y ldap. libcurl también admite certificados HTTPS, HTTP, POST, HTTP PUT, subidas mediante FTP (también se puede hacer con la extensión FTP de PHP), subidas basadas en formularios HTTP, proxies, cookies, y autenticación usuario+contraseña. ver toda la info en http://php.net/manual/es/book.curl.php ahora vamos a instalar
# aptitude install php5-curl
luego verifique su configuracion de php con un de momento mostrare un codigo que uso en symfony para obtener la info del CNE a partir de una cedula.. luego usteder jugaran con este y otros codigos como quieran.. paso 1 crear una carpeta functions en proy/lib
$ mkdir /var/www/proy/lib/functions
y dentro de eso creo una clase que contendra un metodo para invocar esta funcion proy/lib/functions/functions.class.php
class functions {
public static function getDatosCne($ci){
        $url="http://www.cne.gov.ve/web/registro_electoral/ce.php?nacionalidad=V&cedula=$ci";
        $curl = curl_init();
        curl_setopt ($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // almacene en una variable
        curl_setopt($curl, CURLOPT_HEADER, true);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $cne='';

        if(curl_exec($curl) === false){
            echo 'Curl error: ' . curl_error($curl);
        }else
        {
            $cne = curl_exec($curl);
            $inicio = stripos($cne, '');
            if($inicio){
                $cne_datos = substr($cne,$inicio);

                $fin = stripos($cne_datos, '
'); $cne_datos = substr($cne_datos,0,$fin+8); $cne = $cne_datos; } else{ $cne = false; } } curl_close($curl); return $cne; } }
y luego en mi action uso este metodo para obtener los datos del CNE de una persona en particular..
$cne = functions::getDatosCne($persona->getCi());
y si necesito algun dato en particular de la informacion que estoy recibiendo simplemente hago un explode de la cadena
foreach($personas as $persona){
 $persona_cne = new PersonaCne();
 $persona_cne->setPersonaId($persona->getId());
 $cne = functions::getDatosCne($persona->getCi());
 if($cne){
  $persona_cne->setCne($cne);
  $cne = strip_tags(htmlspecialchars_decode($cne));
  $ci = explode('Nombre:',$cne);
  $n_ci = explode(':',$ci[0]);
  $persona_cne->setCneCi(trim($n_ci[1]));
  $nombre = explode('Estado:',$ci[1]);
  $persona_cne->setCneNombre(trim($nombre[0]));
  $estado = explode('Municipio:',$nombre[1]);
  $persona_cne->setCneEstado(trim($estado[0])); 
  $municipio = explode('Parroquia:',$estado[1]);
  $persona_cne->setCneMunicipio(trim($municipio[0]));
  $parroquia = explode('Centro:',$municipio[1]);
  $persona_cne->setCneParroquia(trim($parroquia[0]));
  $centro = explode('Direccion:',$parroquia[1]);
  $persona_cne->setCneCentro(trim($centro[0])); 
 }
 $persona_cne->save();
}
y listo..

2 comentarios:

  1. Gracias por tu aporte amigo quisiera que me ayudaras con un pequeño error que tengo en mi cURL Amigo te lo agradeseria si puedo ayudarte en algo colo escribirme amigo aqui donde puedas contactarme ayudame en mi error si amigo gracias

    Whatsapp : 301-306-9173

    https://www.facebook.com/profile.php?id=100009047367176

    ResponderEliminar