Categorías
chuletario php

Evitar SQL Injection en php

Estaba ojeando la lista de categorías del blog y me he dado cuenta de que solo tengo 3 entradas referentes a php. Es curioso porque php suele ocupar el 33,3% de cada uno de mis dias (exceptuando sábados y domingos).

Así que me he decidido a publicar algunos tips de vez en cuando 🙂

Como habrán adivinado por la foto, hoy les voy a enseñar la función que suelo usar (cuando trabajo con mysql) para limpiar las ristras de posibles SQL Injection:

# Limpia una ristra para evitar sql injection
function limpia_ristra($ristra){
return mysql_escape_string(strip_tags($ristra));
}

Aunque lo mejor sería utilizar querys precompilados (prepare), bind variables y cosas así… otro día hablo de ello refiriendome a oracle :p

Categorías
php Turoriales Ubuntu

Instalando apache,php y mysql en Ubuntu Hardy Heron

Hoy vamos a preparar nuestra garza para que pueda ejecutar las típicas aplicaciones php que nos hacemos, como puede ser el caso del proyecto itable.

Como siempre, si algo no queda del todo claro o si piensan que falta alguna explicación. No duden en comentarlo, que para eso estamos en la era de las webs sociales 🙂 no mordemos.

Ingredientes:

  • Apache2
  • Mysql 4.1
  • PHP 5

Abrimos un terminal y empezamos.

Uno: El brikindans xDD

Va, fuera de coña.

1.- Mysql

sudo aptitude install mysql-server-4.1

2.- Apache

sudo aptitude install apache2

3.- PHP

sudo aptitude install php5

4.- Soporte para mysql en apache y php

sudo aptitude install libapache2-mod-auth-mysql

sudo aptitude install php5-mysql

5.- Nos bajamos de la moto y nos volvemos a subir

sudo /etc/init.d/apache2 restart

6.- Cambiamos de ubicacion el directorio www

Para tener todos los datos importantes en el mismo sitio a la hora de hacer backups, creamos un directorio en el home que se llame www y editamos el fichero de configuracion de apache para decirle donde se encuentra la nueva raiz del servidor web.

sudo gedit /etc/apache2/sites-available/default

Donde aparezca /var/www/ ponemos nuestra nueva ruta. Nos volvemos a bajar de la moto y a subir de nuevo.

Vamos al directorio /home/usuario/www/ y le ponemos los permisos para que se pueda acceder desde el navegador si procede.

7.- Comprobamos que todo está correcto

Creamos un fichero info.php con

<?phpinfo();?>

Lo colocamo en el nuevo www, vamos al firefox y ponemos http://localhost/info.php

voilá.

Dudas, problemas, sugerencias, quejas… en los comentarios.

Categorías
chuletario php Programacion

php : Errores que no se muestran

Un post breve de algo que me pasó una vez, por si le es útil a alguien. Aparentemente se estaba produciendo un error de php en una página y no se mostraba nada.

El problema era de internet explorer :p fuí a:
herramientas->opciones->avanzadas
y desactivar «mostrar mensajes descriptivos de los errores http»

Y así se solucionó.

Cuando nos pasen éstas cosas raras, también podemos activar todos los errores en tiempo de ejecución (en entornos de desarrollo normalmente, no me sean cafres).

error_reporting(E_ALL);

Y si tienen un «crash» subito del script, o sea, que se queda la pantalla en blanco, lo mismo puede ser que se esté sobrepasando el tiempo máximo de ejecución o el límite de memoria.

Tambien en tiempo de ejecución (y tambien evitando hacerlo en servidores de explotación) se puede hacer:

ini_set(‘memory_limit’, ‘8M’);
ini_set(‘max_execution_time’, ’30’);

Tanto el reporte de errores como las variables de límite se pueden y deben configurar en php.ini

¡Que les sea útil! Al final no me quedó tan corto.

Categorías
php Programacion

php : Eliminar elementos duplicados de un array

# Ésta función recibe un array con campos duplicados y lo
# devuelve sin duplicidades.
function elimina_duplicados($array, $campo)
{
  foreach ($array as $sub)
  {
    $cmp[] = $sub[$campo];
  }
  $unique = array_unique($cmp);
  foreach ($unique as $k => $campo)
  {
    $resultado[] = $array[$k];
  }
  return $resultado;
}

# Prueba
$v_usr = array();

$v_usr[] = array('foto'=>'Pepe1.jpg','nif'=>'222222');
$v_usr[] = array('foto'=>'Pepe2.jpg','nif'=>'222222');
$v_usr[] = array('foto'=>'Julian.jpg','nif'=>'3333333');
$v_usr[] = array('foto'=>'Miguel.jpg','nif'=>'4444444');
$v_usr[] = array('foto'=>'Marcos.jpg','nif'=>'5555555');
$v_usr[] = array('foto'=>'Jose.jpg','nif'=>'66666666');

echo "Vector antes de eliminar duplicados";
print_r($v_usr);
echo "Vector despues";
print_r(elimina_duplicados($v_usr,'nif'));
?>