Validar urls con php

Me he topado con una función que permite validar urls de diferentes tipos:

https://usuario:contraseña@www.cualquiersitio.com:8080/login.php?do=login&style=%23#pagetop
http://usuario@www.cualquiersitio.com/#pagetop
https://cualquiersitio.com/index.html
ftp://usuario:****@cualquiersitio.com:21/
http://cualquiersitio.com/index.html/


//se le envía una cadena y devuelve true si es uan url válida o false en caso contrario
function url_valida($url){
  static $urlregex = "^(https?|ftp)\:\/\/([a-z0-9+!*(),;?&=\$_.-]+(\:[a-z0-9+!*(),;?&=\$_.-]+)?@)?[a-z0-9+\$_-]+(\.[a-z0-9+\$_-]+)*(\:[0-9]{2,5})?(\/([a-z0-9+\$_-]\.?)+)*\/?(\?[a-z+&\$_.-][a-z0-9;:@/&%=+\$_.-]*)?(#[a-z_.-][a-z0-9+\$_.-]*)?\$";

return eregi($urlregex, $url);

}

Explicación paso a paso:

function url_valida($url){
//TIPO DE CONEXIÓN
$urlregex = "^(https?|ftp)\:\/\/";

//USUARIO Y CONTRASEÑA (opcional)
$urlregex .= "([a-z0-9+!*(),;?&=\$_.-]+(\:[a-z0-9+!*(),;?&=\$_.-]+)?@)?";

//EL NOMBRE DE LA WEB O LA IP
$urlregex .= "[a-z0-9+\$_-]+(\.[a-z0-9+\$_-]+)*"; // http://x = allowed (ejemplo. http://localhost, http://routerlogin)
//$urlregex .= "[a-z0-9+\$_-]+(\.[a-z0-9+\$_-]+)+"; // http://x.x = minimum
//$urlregex .= "([a-z0-9+\$_-]+\.)*[a-z0-9+\$_-]{2,3}"; // http://x.xx(x) = minimum

//PUERTO (opcional)
$urlregex .= "(\:[0-9]{2,5})?";

//RUTA (opcional)
$urlregex .= "(\/([a-z0-9+\$_-]\.?)+)*\/?";

//GET de la ruta (opcional)
$urlregex .= "(\?[a-z+&\$_.-][a-z0-9;:@/&%=+\$_.-]*)?";

//ANCLA de la ruta (opcional)
$urlregex .= "(#[a-z_.-][a-z0-9+\$_.-]*)?\$";

//COMPROBAMOS
return eregi($urlregex, $url);
}

Clase PHP para convertir un array en un objeto

Clase para convertir un array a objeto.
Muchas veces resulta mucho más intuitivo/eficiente manejar objetos que arrays.

/*
  Autor: Roberto Herrero (http://www.indomita.org)
  Asunto: Convertir un array a objeto  
*/

  class array_a_objeto{
    //constructor (se le envía el array a convertir)
    function array_a_objeto($array_objecto) {
      reset($array_objecto);
      while (list($key, $value) = each($array_objecto)) {
        $this->$key = tep_db_prepare_input($value);
      }
    }
  }
?>

Pongo un ejemplo 😀

//convertir el array de datos POST a objeto
$mi_var = new array_a_objeto($HTTP_POST_VARS);
//ahora en vez de llamar a los datos mediante 
echo $HTTP_POST_VARS["campo_texto_1"];
//podemos hacerlo así
echo $mi_var->campo_texto_1;

Crear un select html desde php dinámicamente

Hoy voy a mostrar como generar un listado dinámico del control select, el combo desplegable, mediante PHP a partir de los datos devueltos por una consulta MySql.

Requisitos previos:
* Conocer como crear el conector $link.
Te dejo el tutorial por si te interesa: Tutorial Conexión a MySql desde PHP


//texto encabezado

echo "<h1>Selecciona una fruta</h1>";

//abrimos el select

//(el size indica el ancho del select)

echo '<select name="frutas" size="5">';

//realizamos la conexión

mysql_conecta($link);

//realizamos la consulta

$respuesta=mysql_query("select fruta_id, fruta_nombre from frutas", $link);

//recorremos los datos

while($fila=mysql_fetch_array($respuesta)){

 echo '<option value="'.$fila&#91;"fruta_id"&#93;.'"> 

      '.$fila["fruta_nombre"].'></option>';

}

//cerramos el select

echo '</select>';

Realizar backup a MySql desde PHP

Voy a explicar como realizar un backup o copia de seguridad de tu base de datos MySql desde PHP.

//servidor MySql
$C_SERVER='tu_servidor';
//base de datos
$C_BASE_DATOS='tu_base_de_datos';
//usuario y contraseña de la base de datos mysql
$C_USUARIO='tu_usuario';
$C_CONTRASENA='tu_contraseña';
//ruta archivo de salida 
//(el nombre lo componemos con Y_m_d_H_i_s para que sea diferente en cada backup)
$C_RUTA_ARCHIVO = '/ruta_hasta/backups/backup_'.date("Y_m_d_H_i_s").'.sql';
//si vamos a comprimirlo
$C_COMPRIMIR_MYSQL='true';


//comando
$command = "mysqldump --opt -h ".$C_SERVER." ".$C_BASE_DATOS." -u ".$C_USUARIO." -p".$C_CONTRASENA.
     " -r \"".$C_RUTA_ARCHIVO."\" 2>&1"; 
 
//ejecutamos
system($command);

//comprimimos
if ($C_COMPRIMIR_MYSQL == 'true') {
 system('bzip2 "'.$C_RUTA_ARCHIVO.'"');
}


*Supongo que el tutorial es aplicable a cualquier tipo de base de datos siempre y cuando tenga una consola y comandos correspondientes, sería cuestión de adaptar el código.

Mantenimiento MySql en PHP aplicable a otras bases de datos

Bueno, una manera bastante sencilla de realizar un mantenimiento de una base de datos MySql básico sería algo así :

* Conocer como crear el conector $link.
Te dejo el tutorial por si te interesa: Tutorial Conexión a MySql desde PHP

//conectamos
mysql_conecta($link);
//listamos tablas
$tablas=mysql_query("SHOW TABLES FROM box",$link);
//recorremos todas las tablas
while($ft=mysql_fetch_array($tablas)){
//optimizamos las tablas
mysql_query("OPTIMIZE TABLE ".$ft[0],$link);
//otras tareas ...
}