Sobre este teclado glorioso diseñado en California mis dedos van mas rápido que mis Ideas. Estoy escribiendo muchas boludeces. 4/9 a las 16:00
Año XXI Nº 7912
Domingo 5 de Septiembre del 2010
1/ii/2010
ARTÍCULO

inc.php

Bueno, qué es esto?

Es un manojo de funciones, variables etcéteras que uso en todos mis proyectos, y que probablemente te va a ahorrar algunos quilombos a la hora de escribir PHP. Ojo: esto está en permanente actualización debido a que siempre surjen oportunidades de expandir o arreglar algo.

Cómo lo hago funcionar?

Fácil. Bajate inc.txt y renombralo como inc.php. Luego insertá esta línea al principio de todas tus páginas.

<?php include_once 'inc.php'; ?>

Esto, por supuesto, asumiendo que le des el nombre de inc.php y que esté en el mismo directorio.

Qué tiene adentro?

Veamos por partes...

// MySql vars $inchost = 'localhost'; // MySQL host address $incuser = 'root'; // MySQL username $incpass = ''; // MySQL password $incname = ''; // MySQL database name

Si usásMySql en tu proyecto, vas a querer configurar la conexión desde acá. Inc.php automáticamente se va a conectar con MySql y aguardar tus consultas.

@session_start();

Esta hermosa linea hace que una sesión esté siempre abierta. Podés leer más sobre el tema acá, pero la idea es que podés acceder a variables desde páginas diferentes, y estas siempre estarán disponibles a través de $_SESSION, hasta que el usuario cierre el navegador.

// Sanitize $_post foreach($_POST as $post) mysql_real_escape_string($_POST[$post]);

Ieba. Ahora no te tenés que preocupar por SQL injection. Cualquier dato mandado por POST va a ser escapado. Esto tambien se podria hacer con GET, pero normalmente las variables enviadas via GET son menos importantes, y probablemente escaparlas terminaría causando problemas.

// Fetching and dumping in multiarray function fetch($q=false,$row=false,$field=false) {

Ajajá, llegamos a la función jugosa. fetch() ejecuta una consulta MySQL por vos, y pone los resultados en un multiarray. Veamos el ejemplo:

$r = fetch('SELECT name, email FROM users LIMIT 1;',0); echo 'First user is called ' . $r['name'] . ' (' . $r[1] . ').';

Es decir, fetch() te da un array de arrays, cada uno lleno con los datos de un registro (indexados tanto por numero como por nombre de columna). Además, podés pasar un segundo y tercer parámetros que indican si queres recibir solamente un array de una fila dada o incluso el valor de una fila y columna dadas. Tambien, si no se pasa ningun argumento, ni siquiera una query, fetch() devuelve la ultima ID insertada.

// Querying without fetching function query($q) {

En cambio, si más que recuperar información, lo que necesitás es enviarla, deberias usar query(), Así, mirá:

$s = query('DELETE FROM users WHERE id = 1;'); if($s) { echo 'Success!'; }

query() devuelve true en caso de éxito y false en caso de fracaso. Así de simple. Prosigamos.

// Upload & resize function upload($datos, $ruta, $ancho, $alto, $proporcion=true, $recortar=true) {

OBSERVAD! He escrito LA rutina para subir y redimensionar imágenes. Bueno, probablemente no. Veamos los parametros. $datos es el array que PHP registra en $_FILES siempre que mandas archivos. $ruta es la ruta reltaiva a la ubicación del archivo final (debe inluir el nombre del archivo, y cualquier archivo del mismo nombre será sobreescrito). $ancho y $alto son el ancho y alto deseados; si no se los define, upload() va a asumir el mismo tamaño que el original. $proporcion es si mantener o no la proporción al redimensionar; en otras palabras, si lo seteás a false, tu imagen va a ser deformada. Por último, $recortar le indica a inc.php si recortar los bordes de la imagen para adecuarse al tamaño deseado. Si es false, el resultado final variará según la proporción. Actualmente, upload() solo exporta a .jpg.

// Reading dirs function listdir($ruta='.', $ord='date', $path=false ,$omitir=array('.','..'), $full=false) {

Ésta es la última función hasta ahora. listdir() recorre un directorio y te dice qué contiene. $ruta es la ruta relativa al directorio. El directorio actual es el default. $ord es el criterio de ordenamiento. Podés elegir entre 'date', 'name', 'type' and 'size'. $path le dice a inc.php si devolver la ruta relativa a cada archivo, o si solo devolver el nombre. $omitir es un array que contiene los elementos que querés que sean omitidos por listdir() (por default . y .. que son referencias para el directorio actual y el superior). Finalmente, si seteás $full a true, listdir() devolverá un multiarray con nombre, tamaño, extension y fecha de cada archivo, en lugar de solo un array de cadenas.

Conclusión

Tomalo. Usalo. Pasalo. Mejoralo. Todo bien. Si te encontrás un bug, un problema de seguridad o una añadidura que te gustaría reportar, voy a estar feliz de escuchar. Mi dirección de email está al principio de inc.php.

Adjuntos: