05
nov 11

Convertir un script php en ejecutable en linux

Una práctica que nos puede ser muy útil para ejecutar programas php desde la consola de linux (incluso con phpgtk para xwindow) es la de convertirlos en ejecutable directamente, sin compilación.

Como programa de ejemplo pondremos el archifamoso “Hola Mundo” al que llamaremos hola.php.

<?php
   echo( "¡Hola Mundo!" );
?>

Ahora lo pordríamos ejecutar en linux con el comando

$ php -q hola.php

Le podemos cambiar la extensión si queremos hola.php -> hola.

Después lo editamos para ponerle al principio del fichero de texto la dirección de ejecución de php. Podemos saber dónde está el php con el comando:

$ whereis php

Al principio del fichero hola.php ponemos:

#!/usr/bin/php -q

con lo que quedaría

#!/usr/bin/php -q
<?php
   echo( "¡Hola Mundo!" );
?>

Por último lo que tenemos es que decirle a linux que es ejecutable:

$ chmod +x hola.php

Y es todo. Para ejecutarlo solamente hay que llamarlo:

$ hola.php


09
sep 11

Botón de facebook con detección automática de URL

En esta ocasión traigo un pequeño script que soluciona algunos problemas que hemos tenido algunos para incluir en una página web, que no tenga plugins, el botón de facebook, sin tener que meterla a mano, y que la detecte automáticamente.
El botón que genera facebook desde su develop site obliga a añadir directamente la url que se va a guardar en los “Me gusta”, así que he tenido que improvisar para añadir la URL dinámicamente.
Tendremos que añadir el script en la parte del HTML donde queramos que aparezca el botón:

<script type="text/javascript">
	var s="http://www.facebook.com/plugins/like.php?
		href=" + encodeURI(location.href) +
			"&amp;layout=button_count&amp;show_faces=false
			&amp;width=120&amp;action=like&amp;colorscheme=light";
	document.write( '<iframe src='+s+
		' scrolling="no" frameborder="0" allowTransparency="true"
		style="border:none; overflow:hidden; width:120px;
		height:20px"></iframe>' );
</script>

…y solucionado.


07
abr 11

Ocultar email a los robots en nuestras páginas.

En muchas ocasiones, nos es conveniente añadir el correo a nuestra página web, por muchos motivos, pero con ello corremos el riesgo que los robots “SPAM” lo anoten para que nos rellenen el buzón de correos no deseados. Para evitarlo hay muchas formas, por ejemplo poner la cuenta de correo como un gráfico, sustituir la arroba por [at] y el punto por [dot], o incluir un javascript que lo incluya ya que la mayoría de estos robots no leen el javascript.
Pero a mi personalmente una solución elegante que me gusta mucho es la de escribir el correo alrevés. Posiblemente algunos de estos robots ya lo lean, pero realmente el correo permanece oculto más tiempo a éstos.
Para ello, no vamos a poner todo el correo al revés, solamente nombre y nombre de dominio.

    <style>
        .alreves { unicode-bidi:bidi-override; direction: rtl; }
    </style>
    <span class='alreves'>abeurp</span>@<span class='alreves'>phpogidoc</span>.net
</span>

Con ésto los robots verían algo como “abeurp@phpogidoc.net”, cuando el correo real sería prueba@codigophp.net, sin embargo los usuarios de la web verían el correo correcto.


06
abr 11

Forzar la descarga de un fichero en php

Con esta función podemos forzar la descarga de un fichero al navegador.

function downloadFile($file){
        $file_name = $file;
        $mime = 'application/force-download';
	header('Pragma: public'); 	// required
	header('Expires: 0');		// no cache
	header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
	header('Cache-Control: private',false);
	header('Content-Type: '.$mime);
	header('Content-Disposition: attachment; filename="'.basename($file_name).'"');
	header('Content-Transfer-Encoding: binary');
	header('Connection: close');
	readfile($file_name);		// push it out
	exit();
}

vía: Alessio Delmonti


05
abr 11

Crear nuestra propia caché con php.

Para acelerar el proceso de carga de la página podemos optar por añadir un sencillo sistema de caché en php volcando la información a ficheros para luego cargarlos cuando lo necesitemos.

<?php
    // Nombre del fichero
    $fichero_cache = 'cache/'.date('M-d-Y').'.html';
    // Tiempo para renovar cache en segundos 1día = 86400 seg.
    $cache_time = 86400;
    // Comprobamos si el fichero existe
    if( file_exists( $fichero_cache ) && ( time() - $cache_time < filemtime( $fichero_cache ) ) {
        // Muestra el fichero
        readfile( $fichero_cache);
        die();
    }
    // Iniciamos cacheado
    ob_start();
?>
    <html>
        Aquí el resto del php/html
    </html>
<?php
    // Guardamos Caché
    file_put_contents( $fichero_cache, ob_get_contents() );
    // Mostramos lo almacenado en la caché
    ob_end_flush();
?>