|

Video tutoriales de PHP

phpvideotutorials.pngLa idea es muy buena, el trabajo que debe llevar es bastante. Se trata de video-tutoriales sobre PHP, que nos van explicando desde como instalar WAMP a las partes básicas del PHP.
Por ahora solo hay 8 lecciones pero parece que se van ampliando poco a poco. Si te asusta el inglés, no te preocupes que se entiende bastante bien, salvo la parte inicial en la que le da por contarte su vida, algún chiste o una historia de un pollo en bikini (si, increible).
PHP Video Tutorials
Vía / dzone

| |

Selecciona tu hoja de estilos mediante PHP

En 456 Berea Street nos muestran una forma muy interesante para poder mostrar tu página con diferentes hojas de estilo. Tiene el inconveniente de que solo admite dos estilos entre los que elegir.

Funciona aunque el javascript esté desactivado, pero no cuando estan desactivadas las cookies, pero no daría error, tan solo visitaríamos siempre la misma página.

El funcionamiento es sencillo, disponemos de dos directorios, cada cual con las hojas de estilo que nos interesa. Habrá un enlace a una página que cuando accedemos a ella nos cambiará de directorio, guardará el valor en una cookie y nos devolverá a la página a la página desde la que hemos hecho la llamada o a la raíz si no existía esa página. Y luego en cada página deberemos obtener el valor del directorio de las cookies y usarlo para recuperar la hoja de estilo correspondiente.

El script que se encarga de cambiar de directorio es el siguiente:

<?php
$layout = (isset($_COOKIE['layout']) && ($_COOKIE['layout'] == "zoom")) ? "main" : "zoom";
setcookie("layout", $layout, time()+31536000, '/');
$ref = (isset($_SERVER['HTTP_REFERER'])) ? $_SERVER['HTTP_REFERER'] : "http://{$_SERVER['SERVER_NAME']}/";
header("Location: $ref");
?>

Y luego en cada página tendremos que incluir lo siguiente:

Para recuperar el directorio.

$layout = (isset($_COOKIE['layout']) && ($_COOKIE['layout'] == "zoom")) ? "zoom" : "main";

Para seleccionar el estilo correcto.

<style type="text/css" media="screen,projection">
@import '/css/<?php echo $layout; ?>.css';
</style>

Build your own PHP style sheet switcher

| |

Crea tu motor de búsqueda con Google y PHP

google.pngAlgunas veces nos podemos encontrar con la necesidad de incluir un motor de búsquedas en nuestra aplicación web, no me refiero a uno interno, sino a uno que busque dentro de todo Internet.

Normalmente se soluciona mediante un formulario que llama a la página de Google, pero eso puede ser un tanto “feo” y no ser exáctamente lo que buscamos.

Si lo que quieres es un script que llame al API de Google para poder recibir las resultados de una búsqueda a Google y luego mostrarla, verás como se hace en la traducción que hacemos del siguiente artículo.

Read More “Crea tu motor de búsqueda con Google y PHP”

|

Imágenes en PHP mediante GD

Aunque en varios artículos hemos hablado de cómo manipular imágenes mediante PHP y GD. No está nada mal, tener un tutorial que nos ayude con esta librería. En el siguiente tutorial podremos encontrar:

Image manipulation with PHP & the GD library Part 1 / Part 2

Vía / dzone

TCPDF: más PDF con PHP

Ya de vuelta al “cole”, aunque no del todo, porque aun ando de vacaciones, vuelvo a lo mismo de lo que estaba contando antes de irme, cómo crear documentos PDF con PHP. Al principio empecé mediante el framework de Zend, pero debido a que implicaba ciertas dificultades, ya que no está del todo desarrollado, me pasé a la librería FPDF, la cual es mucho más completa, lo que facilita enormemente la creación de PDFs.

Ahora os cuento sobre TCPDF, una librería basada en FPDF, que hace tiene muy buena pinta, hasta que tenga un rato para ver que tal funciona, os paso las características que tiene:

  • Admite todos los formatos ISO de páginas.
  • UTF-8 y Unicode.
  • Incluye métodos para publicar algunas etiquetas xhtml: h1, h2, h3, h4, h5, h6, b, u, i, a, img, p, br, strong, em, font, blockquote, li, ul, ol, hr, td, th, tr, table, sup, sub, small.
  • Códigos de barra.
  • Admite TrueTypeUnicode, TrueType y Type1.
  • Soporta formatos personalizados de páginas, márgenes y unidades de medida.
  • Encabezados y pie de páginas.
  • Saltos de página.
  • Numeración de páginas.
  • Saltos de línea y justificación de texto.
  • Imágenes JPEG y PNG.
  • Colores.
  • Links.
  • Admite compresión de página, necesita la extensión zlib.
  • Y algo muy importante, está completamente documentado.

TCPDF

Vía / SitePoint

Elegir PHP 4 o 5

PHPAlgunas veces, cuando desarrollo un script para incluir en Sentido Web, me encuentro con el problemilla de que sólo funciona para PHP 5, cuando aquí tenemos instalado el 4 para evitar problemas de compatibilidad. Esta situación seguro que os a aparecido a vosotros. Si no estáis seguros de qué versión usar o qué problemas os podéis encontrar, nada mejor que leer el siguiente artículo.
PHP4 y PHP5: ¿Cuál elegir? ¿Migrar o no Migrar? El advenimiento de PHP6

|

Evitar Cross-Site Request Forgeries en PHP

