Desarrollo Web (51)


Convertir Hexadecimal a RGB con PHP

Veo en PHPClasses un articulo que muestra cómo convertir un código de color hexadecimal (#cc0000) a RGB (rgb(255,255,255)) y que si nos paramos a leer un poco se puede ver como también lo convierte a la inversa, de rgb a hexadecimal.

Aquí el código:

<?php
/**
* This is an example on using Color to get similar
* colors based on a supplied hex or rgb color.
*/
$hsv = Color::hex2hsv("#00CCFF");
//$hsv = Color::rgb2hsv(0, 204, 255);
for ($i = 0; $i < 5; $i++) {
   $rS = mt_rand(0, 100);
   $rV = mt_rand(0, 100);
   $bg = "#".Color::hsv2hex($hsv['h'], $rS, $rV);
   //$rgb = Color::hsv2rgb($hsv['h'], $rS, $rV);
   //$bg = "rgb(".$rgb['r'].", ".$rgb['g'].", ".$rgb['b'].")"
   echo "<div style=\"width:100px;height:100px;background-color:".$bg.";\"> </div>\n";
}
/**
* You can do the same but for random hues keeping the same by
* keeping the supplied saturation and value, random saturation
* by keeping the hue and value, and this will also work using
* the HSL methods, if you prefer to work with those values.
*/
?>

Que podriamos resumir en:

<?php
$hsv = Color::hex2hsv("#00CCFF");
for ($i = 0; $i < 5; $i++) {$rS = mt_rand(0, 100);
   $rV = mt_rand(0, 100);
   $bg = "#".Color::hsv2hex($hsv['h'], $rS, $rV);
   echo "<div style=\"width:100px;height:100px;background-color:".$bg.";\"> </div>\n";
}
?>



RegEx I, sólo letras, números y espacios.

No es ningún secreto que las expresiones regulares son aún un campo casi desconocido para mí, aunque las haya usado muchas veces casi ninguna han sido hechas por mi… de manera que, para no tener que ir buscando en google la expresión correcta cada vez que quiera utilizarla – y ya de paso intentar subir pagerank xD – haré una guia serie de ejemplos usables.

Este es el primero:

Detectar si una cadena contiene algo que no sean letras, numeros, espacios o guiones – las letras sin acentos.
Código:

$dirname=trim($dirname);
if (!ereg("^[a-zA-Z0-9[:space:]]*$",$dirname)
   or (strlen($dirname<1) or (strlen($dirname)>30)){
   die('ERROR! Puede que el nombre de la carpeta no cumpla las condiciones.');
}

En este caso además comprueba el tamaño de la cadena.

Con trim() eliminamos los saltos de linea y espacios que haya al inicio y al final de la cadena, y la cadena en cuestión estará guardada en $dirname.




PHP: Cookies

Guardar cookies en con php puede ser la forma más factible para desarrollar según qué aplicaciones… como por ejemplo un carrito de la compra, y su uso – en este caso en PHP – es realmente fácil.

El primer paso para aprender a utilizarlas, seguramente sea ir a php.net y buscar cookie, pero como sé que a los principiantes es un paso básico que les cuesta intentaré ir recreando los pasos que se deberían seguir para aprender a usar algunas funciones, para así intentar enseñar además del uso de las cookies el correcto uso de Internet.
A día de hoy si vamos a php.net y buscamos cookie nos sale una lista de funciones, de las que por pura lógica podemos deducir que si queremos crear una cookie la función que necesitamos se llama setcookie, sabiendo eso, allá vamos.

Si miramos como se utiliza la función setcookie veremos algo como esto:

setcookie(string $name[,string $value[,int $expire[,string $path[,string $domain[,bool $secure[,bool $httponly]]]]]])

Puede parecer complejo, pero se puede simplificar mucho como se verá a continuación y como se puede ver en la misma php.net.
Por ejemplo para guardar una cookie con lo que sería un ejemplo práctico, podríamos utilizar esto:

setcookie ("TestCookie", $value, time () + 3600);

En este caso, la cookie se llamaría TestCookie, su valor sería el guardado en la variable $value y caducaría en 3600 segundos, que al cambio es una hora.

Para leer esta cookie y luego utilizarla en el script o simplemente mostrarla se puede hacer esto:

$cookie = $_COOKIE["TestCookie"]

Para borrar una cookie creo que no hay ninguna función – pero eso no significa que no se pueda hacer, sólo que hay que pensar un poco – aunque podemos hacerlo, y de hecho no es difícil… podríamos hacer algo así:

setcookie ("TestCookie", $value, time () + 1);

De esta manera “borraríamos” la cookie TestCookie. Lo pongo entre comillas por que no la borraríamos, pero se eliminaría ella sola cuando pasase un segundo, o mejor dicho, la borraría el navegador… de hecho, creo que podríamos quitar el +1 final y hacer que lo borrase al instante.

Por ejemplo para hacer un contador de visitas para un único usuario, podríamos hacer esto:

<?PHP
if(isset($_COOKIE["visitas"])){
   $visitas = $_COOKIE["visitas"]+1;
}else{
   $visitas = 1;
}
setcookie ("visitas", $visitas, time () + 7*24*60*60);
echo "Nos has visitado $visitas veces";
?>