<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>emmgfx &#187; Desarrollo</title>
	<atom:link href="http://www.emm-gfx.net/etiqueta/desarrollo/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.emm-gfx.net</link>
	<description>Y ahora sin más; construye y destruye.</description>
	<lastBuildDate>Sun, 22 Jan 2012 11:24:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Obtener la URL que se esta visitando con PHP</title>
		<link>http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/</link>
		<comments>http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 09:40:47 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Función]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[HTTPS]]></category>
		<category><![CDATA[Snippets]]></category>
		<category><![CDATA[URL]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=1045</guid>
		<description><![CDATA[Con esta función, se puede saber la URL que se está visitando&#8230; y no hay nada más que decir, sólo la función y un ejemplo. function selfURL(){ $s = empty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s" : ""; $protocol = strleft(strtolower($_SERVER["SERVER_PROTOCOL"]), "/").$s; $port = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]); return $protocol."://".$_SERVER['SERVER_NAME'].$port.$_SERVER['REQUEST_URI']; [...]]]></description>
			<content:encoded><![CDATA[<p>Con esta función, se puede saber la URL que se está visitando&#8230; y no hay nada más que decir, sólo la función y un ejemplo.</p>
<pre>function selfURL(){
   $s        = empty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s" : "";
   $protocol = strleft(strtolower($_SERVER["SERVER_PROTOCOL"]), "/").$s;
   $port     = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]);
   return $protocol."://".$_SERVER['SERVER_NAME'].$port.$_SERVER['REQUEST_URI'];
}
function strleft($s1, $s2){
   return substr($s1, 0, strpos($s1, $s2));
}</pre>
<p>En realidad son dos, pero van juntas. Y para usarla es bastante sencillo.</p>
<pre>
echo selfURL(); /* http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/ */
</pre>
<p>Puede no parecer demasiado util, pero a mi me ha venido bien varias veces.</p>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/" title="Comprobar la validez de un dominio con PHP">Comprobar la validez de un dominio con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2008/07/comprobar-estado-de-un-servidor-mediante-php/" title="Comprobar estado de un servidor mediante PHP">Comprobar estado de un servidor mediante PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/11/eliminar-posicion-de-un-array-en-php/" title="Eliminar posición de un array en PHP">Eliminar posición de un array en PHP</a> (2)</li><li><a href="http://www.emm-gfx.net/2008/11/encriptar-y-desencriptar-cadena-php/" title="Encriptar y desencriptar cadena con PHP">Encriptar y desencriptar cadena con PHP</a> (9)</li><li><a href="http://www.emm-gfx.net/2008/05/php-cookies/" title="PHP: Cookies">PHP: Cookies</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/03/enviar-el-log-de-errores-de-php-por-email/" title="Enviar el log de errores de PHP por email">Enviar el log de errores de PHP por email</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/comprobar-dni-nif-con-php/" title="Comprobar DNI / NIF con PHP">Comprobar DNI / NIF con PHP</a> (3)</li><li><a href="http://www.emm-gfx.net/2010/02/mostrar-una-fecha-sin-mostrarla-de-forma-amigable-con-php/" title="Mostrar una fecha sin mostrarla, de forma amigable, con PHP">Mostrar una fecha sin mostrarla, de forma amigable, con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/11/str_replace-de-php-en-javascript/" title="str_replace() de PHP en Javascript">str_replace() de PHP en Javascript</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/09/encontrar-todos-los-links-de-una-pagina-con-php/" title="Encontrar todos los links de una página con PHP">Encontrar todos los links de una página con PHP</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comprobar la validez de un dominio con PHP</title>
		<link>http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/</link>
		<comments>http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 19:04:21 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Función]]></category>
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=748</guid>
		<description><![CDATA[Una sencilla función para verificar que un nombre de dominio existe. Es la función que utilizo en saberpagerank.es para verificar que el dominio introducido es correcto, podéis encontrar una demostración de allí. function getAddrByHost($host, $timeout = 3) { $query = `nslookup -timeout=$timeout -retry=1 $host`; if(preg_match('/\nAddress: (.*)\n/', $query, $matches)){ return trim($matches[1]); }else{ return false; } return [...]]]></description>
			<content:encoded><![CDATA[<p>Una sencilla función para verificar que un nombre de dominio existe. Es la función que utilizo en <a href="http://www.saberpagerank.es">saberpagerank.es</a> para verificar que el dominio introducido es correcto, podéis encontrar una demostración de allí.</p>
<pre lang="php" line="1">
function getAddrByHost($host, $timeout = 3) {
   $query = `nslookup -timeout=$timeout -retry=1 $host`;
   if(preg_match('/\nAddress: (.*)\n/', $query, $matches)){
      return trim($matches[1]);
   }else{
      return false;
   }
   return $host;
}
</pre>
<p>Y no hay mucho más que añadir, el nombre de dominio se le pasa en el primer parámetro, es decir, para utilizar la función se haría algo así:</p>
<pre lang="php" line="1">
if(!getAddrByHost('www.dominioabsurdo.lol')){
   die('El dominio parece incorrecto <img src='http://www.emm-gfx.net/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> ');
}
</pre>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2008/07/comprobar-estado-de-un-servidor-mediante-php/" title="Comprobar estado de un servidor mediante PHP">Comprobar estado de un servidor mediante PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/11/eliminar-posicion-de-un-array-en-php/" title="Eliminar posición de un array en PHP">Eliminar posición de un array en PHP</a> (2)</li><li><a href="http://www.emm-gfx.net/2008/11/encriptar-y-desencriptar-cadena-php/" title="Encriptar y desencriptar cadena con PHP">Encriptar y desencriptar cadena con PHP</a> (9)</li><li><a href="http://www.emm-gfx.net/2008/05/php-cookies/" title="PHP: Cookies">PHP: Cookies</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/03/enviar-el-log-de-errores-de-php-por-email/" title="Enviar el log de errores de PHP por email">Enviar el log de errores de PHP por email</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/comprobar-dni-nif-con-php/" title="Comprobar DNI / NIF con PHP">Comprobar DNI / NIF con PHP</a> (3)</li><li><a href="http://www.emm-gfx.net/2010/02/mostrar-una-fecha-sin-mostrarla-de-forma-amigable-con-php/" title="Mostrar una fecha sin mostrarla, de forma amigable, con PHP">Mostrar una fecha sin mostrarla, de forma amigable, con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/11/str_replace-de-php-en-javascript/" title="str_replace() de PHP en Javascript">str_replace() de PHP en Javascript</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/09/encontrar-todos-los-links-de-una-pagina-con-php/" title="Encontrar todos los links de una página con PHP">Encontrar todos los links de una página con PHP</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hydrax, Skyx y Paradise Engine</title>
		<link>http://www.emm-gfx.net/2009/12/hydrax-skyx-y-paradise-engine/</link>
		<comments>http://www.emm-gfx.net/2009/12/hydrax-skyx-y-paradise-engine/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 18:30:40 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Hydrax]]></category>
		<category><![CDATA[Paradise Engine]]></category>
		<category><![CDATA[Paradise theading]]></category>
		<category><![CDATA[Skyx]]></category>
		<category><![CDATA[Xavier Verguin]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=672</guid>
		<description><![CDATA[Hoy estoy bastante contento. De algún modo, me encuentro involucrado &#8211; aunque con un papel bastante humilde -  en el proyecto que lidera Xavier Verguín al que hemos llamado Paradise Engine y que estoy seguro de que dará que hablar. Pero creo que lo más adecuado es ver el vídeo demostración &#8211; si podéis en [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy estoy bastante contento. De algún modo, me encuentro involucrado &#8211; <span style="color: #888888;">aunque con un papel bastante humilde</span> -  en el proyecto que lidera Xavier Verguín al que hemos llamado Paradise Engine y que estoy seguro de que dará que hablar. Pero creo que lo más adecuado es ver el vídeo demostración &#8211; <span style="color: #888888;">si podéis en HD</span> &#8211; y luego explicar lo que és.</p>
<p>Paradise Engine viene a ser el contenedor que aúna otros proyectos en los que trabajamos desde hace tiempo, que han tenido un avance notable y que sinceramente, a día de hoy me dejan con la boca abierta cada vez que los veo.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100%" height="286" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="wmode" value="transparent" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube-nocookie.com/v/FL02s_MGIQc&amp;hl=es_ES&amp;fs=1&amp;rel=0&amp;hd=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="100%" height="286" src="http://www.youtube-nocookie.com/v/FL02s_MGIQc&amp;hl=es_ES&amp;fs=1&amp;rel=0&amp;hd=1" allowscriptaccess="always" allowfullscreen="true" wmode="transparent"></embed></object></p>
<p>Por un lado está <strong>Hydrax</strong>, que se encarga de generar mares &#8211; <span style="color: #888888;">agua</span> -, ríos y cualquier cosa similar con una calidad gráfica impresionante, como se puede ver en el vídeo incrustado un poco más arriba. Sinceramente, creo que no sólo Hydrax no tiene nada que envidiar al <a class="fancy" href="http://www.emm-gfx.net/wp-content/uploads/2009/12/agua-crysis.png">renderizado de aguas de Crysis</a>, sino que es bastante superior.</p>
<p>También hay que destacar <strong>Skyx</strong>, que pretende ser y es un simulador fotorealista de cielos &#8211; <span style="color: #888888;">incluyendo la luz, las nubes y su densidad</span> &#8211; , capaz de generar ciclos dinámicos de luz día/noche. Skyx se integra a la perfección con Hydrax para poder hacer de Paradise Engine lo que es.</p>
<p>Otro punto muy importante de Paradise Engine, es el llamado <strong>Paradise Threading</strong>, que ha sido pensado para aprovechar al máximo el hardware de un equipo, sea cual sea, concretamente el/los procesador/es. Con Paradise Threading, el engine se adapta al número de procesadores para rendir lo mejor posible en cada caso, sin cambios de código, completamente escalable. De esta manera funcionará tanto en un ordenador con un procesador que en uno con 32, pero tendrá un rendimiento equivalente al que los 32 procesadores merecen.</p>
<p>La verdad, me parece impresionante el trabajo que se está haciendo y admirable la dedicación que se le está poniendo, que puedo asegurar que es muchísima&#8230; Cuando esté un poco más maduro, cuando haya una demo disponible para que todo el mundo pueda bajarla y probarla en su ordenador, publicaré una entrevista que tengo acordada con el principal desarrollador &#8211; <span style="color: #888888;">Xavier</span> &#8211; sobre este proyecto, su estado actual y los objetivos marcados. Espero que resulte interesante.</p>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/" title="Comprobar la validez de un dominio con PHP">Comprobar la validez de un dominio con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/11/eliminar-posicion-de-un-array-en-php/" title="Eliminar posición de un array en PHP">Eliminar posición de un array en PHP</a> (2)</li><li><a href="http://www.emm-gfx.net/2009/11/ui-is-the-killer-feature/" title="UI is the killer feature">UI is the killer feature</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/11/str_replace-de-php-en-javascript/" title="str_replace() de PHP en Javascript">str_replace() de PHP en Javascript</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/07/tron-2-para-el-2010/" title="Tron 2 para el 2010">Tron 2 para el 2010</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/07/inline-block-cross-browser/" title="inline-block cross-browser">inline-block cross-browser</a> (2)</li><li><a href="http://www.emm-gfx.net/2009/01/retrasar-eventos-y-efectos-de-jquery/" title="Retrasar eventos y efectos de jQuery">Retrasar eventos y efectos de jQuery</a> (0)</li><li><a href="http://www.emm-gfx.net/2008/11/encriptar-y-desencriptar-cadena-php/" title="Encriptar y desencriptar cadena con PHP">Encriptar y desencriptar cadena con PHP</a> (9)</li><li><a href="http://www.emm-gfx.net/2008/07/comprobar-estado-de-un-servidor-mediante-php/" title="Comprobar estado de un servidor mediante PHP">Comprobar estado de un servidor mediante PHP</a> (1)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2009/12/hydrax-skyx-y-paradise-engine/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Eliminar posición de un array en PHP</title>
		<link>http://www.emm-gfx.net/2009/11/eliminar-posicion-de-un-array-en-php/</link>
		<comments>http://www.emm-gfx.net/2009/11/eliminar-posicion-de-un-array-en-php/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 10:08:00 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=482</guid>
		<description><![CDATA[Para borrar variables se utiliza unset(), también para eliminar posiciones de un array, pero si sólo se usa unset() la posición no se elimina del todo, sigue existiendo pero esta vacía. No sé si lo estoy explicando bien, pero con los ejemplos se entiende mejor. Es bastante sencillo, no es algo complicado de hacer, sólo [...]]]></description>
			<content:encoded><![CDATA[<p>Para borrar variables se utiliza <code>unset()</code>, también para eliminar posiciones de un array, pero si sólo se usa <code>unset()</code> la posición no se elimina del todo, <strong>sigue existiendo</strong> pero esta vacía. No sé si lo estoy explicando bien, pero con los ejemplos se entiende mejor. Es bastante sencillo, no es algo complicado de hacer, sólo hay que entenderlo.<br />
Por ejemplo, con este array:</p>
<pre lang="PHP" line="1">
$array = 'ni sus,manos son,tan blancas,ni son,blancas sus,palomas';
$array = explode(',',$array);
</pre>
<pre lang="text" line="1">
Array
(
    [0] => ni sus
    [1] => manos son
    [2] => tan blancas
    [3] => ni son
    [4] => blancas sus
    [5] => palomas
)
</pre>
<p>Si se hace</p>
<pre lang="php" line="1">
unset($array[4]);
</pre>
<p>Quedará algo como:</p>
<pre lang="text">
Array
(
    [0] => ni sus
    [1] => manos son
    [2] => tan blancas
    [3] => ni son
    [5] => palomas
)
</pre>
<p>Es decir, el elemento no existe pero su posición en el array no se ha adaptado, hace un salto del 3 al 5 y en ocasiones lo ideal sería que el 4 se eliminara y el siguiente (el 5) pasara a ocupar su posición.</p>
<p>Para eso se puede utilizar la función <code>array_values()</code>, por ejemplo:</p>
<pre lang="php" line="1">
$array = array_values($array);
</pre>
<p>Haría que el resultado fuera:</p>
<pre lang="text">
Array
(
    [0] => ni sus
    [1] => manos son
    [2] => tan blancas
    [3] => ni son
    [4] => palomas
)
</pre>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/" title="Comprobar la validez de un dominio con PHP">Comprobar la validez de un dominio con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2008/07/comprobar-estado-de-un-servidor-mediante-php/" title="Comprobar estado de un servidor mediante PHP">Comprobar estado de un servidor mediante PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2008/05/php-cookies/" title="PHP: Cookies">PHP: Cookies</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/mostrar-una-fecha-sin-mostrarla-de-forma-amigable-con-php/" title="Mostrar una fecha sin mostrarla, de forma amigable, con PHP">Mostrar una fecha sin mostrarla, de forma amigable, con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/11/str_replace-de-php-en-javascript/" title="str_replace() de PHP en Javascript">str_replace() de PHP en Javascript</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/09/encontrar-todos-los-links-de-una-pagina-con-php/" title="Encontrar todos los links de una página con PHP">Encontrar todos los links de una página con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2008/11/encriptar-y-desencriptar-cadena-php/" title="Encriptar y desencriptar cadena con PHP">Encriptar y desencriptar cadena con PHP</a> (9)</li><li><a href="http://www.emm-gfx.net/2008/06/regex-i-solo-letras-numeros-y-espacios/" title="RegEx I, sólo letras, números y espacios.">RegEx I, sólo letras, números y espacios.</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/09/php-ordenar-array-por-el-valor-de-un-campo/" title="PHP: Ordenar array por el valor de un campo">PHP: Ordenar array por el valor de un campo</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2009/11/eliminar-posicion-de-un-array-en-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>UI is the killer feature</title>
		<link>http://www.emm-gfx.net/2009/11/ui-is-the-killer-feature/</link>
		<comments>http://www.emm-gfx.net/2009/11/ui-is-the-killer-feature/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 08:30:55 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Citas]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=448</guid>
		<description><![CDATA[UI development is the hard part. And it’s not the last step, it’s the first step. In my estimation, the difference between: software that performs function X; and software that performs function X, with an intuitive well-designed user interface isn’t just a little bit of extra work. It’s not even twice the work. It’s an [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>UI development is the hard part. And it’s not the last step, it’s the first step. In my estimation, the difference between:</p>
<ul>
<li>software that performs function X; and</li>
<li>software that performs function X, with an intuitive well-designed user interface</li>
</ul>
<p>isn’t just a little bit of extra work. It’s not even twice the work. It’s an entire order of magnitude more work. Developing software with a good UI requires both aptitude and a lot of hard work.</p></blockquote>
<div style="text-align: right;">John Gruber, <a href="http://daringfireball.net/">Daring Fireball</a></div>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2010/06/en-unos-segundos/" title="En unos segundos">En unos segundos</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/05/la-programacion-hoy-en-dia/" title="La programación hoy en día">La programación hoy en día</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/copia-este-libro/" title="Copia este libro">Copia este libro</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/12/el-proposito-del-obrero-deberia-ser/" title="El propósito del obrero debería ser&#8230;">El propósito del obrero debería ser&#8230;</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/" title="Comprobar la validez de un dominio con PHP">Comprobar la validez de un dominio con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/12/hydrax-skyx-y-paradise-engine/" title="Hydrax, Skyx y Paradise Engine">Hydrax, Skyx y Paradise Engine</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/12/fatum/" title="Fátum">Fátum</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/11/eliminar-posicion-de-un-array-en-php/" title="Eliminar posición de un array en PHP">Eliminar posición de un array en PHP</a> (2)</li><li><a href="http://www.emm-gfx.net/2009/11/str_replace-de-php-en-javascript/" title="str_replace() de PHP en Javascript">str_replace() de PHP en Javascript</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2009/11/ui-is-the-killer-feature/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>str_replace() de PHP en Javascript</title>
		<link>http://www.emm-gfx.net/2009/11/str_replace-de-php-en-javascript/</link>
		<comments>http://www.emm-gfx.net/2009/11/str_replace-de-php-en-javascript/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 08:05:42 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Expresiones regulares]]></category>
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=438</guid>
		<description><![CDATA[El otro día me dio por buscarlo y me di cuenta de que la gente estaba haciendo funciones propias para imitar a str_replace de php en javascript. Es curioso, ya que javascript tiene su propia versión de forma nativa. Por ejemplo para cambiar un guión bajo por un espacio: // En ocasasiones puede interesar utilizar [...]]]></description>
			<content:encoded><![CDATA[<p>El otro día me dio por buscarlo y me di cuenta de que la gente estaba haciendo funciones propias para imitar a <code>str_replace</code> de php en javascript. Es curioso, ya que javascript tiene su propia versión de forma nativa.</p>
<p>Por ejemplo para cambiar un guión bajo por un espacio:</p>
<pre lang="javascript" line="1">// En ocasasiones puede interesar utilizar nbsp en vez de un espacio
cadena = cadena.replace(/_/g,"&nbsp;");
// El mismo ejemplo con un espacio normal
cadena = cadena.replace(/_/g," ");</pre>
<p>Ese ejemplo es utilizando expresiones regulares, pero también se puede utilizar con porciones de cadena:</p>
<pre lang="javascript" line="1">cadena = 'Buenos tiempos';
cadena = cadena.replace("Buenos","Malos");
alert(cadena); // Mostraría "Malos tiempos"</pre>
<p>Recomiendo visitar <a href="http://gollum.inforg.uniovi.es/aii/valida_regexp.php">esta página</a> para aprender a utilizar las expresiones regulares de javascript y leer <a href="http://lineadecodigo.com/javascript/funcion-replace-en-javascript/">los comentarios de este articulo</a> para entender mejor el uso de <code>replace</code>. Antes de que me crucifiquen, ya sé que este articulo es muy simple y no explica con demasiada amplitud el uso de <code>replace</code> (de ahí que proponga dos enlaces para entenderlo mejor).</p>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/" title="Comprobar la validez de un dominio con PHP">Comprobar la validez de un dominio con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/11/eliminar-posicion-de-un-array-en-php/" title="Eliminar posición de un array en PHP">Eliminar posición de un array en PHP</a> (2)</li><li><a href="http://www.emm-gfx.net/2009/01/retrasar-eventos-y-efectos-de-jquery/" title="Retrasar eventos y efectos de jQuery">Retrasar eventos y efectos de jQuery</a> (0)</li><li><a href="http://www.emm-gfx.net/2008/07/comprobar-estado-de-un-servidor-mediante-php/" title="Comprobar estado de un servidor mediante PHP">Comprobar estado de un servidor mediante PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2008/06/regex-i-solo-letras-numeros-y-espacios/" title="RegEx I, sólo letras, números y espacios.">RegEx I, sólo letras, números y espacios.</a> (0)</li><li><a href="http://www.emm-gfx.net/2008/05/php-cookies/" title="PHP: Cookies">PHP: Cookies</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/07/ucfirst-de-php-en-javascript/" title="ucfirst de PHP en Javascript">ucfirst de PHP en Javascript</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/07/acentos-y-tildes-en-javascript/" title="Tildes en Javascript">Tildes en Javascript</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/03/base64-encode-y-decode-en-javascript/" title="Base64 (encode y decode) en Javascript">Base64 (encode y decode) en Javascript</a> (3)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2009/11/str_replace-de-php-en-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>inline-block cross-browser</title>
		<link>http://www.emm-gfx.net/2009/07/inline-block-cross-browser/</link>
		<comments>http://www.emm-gfx.net/2009/07/inline-block-cross-browser/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 09:40:20 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Hack]]></category>
		<category><![CDATA[Internet Explorer]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=33</guid>
		<description><![CDATA[En Foo Hack publicaron un recurso CSS que a veces utilizo y creo que estaría bien compartir, el problema es que no explican para qué sirve hacer lo que explican, y eso es lo que voy a hacer. Hay tres valores principales para el atributo display de CSS; normal, block e inline-block. El primero no [...]]]></description>
			<content:encoded><![CDATA[<p>En <a href="http://foohack.com/2007/11/cross-browser-support-for-inline-block-styling/" target="_blank">Foo Hack</a> publicaron un recurso CSS que a veces utilizo y creo que estaría bien compartir, el problema es que no explican para qué sirve hacer lo que explican, y eso es lo que voy a hacer.</p>
<p>Hay tres <a href="http://www.emm-gfx.net/wp-content/uploads/2009/07/displays.gif" class="fancy" rel="display">valores principales para el atributo <code>display</code></a> de CSS; normal, block e inline-block.</p>
<ul>
<li>El primero no modifica el formato del contenedor al que se aplica, es decir, si es un div y se deja el <code>display</code> normal seguirá ocupando el 100% del ancho que disponga del contenedor padre.</li>
<li>El segundo si lo modifica, puede usarse por ejemplo para enlaces, para hacer que el enlace ocupe un tamaño determinado y se pueda hacer click en toda la zona que ocupa visualmente, no sólo en el texto. Esto es quizá dificil de entender pero con un par de ejemplos es más fácil: los <a href="http://www.emm-gfx.net/wp-content/uploads/2009/07/displays2.gif" class="fancy" rel="display">enlaces de la cabecera de Facebook</a> a día de hoy podrían estar hechos con <code>display:inline-block;</code> por que el enlace ocupa un tamaño determinado y para pulsarlo no hace falta que el click se haga en el mismo texto del enlace. Si el <code>display</code> fuera normal, el enlace sólo serviría desde la zona de texto, si se hace click fuera no serviría de nada.</li>
<li><code>display:block</code> sirve para eso, pero puede que no siempre sea lo que se quiere hacer. El valor block posiciona los elementos uno encima del otro, y pocas veces se quiere hacer eso. Lo más normal es que se coloquen uno al lado del otro hasta que llegue al limite de ancho y entonces haga una fila nueva. Para eso se hizo el <code>display:inline-block</code>.
</ul>
<p>El problema es que en bastantes navegadores el valor inline-block simplemente no existe (en todos los nuevos funciona sin problemas) y ante la duda parece comportarse como un block. Pero hay una forma de que funcione bien en &#8220;todos&#8221; los navegadores (lo pongo entre comillas por que en <a href="http://tredosoft.com/Multiple_IE">Explorer 3, 4.01, 5.01 o 5.55</a> ni lo he probado). Sólo hay que utilizar estos valores y el <em>hack</em> * para algunos explorers.</p>
<pre lang="html" line="1">
display:-moz-inline-stack;
display:inline-block;
zoom:1;
*display:inline;
</pre>
<p>Aunque yo soy de los que piensa que lo mejor es no dejar acceder a la aplicación a quienes no actualizan su navegador, entiendo que haya quien utiliza navegadores antiguos por razones extrañas; por eso siempre van bien este tipo de &#8220;hacks&#8221; que ensucian el código y frenan la mejora de la web.</p>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2011/05/html5-editar-el-css-de-placeholder/" title="HTML5: Editar el css de Placeholder">HTML5: Editar el css de Placeholder</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/" title="Comprobar la validez de un dominio con PHP">Comprobar la validez de un dominio con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/12/hydrax-skyx-y-paradise-engine/" title="Hydrax, Skyx y Paradise Engine">Hydrax, Skyx y Paradise Engine</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/11/eliminar-posicion-de-un-array-en-php/" title="Eliminar posición de un array en PHP">Eliminar posición de un array en PHP</a> (2)</li><li><a href="http://www.emm-gfx.net/2009/11/ui-is-the-killer-feature/" title="UI is the killer feature">UI is the killer feature</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/11/str_replace-de-php-en-javascript/" title="str_replace() de PHP en Javascript">str_replace() de PHP en Javascript</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/08/quitar-el-borde-de-los-input-con-foco-en-safari-y-chrome/" title="Quitar el borde de los input con foco en Safari y Chrome">Quitar el borde de los input con foco en Safari y Chrome</a> (5)</li><li><a href="http://www.emm-gfx.net/2009/07/centrar-texto-en-vertical/" title="Centrar texto en vertical">Centrar texto en vertical</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/07/pngfix-js-para-internet-explorer-7/" title="PNGfix.js para Internet Explorer">PNGfix.js para Internet Explorer</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2009/07/inline-block-cross-browser/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Retrasar eventos y efectos de jQuery</title>
		<link>http://www.emm-gfx.net/2009/01/retrasar-eventos-y-efectos-de-jquery/</link>
		<comments>http://www.emm-gfx.net/2009/01/retrasar-eventos-y-efectos-de-jquery/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 08:36:27 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=726</guid>
		<description><![CDATA[No se si alguien lo habrá necesitado alguna vez, pero estoy seguro de que es un buen recurso a tener en cuenta… con la función setTimeout de Javascript podemos retrasar cualquier cosa, desde un write() hasta mezclas complejas de eventos y efectos en jQuery (o cualquier otro framework). La forma de uso es muy fácil, [...]]]></description>
			<content:encoded><![CDATA[<p>No se si alguien lo habrá necesitado alguna vez, pero estoy seguro de que es un buen recurso a tener en cuenta… con la función setTimeout de Javascript podemos retrasar cualquier cosa, desde un write() hasta mezclas complejas de eventos y efectos en jQuery (o cualquier otro framework). La forma de uso es muy fácil, sólo hay que tener en cuenta una cosa, que funciona en milisengundos.</p>
<p>Por ejemplo:</p>
<pre lang="javascript" line="1" escaped="true">setTimeout(
   function(){
      //Lo que debe pasar pasados 10 segundos (10mil milisegundos)
   }, 10000);</pre>
<p>Es bastante fácil de utilizar, pero si alguien necesita más información puede visitar <a title="http://www.klevo.sk/javascript/javascripts-settimeout-and-how-to-use-it-with-your-methods/" href="http://www.klevo.sk/javascript/javascripts-settimeout-and-how-to-use-it-with-your-methods/" target="_blank">Klevo Blog</a>, donde he encontrado un articulo que se explica bastante bien… pero esta en inglés.</p>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2009/11/str_replace-de-php-en-javascript/" title="str_replace() de PHP en Javascript">str_replace() de PHP en Javascript</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/07/evento-tab-en-jquery/" title="Evento &#8220;tab&#8221; / &#8220;tap&#8221; en jQuery">Evento &#8220;tab&#8221; / &#8220;tap&#8221; en jQuery</a> (1)</li><li><a href="http://www.emm-gfx.net/2011/07/ucfirst-de-php-en-javascript/" title="ucfirst de PHP en Javascript">ucfirst de PHP en Javascript</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/07/acentos-y-tildes-en-javascript/" title="Tildes en Javascript">Tildes en Javascript</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/03/base64-encode-y-decode-en-javascript/" title="Base64 (encode y decode) en Javascript">Base64 (encode y decode) en Javascript</a> (3)</li><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/01/str_replace-de-php-en-javascript-2/" title="La función str_replace() de PHP en Javascript">La función str_replace() de PHP en Javascript</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/" title="Comprobar la validez de un dominio con PHP">Comprobar la validez de un dominio con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/12/hydrax-skyx-y-paradise-engine/" title="Hydrax, Skyx y Paradise Engine">Hydrax, Skyx y Paradise Engine</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/11/eliminar-posicion-de-un-array-en-php/" title="Eliminar posición de un array en PHP">Eliminar posición de un array en PHP</a> (2)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2009/01/retrasar-eventos-y-efectos-de-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Encriptar y desencriptar cadena con PHP</title>
		<link>http://www.emm-gfx.net/2008/11/encriptar-y-desencriptar-cadena-php/</link>
		<comments>http://www.emm-gfx.net/2008/11/encriptar-y-desencriptar-cadena-php/#comments</comments>
		<pubDate>Tue, 25 Nov 2008 15:06:46 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Criptografía]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Función]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=511</guid>
		<description><![CDATA[Cualquier programador Web ha podido necesitar pasar datos por $_GET &#8211; en la url &#8211; , es una forma fácil y cómoda de pasar valores de una página a otra, pero… en algunos casos puede no ser recomendable y habría que tener un mínimo de precaución, y para estos casos &#8211; y otros muchos &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>Cualquier programador Web ha podido necesitar pasar datos por <code>$_GET</code> &#8211; en la url &#8211; , es una forma fácil y cómoda de pasar valores de una página a otra, pero… en algunos casos puede no ser recomendable y habría que tener un mínimo de precaución, y para estos casos &#8211; y otros muchos &#8211; se puede utilizar esta clase que un día vi &#8211; no se donde, si lo supiese pondría la fuente &#8211; y sobre la que me veo obligado a escribir, mas que nada para tenerla presente yo mismo y darla a conocer a quien pueda necesitarla.<span id="more-511"></span></p>
<p>Ya de paso, esto puede servirnos en algún que otro caso para evitar inyecciones SQL, y así evitar que alguien nos mangonee lo que no debe.</p>
<p><strong>Primero: Encriptar</strong></p>
<pre>function encrypt($string, $key) {
   $result = '';
   for($i=0; $i&lt;strlen($string); $i++) {
      $char = substr($string, $i, 1);
      $keychar = substr($key, ($i % strlen($key))-1, 1);
      $char = chr(ord($char)+ord($keychar));
      $result.=$char;
   }
   return base64_encode($result);
}</pre>
<p>Se utiliza un código secreto, que es el que se pone en <code>$key</code> y que cuando desencriptemos necesitaremos saberlo para que lo haga correctamente.</p>
<p>Para encriptar una cadena escribimos</p>
<pre>$cadena_encriptada = encrypt("LA CADENA A ENCRIPTAR","LA CLAVE");
</pre>
<p><strong>Segundo: Desencriptar</strong></p>
<pre>function decrypt($string, $key) {
   $result = '';
   $string = base64_decode($string);
   for($i=0; $i&lt;strlen($string); $i++) {
      $char = substr($string, $i, 1);
      $keychar = substr($key, ($i % strlen($key))-1, 1);
      $char = chr(ord($char)-ord($keychar));
      $result.=$char;
   }
   return $result;
}
</pre>
<p>Y para desencriptar la cadena escribimos</p>
<pre>$cadena_desencriptada = decrypt("LA CADENA ENCRIPTADA","LA CLAVE QUE SE USÓ PARA ENCRIPTARLA");
</pre>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/" title="Comprobar la validez de un dominio con PHP">Comprobar la validez de un dominio con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2008/07/comprobar-estado-de-un-servidor-mediante-php/" title="Comprobar estado de un servidor mediante PHP">Comprobar estado de un servidor mediante PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2010/03/enviar-el-log-de-errores-de-php-por-email/" title="Enviar el log de errores de PHP por email">Enviar el log de errores de PHP por email</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/comprobar-dni-nif-con-php/" title="Comprobar DNI / NIF con PHP">Comprobar DNI / NIF con PHP</a> (3)</li><li><a href="http://www.emm-gfx.net/2009/11/eliminar-posicion-de-un-array-en-php/" title="Eliminar posición de un array en PHP">Eliminar posición de un array en PHP</a> (2)</li><li><a href="http://www.emm-gfx.net/2009/08/recursividad-en-mkdir-de-php/" title="Recursividad en mkdir de PHP">Recursividad en mkdir de PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2008/07/eliminar-caracteres-raros-de-una-cadena-con-php/" title="Eliminar caracteres raros de una cadena con PHP">Eliminar caracteres raros de una cadena con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2008/06/regex-i-solo-letras-numeros-y-espacios/" title="RegEx I, sólo letras, números y espacios.">RegEx I, sólo letras, números y espacios.</a> (0)</li><li><a href="http://www.emm-gfx.net/2008/05/php-cookies/" title="PHP: Cookies">PHP: Cookies</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2008/11/encriptar-y-desencriptar-cadena-php/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Comprobar estado de un servidor mediante PHP</title>
		<link>http://www.emm-gfx.net/2008/07/comprobar-estado-de-un-servidor-mediante-php/</link>
		<comments>http://www.emm-gfx.net/2008/07/comprobar-estado-de-un-servidor-mediante-php/#comments</comments>
		<pubDate>Wed, 16 Jul 2008 08:47:19 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Función]]></category>
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=465</guid>
		<description><![CDATA[Quienes gestionen varias páginas en diferentes servidores, pueden necesitar hacer un pequeño test a los servidores cada poco tiempo para comprobar que están funcionando correctamente, o almenos que están funcionando, una opción es visitar las páginas, evidentemente, pero cuando el número de servidores crece no es en absoluto práctico, de manera que muchas veces resulta [...]]]></description>
			<content:encoded><![CDATA[<p>Quienes gestionen varias páginas en diferentes servidores, pueden necesitar hacer un pequeño test a los servidores cada poco tiempo para comprobar que están funcionando correctamente, o almenos que están funcionando, una opción es visitar las páginas, evidentemente, pero cuando el número de servidores crece no es en absoluto práctico, de manera que muchas veces resulta casi obligado buscar alternativas, o en este caso fabricarla uno mismo.</p>
<p><strong>Objetivo: Script para detectar si un servidor está caído, o no.<span id="more-465"></span></strong></p>
<p>Bien, el script consta de 3 partes, y 2 son básicas, que son la parte HTML y la parte PHP, la parte CSS podemos obviarla, pero siempre viene bien un poco de coloreado para tener una mejor visión.</p>
<p>Aquí se me hace bastante dificil separar los 3 códigos, por que van bastante &#8220;fusionados&#8221;, de manera que pondré por un lado la función que se encargará de averiguar el estado, la lista de servidores y por último el modo de repasar cada servidor.</p>
<p><strong>Parte 1/3: Función</strong></p>
<pre lang="php">function test($url,$tiempo){
   $check = @fsockopen($url, 80, $errno, $errstr, $tiempo);
   if($check){
      echo "&lt;li&gt;Online: $url&lt;/li&gt;";
   }else{
      echo "&lt;li&gt;Offline: $url&lt;/li&gt;";
   }
}</pre>
<p>Es bastante simple ¿no? por un lado recibe <code>$url</code>, que será el dominio o dirección IP &#8211; <span style="color: #ababab;">por ejemplo: emm-gfx.net o 255.255.255.255</span> &#8211; y por otro recibe la variable <code>$tiempo</code>, que será el tiempo de espera hasta &#8220;darse por vencido&#8221; y pasar al siguiente servidor, si este tiempo es superado, se dará por supuesto que el servidor está offline.</p>
<p>Ahora estaría bien tener una lista de servidores a revisar, en un array por ejemplo, yo lo he hecho de esta manera:</p>
<p><strong>Parte 2/3: Lista de servidores</strong></p>
<pre lang="php">$servidores = array(
   0=&gt;'emm-gfx.net',
   1=&gt;'emmsoftware.net',
   2=&gt;'blacksphere.es',
   3=&gt;'google.com',
   4=&gt;'dominioabsurdo.lol',
   5=&gt;'92.43.17.6',
   6=&gt;'255.255.255.255'
);</pre>
<p><strong>Parte 3/3: Ejecutar la función en cada uno de los servidores</strong></p>
<pre lang="php">$total = count($servidores);
$inicio = 0;
while($inicio &lt; $total){
   echo test($servidores[$inicio],$tiempo);
   $inicio++;
}</pre>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/" title="Comprobar la validez de un dominio con PHP">Comprobar la validez de un dominio con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/11/eliminar-posicion-de-un-array-en-php/" title="Eliminar posición de un array en PHP">Eliminar posición de un array en PHP</a> (2)</li><li><a href="http://www.emm-gfx.net/2008/11/encriptar-y-desencriptar-cadena-php/" title="Encriptar y desencriptar cadena con PHP">Encriptar y desencriptar cadena con PHP</a> (9)</li><li><a href="http://www.emm-gfx.net/2008/05/php-cookies/" title="PHP: Cookies">PHP: Cookies</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/03/enviar-el-log-de-errores-de-php-por-email/" title="Enviar el log de errores de PHP por email">Enviar el log de errores de PHP por email</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/comprobar-dni-nif-con-php/" title="Comprobar DNI / NIF con PHP">Comprobar DNI / NIF con PHP</a> (3)</li><li><a href="http://www.emm-gfx.net/2010/02/mostrar-una-fecha-sin-mostrarla-de-forma-amigable-con-php/" title="Mostrar una fecha sin mostrarla, de forma amigable, con PHP">Mostrar una fecha sin mostrarla, de forma amigable, con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/11/str_replace-de-php-en-javascript/" title="str_replace() de PHP en Javascript">str_replace() de PHP en Javascript</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/09/encontrar-todos-los-links-de-una-pagina-con-php/" title="Encontrar todos los links de una página con PHP">Encontrar todos los links de una página con PHP</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2008/07/comprobar-estado-de-un-servidor-mediante-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>RegEx I, sólo letras, números y espacios.</title>
		<link>http://www.emm-gfx.net/2008/06/regex-i-solo-letras-numeros-y-espacios/</link>
		<comments>http://www.emm-gfx.net/2008/06/regex-i-solo-letras-numeros-y-espacios/#comments</comments>
		<pubDate>Sun, 08 Jun 2008 09:51:48 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Expresiones regulares]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=424</guid>
		<description><![CDATA[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 &#8211; y ya de paso intentar subir [...]]]></description>
			<content:encoded><![CDATA[<p>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 &#8211; y ya de paso intentar subir pagerank xD &#8211; haré una guia serie de ejemplos usables.</p>
<p>Este es el primero:</p>
<p>Detectar si una cadena contiene algo que no sean letras, numeros, espacios o guiones &#8211; las letras sin acentos.<br />
<strong>Código:</strong></p>
<pre lang="PHP" line="1">$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.');
}</pre>
<p>En este caso además comprueba el tamaño de la cadena.</p>
<p>Con <code>trim()</code> 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 <code>$dirname</code>.</p>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/" title="Comprobar la validez de un dominio con PHP">Comprobar la validez de un dominio con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/11/eliminar-posicion-de-un-array-en-php/" title="Eliminar posición de un array en PHP">Eliminar posición de un array en PHP</a> (2)</li><li><a href="http://www.emm-gfx.net/2009/11/str_replace-de-php-en-javascript/" title="str_replace() de PHP en Javascript">str_replace() de PHP en Javascript</a> (0)</li><li><a href="http://www.emm-gfx.net/2008/11/encriptar-y-desencriptar-cadena-php/" title="Encriptar y desencriptar cadena con PHP">Encriptar y desencriptar cadena con PHP</a> (9)</li><li><a href="http://www.emm-gfx.net/2008/07/comprobar-estado-de-un-servidor-mediante-php/" title="Comprobar estado de un servidor mediante PHP">Comprobar estado de un servidor mediante PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2008/05/php-cookies/" title="PHP: Cookies">PHP: Cookies</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/09/php-ordenar-array-por-el-valor-de-un-campo/" title="PHP: Ordenar array por el valor de un campo">PHP: Ordenar array por el valor de un campo</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/09/comprobar-si-un-directorio-esta-vacio-con-php/" title="Comprobar si un directorio está vacío con PHP">Comprobar si un directorio está vacío con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/07/ucfirst-de-php-en-javascript/" title="ucfirst de PHP en Javascript">ucfirst de PHP en Javascript</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2008/06/regex-i-solo-letras-numeros-y-espacios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP: Cookies</title>
		<link>http://www.emm-gfx.net/2008/05/php-cookies/</link>
		<comments>http://www.emm-gfx.net/2008/05/php-cookies/#comments</comments>
		<pubDate>Wed, 14 May 2008 14:39:36 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Cookies]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=942</guid>
		<description><![CDATA[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 &#8211; en este caso en PHP &#8211; es realmente fácil. El primer paso para aprender a utilizarlas, seguramente sea ir a php.net y buscar cookie, pero como sé [...]]]></description>
			<content:encoded><![CDATA[<p>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 &#8211; en este caso en PHP &#8211; es realmente fácil.</p>
<p>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.<br />
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.</p>
<p>Si miramos como se utiliza la función setcookie veremos algo como esto:</p>
<pre>setcookie(string $name[,string $value[,int $expire[,string $path[,string $domain[,bool $secure[,bool $httponly]]]]]])</pre>
<p>Puede parecer complejo, pero se puede simplificar mucho como se verá a continuación y como se puede ver en la misma php.net.<br />
Por ejemplo para guardar una cookie con lo que sería un ejemplo práctico, podríamos utilizar esto:</p>
<pre>setcookie ("TestCookie", $value, time () + 3600);</pre>
<p>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.</p>
<p>Para leer esta cookie y luego utilizarla en el script o simplemente mostrarla se puede hacer esto:</p>
<pre>$cookie = $_COOKIE["TestCookie"]</pre>
<p>Para borrar una cookie creo que no hay ninguna función &#8211; pero eso no significa que no se pueda hacer, sólo que hay que pensar un poco &#8211; aunque podemos hacerlo, y de hecho no es difícil… podríamos hacer algo así:</p>
<pre>setcookie ("TestCookie", $value, time () + 1);</pre>
<p>De esta manera &#8220;borraríamos&#8221; 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.</p>
<p>Por ejemplo para hacer un contador de visitas para un único usuario, podríamos hacer esto:</p>
<pre>&lt;?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";
?&gt;</pre>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2010/02/obtener-la-url-que-se-esta-visitando-con-php/" title="Obtener la URL que se esta visitando con PHP">Obtener la URL que se esta visitando con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/12/comprobar-la-validez-de-un-dominio-con-php/" title="Comprobar la validez de un dominio con PHP">Comprobar la validez de un dominio con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/11/eliminar-posicion-de-un-array-en-php/" title="Eliminar posición de un array en PHP">Eliminar posición de un array en PHP</a> (2)</li><li><a href="http://www.emm-gfx.net/2008/07/comprobar-estado-de-un-servidor-mediante-php/" title="Comprobar estado de un servidor mediante PHP">Comprobar estado de un servidor mediante PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2010/02/mostrar-una-fecha-sin-mostrarla-de-forma-amigable-con-php/" title="Mostrar una fecha sin mostrarla, de forma amigable, con PHP">Mostrar una fecha sin mostrarla, de forma amigable, con PHP</a> (1)</li><li><a href="http://www.emm-gfx.net/2009/11/str_replace-de-php-en-javascript/" title="str_replace() de PHP en Javascript">str_replace() de PHP en Javascript</a> (0)</li><li><a href="http://www.emm-gfx.net/2009/09/encontrar-todos-los-links-de-una-pagina-con-php/" title="Encontrar todos los links de una página con PHP">Encontrar todos los links de una página con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2008/11/encriptar-y-desencriptar-cadena-php/" title="Encriptar y desencriptar cadena con PHP">Encriptar y desencriptar cadena con PHP</a> (9)</li><li><a href="http://www.emm-gfx.net/2008/06/regex-i-solo-letras-numeros-y-espacios/" title="RegEx I, sólo letras, números y espacios.">RegEx I, sólo letras, números y espacios.</a> (0)</li><li><a href="http://www.emm-gfx.net/2011/09/php-ordenar-array-por-el-valor-de-un-campo/" title="PHP: Ordenar array por el valor de un campo">PHP: Ordenar array por el valor de un campo</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2008/05/php-cookies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

