Mostrando entradas con la etiqueta PHP. Mostrar todas las entradas
Mostrando entradas con la etiqueta PHP. Mostrar todas las entradas

Ejemplo sencillo de cURL, Postear en Twitter

Para los que no conozcan esta librería los invito a leer "cURL, una gran herramienta".

Y aquí les traigo un sencillo ejemplo para que vean la potencia de esta herramienta:

// seteamos nuestro usuario y password
$username = 'username';
$password = 'password';
// escribimos el mensaje
$message = 'is twittering from php using curl';
// esta es la URL de la API de Twitter
$url = 'http://twitter.com/statuses/update.xml';
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, "$url");
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_POST, 1);
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, "status=$message");
curl_setopt($curl_handle, CURLOPT_USERPWD, "$username:$password");
$buffer = curl_exec($curl_handle);
curl_close($curl_handle);
// chequeamos si fué exitoso
if (empty($buffer)) {
    echo 'mensaje de error';
} else {
    echo 'Exitoso!!';
}

Obviamente deberán tener una cuenta en Twitter y si en lugar de dejar fijos los valores de usuario, password y mensaje los tomamos de un formulario nos podriamos crear nuestra propia aplicación para postear en Twitter.

Saludos y que lo disfruten!

Bookmark and Share

cURL, una gran herramienta

cURL es una librería open source/software libre distribuido bajo la licencia MIT que viene incorporada en la mayoría de las distribuciones Linux. En caso de que no lo tengamos podemos descargarlo desde su Web.

Permite conectar y comunicar a muchos tipos diferentes de servidores con diferentes tipos de protocolos. Actualmente soporta los protocolos HTTP, HTTPS, FTP, Gopher, telnet, dict, archivo, y los protocolos LDAP. También soporta certificados HTTPS, HTTP POST, HTTP PUT, envío por FTP (esto también se puede hacer con la extensión ftp de PHP), la forma de carga basados en HTTP, servidores proxy, cookies y autenticación usuario + contraseña.

La idea básica tras las funciones cURL es que se inicializa una sesión cURL usando la función curl_init(), entonces usted puede configurar todas las opciones para la transferencia a través de la curl_setopt(), y finalmente se ejecuta la sesión con el curl_exec() y luego terminar su sesión con el curl_close(). He aquí un ejemplo que usa funciones cURL para traer la página de inicio example.com en un archivo:

$ch = curl_init("http://www.example.com/");
$fp = fopen("example_homepage.txt", "w");

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch);
curl_close($ch);
fclose($fp);

cURL tiene un serie de constantes predefinidas que podemos encontrar en http://ar2.php.net/manual/en/curl.constants.php y también podemos ver la lista de funciones disponibles en http://ar2.php.net/manual/en/ref.curl.php.

Saludos y que lo disfruten!

Bookmark and Share

Manejo de directorios con PHP

En PHP existen muchas funciones para el manejo de directorios (carpetas) y sus contenidos.

En esta ocasión nos centraremos en listar directorios y a su vez sus contenidos de manera recursiva, ya que nos sabemos que puede contener (la conocida estructura de árbol).

Aqui les listo las funciones de PHP que vamos a utilizar:


El funcionamiento sería el siguiente:

La función recibe una ruta. Por ejemplo, si queremos que liste los directorios de la carpeta donde está el archivo la llamaríamos con:

listar_directorios_ruta("./"); 

Lo primero que se hace es comprobar si la ruta recibida es un directorio.

if (is_dir($ruta)) { //... }

Si lo es realizaremos las acciones, pero si no lo es, mostraremos un mensaje diciendo que no es una ruta válida.

En el siguiente if extraemos el gestor de directorio y lo guardamos en una variable $dh

if ($dh = opendir($ruta)) 

Con un bucle while recorreremos cada elemento de ese directorio.

while (($file = readdir($dh)) !== false) 

Dentro del bucle hacemos un if para saber si el elemento es un directorio

if (is_dir($ruta . $file) && $file!="." && $file!="..") 

En caso que sea un directorio, simplemente escribimos en la página. Además, tenemos que ver si ese directorio contiene a su vez otros directorios. Para eso llamamos a la función de nuevo pasándole ese nuevo directorio. Así la función se llama a si misma para mostrar todo el árbol de carpetas.

Por último se cierra el gestor de directorio abierto previamente.

closedir($dh);

Con lo que nuestra función quedaría de la siguiente manera:

function listar_directorios($ruta){ 
   // abrir un directorio y listarlo recursivo 
   if (is_dir($ruta)) { 
      if ($dh = opendir($ruta)) { 
         while (($file = readdir($dh)) !== false) { 
            //esta línea la utilizaríamos si queremos listar todo lo que hay en el directorio 
            //mostraría tanto archivos como directorios 
            echo "Nombre de archivo: $file : Es un: " . filetype($ruta . $file); 
            if (is_dir($ruta . $file) && $file!="." && $file!=".."){ 
               //solo si el archivo es un directorio, distinto que "." y ".." 
               echo "Directorio: $ruta$file"; 
               listar_directorios_ruta($ruta . $file . "/"); 
            } 
         } 
      closedir($dh); 
      } 
   }else 
      echo "No es ruta valida"; 
} 

Saludos y que lo disfruten!

Bookmark and Share

Chachear Páginas con PHP

En nuestro Tip Definir Fecha de Expiración para Optimización de Sitios Web hablamos de lo útil que puede resultar el chacheo de páginas.

Acá les dejo un ejemplo de código en PHP para hacerlo. El funcionamiento es sencillo:

  1. Se incluye el primero de los archivos (cache.start.php) encargado de verificar si existe el chache de la página a la que se ingresa y si sigue siendo válido. En ese caso mostrará el contenido "chacheado".
  2. Se genera el contenido HTML correspondiente sin importar las funciones de "cacheo".
  3. Se incluye el archivo final (cache.end.php) encargado de generar el cache de la página que servira para los sucesivos ingresos.

[*] "cache.start.php":
// Settings
$cachedir = 'cache/';   // directorio de cache
$cachetime = 86400;   // duración del cache
$cacheext = 'cache';   // extensión de cache

// script a procesar
$cachepage = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$cachefile = $cachedir.md5($cachepage).'.'.$cacheext;

// calculamos el tiempo del cache
if (@file_exists($cachefile)) {
$cachelast = @filemtime($cachefile);
} else {
$cachelast = 0;
}

@clearstatcache();

// Mostramos el archivo si aun no vence
if (time() - $cachetime <$cachelast) {
@readfile($cachefile);
exit();
}

ob_start();
[*] "cache.end.php":
// Generamos el nuevo archivo cache
$fp = @fopen($cachefile, 'w');

// guardamos el contenido del buffer
@fwrite($fp, ob_get_contents());
@fclose($fp);

ob_end_flush();
[*] Implmentación:
include("cache.start.php");

// Aqui el código HTML

include("cache.end.php");
Saludos y que lo disfruten!
Bookmark and Share