Siempre que hagamos una aplicación web, tenemos que tener muy encuenta las cuestiones de seguridad, sobre todo las formas más conocidas de ataque. Una de estas formas es Cross-Site Request Forgeries, que más o menos viene a decir Falsificación de Petición desde Otro Sitio (quizás la traducción no es exacta, pero creo que lo explica bien).

Este ataque se produce cuando a un usuario se le conceden permisos, confiando en él, pero no teniendo en cuenta que otra gente pueda aprovecharse de ello. Supongamos que tenemos una página de compra de artículos, cuya aplicación controla perfectamente los campos de entrada y que tiene una función que realiza la operación de compra de artículos.

Tenemos el formulario HTML:

<form action="compra.php" method="POST">
Artículo: <input type="text" name="articulo" />
Cantidad: <input type="text" name="Cantidad" />
<input type="submit" value="Comprar" />
</form>

El primer fallo que solemos cometer es leer las variables de entrada mediante $_REQUEST:

<?php
session_start();
if (isset($_REQUEST['articulo'] &&
isset($_REQUEST['cantidad'])) {
compra($_REQUEST['articulo'],
$_REQUEST['cantidad']);
}
?>

Una forma muy utilizada para realizar un ataque y que al autor del artículo le gusta mucho, es mediante el uso de una imagen:

<img src="http://ejemplo.org/compra.php?articulo=CAFETERA&cantidad=1000" alt="ads" />

Con esto conseguimos que el usuario que visita nuestra página tambien haga una petición a la página en cuestión sin que él lo sepa, claro, que esto solo funciona si el usuario a la vez tiene una sesión abierta en la página que se está atacando.

La solución es añadir una marca formada por un número “encriptado” y un tiempo para que tenga que renovarse esta marca. La marca se debe crear y pasar en el formulario por el que se envían los datos y a parte se debe controlar su existencia, si coincide y si no ha superado el timeout.

<?php
$marca = md5(uniqid(rand(), TRUE));
$_SESSION['marca'] = $token;
$_SESSION['tiempo_marca'] = time();
?>
<form action="compra.php" method="POST">
<input type="hidden" name="marca" value="<?php echo $marca; ?>" />
Artículo: <input type="text" name="articulo" />
Cantidad: <input type="text" name="Cantidad" />
<input type="submit" value="Comprar" />
</form>
<?php
if ($_POST['marca'] == $_SESSION['marca']) {
$diferencia_tiempo_marca = time() - $_SESSION['tiempo_marca'];
if ($diferencia_tiempo_marca <= 300) {
/* Menos de 5 minutos */
}
}
?>

Artículo original: Security Corner: Cross-Site Request Forgeries

Vía / backdraft

FPDF: librería PHP para crear PDFs

fpdf.pngDebido a la decepción que me estoy llevando con el Zend Framework, aunque aún tengo esperanzas en que vaya mejorando, he tenido que buscar otras librerías PHP para crear PDF. Una que he encontrado que me está gustando bastante (por ahora) es FPDF, una librería que exporta a PDF sin necesidad de PDFLib (la cual es de pago). Lo bueno que tiene tambien es que es gratuita, se puede usar libremente y modificar según nuestras necesidades.

Entre las funcionalidades que nos ofrece esta librería nos encontramos:

  • Elección de la unidad de medida, formato de página y márgenes
  • Gestión de cabeceras y pies de página
  • Salto de página automático
  • Salto de línea y justificación del texto automáticos
  • Admisión de imágenes (JPEG y PNG)
  • Colores
  • Enlaces
  • Admisión de fuentes TrueType, Type1 y codificación
  • Compresión de página
  • Y algo muy importante para mí, que es lo que más me ha decepcionado de las librerías de Zend, es la posibilidad de usar otro idiomas y caracteres especiales.

La instalación es sencilla, lo copias en el directorio donde guardes las librerías e incluyes la ruta en el include_path del php.ini.

FDPD

|

Laboratorio: creando documentos PDF con Zend Framework

El otro día contábamos cómo eran las clases del framework de Zend para crear documentos PDF, también decíamos que el ejemplo de uso iría otro día, pues aquí vamos a explicar cómo realizar un PDF con una imagen como cabecera y un texto que se indique por un formulario.

También comentaba que según lo visto, el framework de Zend me gustaba bastante, pero debo decir que la documentación está un poco verde y que algunas de las opciones que parecen activadas no lo están (para darme cuenta de esto tuve que indagar por el código fuente).

pdf-ejemplo.png

El crear un PDF parece a primera vista algo sencillo a simple vista (¡qué optimista!), pensaba que sería algo como: crear documento, crear página y ponerte a escribir. Todo bien hasta que tienes que escribir, porque más que escribir tienes que maquetar, decir que texto va en tal lugar, no vale con escribir un párrafo que directamente y que el Acrobat Reader lo coloque como pensamos que debería ir. No, tenemos que ir calculando lo que va a ocupar la línea, y si no se sale de la página, escribirla.

Read More “Laboratorio: creando documentos PDF con Zend Framework”

Frameworks para PHP

El otro día hablábamos del Zend Framework para PHP y Daniel nos hablaba de la existencia de otros frameworks, en este caso CakePHP. Y aunque a mí me está gustando Zend Framework, no quita que cada cual tenga sus gustos y prefiera otros productos, por eso nada mejor que una lista de frameworks que podemos usar.
Uno de los más populares es el que nos recomendaba Daniel, aunque parece que uno de los más completos es Seagull, pero el que tenga una versión profesional es algo que me tira para atrás. Claro, que Zoop parece igual de completo y además incluye AJAX.
Taking a look at ten different PHP frameworks
MVC Frameworks Written in PHP