<?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; PHP</title>
	<atom:link href="http://www.emm-gfx.net/etiqueta/php/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>Thu, 29 Jul 2010 12:21:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Enviar el log de errores de PHP por email</title>
		<link>http://www.emm-gfx.net/2010/03/enviar-el-log-de-errores-de-php-por-email/</link>
		<comments>http://www.emm-gfx.net/2010/03/enviar-el-log-de-errores-de-php-por-email/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 12:29:15 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Control de errores]]></category>
		<category><![CDATA[Función]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=1125</guid>
		<description><![CDATA[Tener noticias de los errores que puedan surgir en una web, sobretodo cuando acaba de ser puesta en producción y necesita una atención especial para confirmar que todo funciona bien, o cuando se acaba de realizar algún cambio en el servidor, puede ser un punto muy importante. Para recibir los errores por email, hay que [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float:left; margin:-34px 0px 0px -60px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.emm-gfx.net%2F2010%2F03%2Fenviar-el-log-de-errores-de-php-por-email%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.emm-gfx.net%2F2010%2F03%2Fenviar-el-log-de-errores-de-php-por-email%2F&amp;source=emmgfx&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Tener noticias de los errores que puedan surgir en una web, sobretodo cuando acaba de ser puesta en producción y necesita una atención especial para confirmar que todo funciona bien, o cuando se acaba de realizar algún cambio en el servidor, puede ser un punto muy importante.</p>
<p>Para recibir los errores por email, hay que hacer dos cosas:<span id="more-1125"></span></p>
<ol>
<li>Preparar una función con las instrucciones en caso de ocurrir un error.</li>
<li>Decirle a PHP que tiene que ejecutar la función creada cuando sucedan errores.</li>
</ol>
<p>La primera parte, la función, sería algo así</p>
<pre>function errorPersonalizado($numeroerror, $cadenaerror){
    echo "&lt;div&gt;&lt;strong&gt;Error:&lt;/strong&gt; [$numeroerror] $cadenaerror&lt;/div&gt;";
    error_log("Error: [$numeroerror] $cadenaerror",1,"webmaster@elsitio.net","From: logerrores@elsitio.net");
}
</pre>
<p>La segunda parte, donde se le dice a PHP que tiene que ejecutar la función <code>errorPersonalizado</code> cuando ocurran errores, es sólo una linea:</p>
<pre>set_error_handler("errorPersonalizado");</pre>
<p>Por defecto, <code>set_error_handler</code> ejecuta <code>error_log()</code>.</p>
<p>Personalmente, creo que la mejor idea para controlar el log de errores en cada caso es&#8230;</p>
<ul>
<li>Para webs/aplicaciones <strong>en producción: No mostrar los errores en la misma página</strong>, por seguridad; y guardarlos en un archivo de logs que vaya &#8220;rotando&#8221; para que no acabe dando problemas cuando alcance tamaños complicados para el sistema de archivos. Los errores se pueden ocultar usando <code>error_reporting(0)</code>.</li>
<li><strong>Cuando se está desarrollando</strong>, lo más cómodo es <strong>tener los errores bien visibles</strong>, que aparezcan en la misma página cuando sucedan (este es el comportamiento por defecto).</li>
<li>Cuando cualquier tipo de error puede ser importante, lo mejor es utilizar este pequeño truco para enviar los errores por email y así mantenernos informados con más frecuencia, normalmente esto no es necesario cuando la programación está en desarrollo.</li>
</ul>
<p>Más información en la <a href="http://es.php.net/manual/en/ref.errorfunc.php" target="_blank">documentación oficial de PHP</a> y en <a href="http://www.w3schools.com/php/php_error.asp" target="_blank">w3schools</a>.</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 105px; width: 1px; height: 1px;">http://www.w3schools.com/php/php_error.asp</div>
<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/2010/02/comprobar-dni-nif-con-php/" title="Comprobar DNI / NIF con PHP">Comprobar DNI / NIF 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> (0)</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/11/encriptar-y-desencriptar-cadena-php/" title="Encriptar y desencriptar cadena con PHP">Encriptar y desencriptar cadena con PHP</a> (3)</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/base64-encode-y-decode-en-javascript/" title="Base64 (encode y decode) en Javascript">Base64 (encode y decode) en Javascript</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/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> (0)</li><li><a href="http://www.emm-gfx.net/2010/01/instalar-mcrypt-en-ubuntu-8-04-3-server-lts/" title="Instalar mcrypt en Ubuntu 8.04.3 server LTS">Instalar mcrypt en Ubuntu 8.04.3 server LTS</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2010/03/enviar-el-log-de-errores-de-php-por-email/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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[<div class="tweetmeme_button" style="float:left; margin:-34px 0px 0px -60px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.emm-gfx.net%2F2010%2F02%2Fobtener-la-url-que-se-esta-visitando-con-php%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.emm-gfx.net%2F2010%2F02%2Fobtener-la-url-que-se-esta-visitando-con-php%2F&amp;source=emmgfx&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<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> (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> (3)</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> (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></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 DNI / NIF con PHP</title>
		<link>http://www.emm-gfx.net/2010/02/comprobar-dni-nif-con-php/</link>
		<comments>http://www.emm-gfx.net/2010/02/comprobar-dni-nif-con-php/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 22:28:27 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[DNI]]></category>
		<category><![CDATA[Función]]></category>
		<category><![CDATA[NIF]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=964</guid>
		<description><![CDATA[Esta función es capaz de comprobar si el NIF tiene un formato correcto o no, es decir, si la letra indicada es la que corresponde a la cadena de 8 números. Que devuelva un resultado positivo no quiere decir que sea un número que exista, sólo que el formato es correcto. function comprobar_nif($nif){ $letras = [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float:left; margin:-34px 0px 0px -60px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.emm-gfx.net%2F2010%2F02%2Fcomprobar-dni-nif-con-php%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.emm-gfx.net%2F2010%2F02%2Fcomprobar-dni-nif-con-php%2F&amp;source=emmgfx&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Esta función es capaz de comprobar si el NIF tiene un formato correcto o no, es decir, si la letra indicada es la que corresponde a la cadena de 8 números. Que devuelva un resultado positivo no quiere decir que sea un número que exista, sólo que el formato es correcto.<span id="more-964"></span></p>
<pre>function comprobar_nif($nif){
   $letras = explode(',','T,R,W,A,G,M,Y,F,P,D,X,B,N,J,Z,S,Q,V,H,L,C,K,E');
   if (
      (strlen($nif)!=9) ||
      (!is_long($entero=intval(substr($nif,0,8)))) ||
      (!in_array($letra=strtoupper(substr($nif,8,1)),$letras)) ||
      ($letra!=$letras[$entero%23])
      ){
         return false;
      }else{
         return true;
      }
}
</pre>
<p>Si le indicamos <code>00000000T</code> devolverá <code>true</code>, aunque no creo que exista (este es el número que uso para hacer pruebas). Y creo que el uso es bastante sencillo, sería algo como esto</p>
<pre>if(comprobar_nif('00000000T')){
   echo 'Correcto';
}else{
   echo 'Incorrecto';
}
</pre>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><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/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> (0)</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/11/encriptar-y-desencriptar-cadena-php/" title="Encriptar y desencriptar cadena con PHP">Encriptar y desencriptar cadena con PHP</a> (3)</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/base64-encode-y-decode-en-javascript/" title="Base64 (encode y decode) en Javascript">Base64 (encode y decode) en Javascript</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/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> (0)</li><li><a href="http://www.emm-gfx.net/2010/01/instalar-mcrypt-en-ubuntu-8-04-3-server-lts/" title="Instalar mcrypt en Ubuntu 8.04.3 server LTS">Instalar mcrypt en Ubuntu 8.04.3 server LTS</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2010/02/comprobar-dni-nif-con-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mostrar una fecha sin mostrarla, de forma amigable, con PHP</title>
		<link>http://www.emm-gfx.net/2010/02/mostrar-una-fecha-sin-mostrarla-de-forma-amigable-con-php/</link>
		<comments>http://www.emm-gfx.net/2010/02/mostrar-una-fecha-sin-mostrarla-de-forma-amigable-con-php/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 19:16:05 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[nicetime]]></category>
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=874</guid>
		<description><![CDATA[Mostrar el tiempo de forma amigable, como Facebook o Twitter es una buena idea, sobretodo sobre todo si el lapso de tiempo entre el actual y el que se quiere mostrar no es demasiado largo. Si en vez de mostrar &#8220;14/11/1988 10:30&#8243; mostramos &#8220;Hace 21 años&#8221; puede parecer un poco exagerado y en ese caso [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float:left; margin:-34px 0px 0px -60px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.emm-gfx.net%2F2010%2F02%2Fmostrar-una-fecha-sin-mostrarla-de-forma-amigable-con-php%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.emm-gfx.net%2F2010%2F02%2Fmostrar-una-fecha-sin-mostrarla-de-forma-amigable-con-php%2F&amp;source=emmgfx&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><a class="fancy" href="http://www.emm-gfx.net/wp-content/uploads/2010/02/tiempo.gif">Mostrar el tiempo de forma amigable, como Facebook o Twitter</a> es una buena idea, <span style="text-decoration: line-through;">sobretodo</span> sobre todo si el lapso de tiempo entre el actual y el que se quiere mostrar no es demasiado largo. Si en vez de mostrar &#8220;14/11/1988 10:30&#8243; mostramos &#8220;Hace 21 años&#8221; puede parecer un poco exagerado y en ese caso yo mostraría algo como &#8220;Hace 21 años (el 14/11/1988)&#8221;. Pero si es algo que se actualiza con más frecuencia, como los estados de Twitter, Facebook y cualquier otra red social, donde es normal que no pasen más de 4 horas entre cada actualización y muy pocas veces pasa de un día, es mejor poner &#8220;Hace 34 minutos&#8221; que poner la hora en que se hizo, resulta más entendible para el usuario y da una imagen de dinamismo que el modo convencional no es capaz. Y el motivo es sencillo, cuando el usuario ve &#8220;a las 13:30&#8243; lo que hace es mirar la hora actual y calcular el lapso de tiempo&#8230; es decir, que mostrando la fecha de forma amigable lo que hacemos es evitarle al usuario la necesidad de pensar.<span id="more-874"></span></p>
<p>En Intenta han publicado <a href="http://www.webintenta.com/funcion-para-determinar-el-tiempo-transcurrido-en-PHP.html">su propia versión</a> del <em>snippet</em> que iba a publicar yo hoy mismo &#8211; <span style="color: #888888;">se me ha adelantado por unas horas&#8230;</span> &#8211; , pero a su manera.  Y como el mío es algo diferente &#8211; <span style="color: #888888;">los dos parten de la misma función <code>nicetime()</code></span> &#8211; lo publico igualmente.</p>
<p>En cualquier caso, la función original la escribió un tal yasmary en los <a href="http://www.php.net/manual/en/function.time.php#89415">comentarios de la documentación</a> de php, y esto es una adaptación para que se pueda utilizar tanto con fechas formateadas como con el <em>epoch time</em> de <em>unix</em> y <strong>en castellano</strong>.</p>
<p>Para utilizarla, sería algo como esto:</p>
<pre>echo nicetime('1988-11-14');
# Mostraría "Hace 21 años"
echo nicetime('2010-02-12');
# Mostraría "Dentro de 2 días"
echo nicetime('1234567890');
# Mostraría "Hace 1 año";
</pre>
<p>Esta es <strong>la función</strong>, y el ejemplo de resultado se puede ver a la derecha (en el globo azul de Twitter).</p>
<pre>function nicetime($date){
   if(empty($date)){
      return "Fecha no especificada";
   }
   $periods    = array("segundo", "minuto", "hora", "d&amp;iacute;a", "semana", "mese", "a&amp;ntilde;o", "d&amp;eacute;cada");
   $lengths    = array("60","60","24","7","4.35","12","10");

   $now            = time();
   if(is_int($date)){
      $unix_date   = $date;
   }else{
      $unix_date   = strtotime($date);
   }

   if(empty($unix_date)) {
      return "Fecha incorrecta";
   }
   if($now &gt; $unix_date) {
      $difference  = $now - $unix_date;
      $tense       = "Hace ";
   }else{
      $difference  = $unix_date - $now;
      $tense       = "Dentro de ";
   }
   for($j = 0; $difference &gt;= $lengths[$j] &amp;&amp; $j &lt; count($lengths)-1; $j++) {
      $difference /= $lengths[$j];
   }
   $difference = round($difference);
   if($difference != 1) {
      $periods[$j].= "s";
   }
   return "{$tense} $difference $periods[$j] ";
}
</pre>
<div class="cuadro-amarillo"><strong>Nota 12 mayo 2010:</strong><br />
Parece que <a href="http://alexwhinfield.com/lightweight-php-seconds-ago-script/" target="_blank">Alex Whinfield ha publicado un script parecido pero más sencillo</a>, aunque lo que más me ha llamado la atención es uno de los comentarios en que le avisan de que wordpress incluye una función para esto llamada <code>human_time_diff()</code>, de manera que algunas veces no sería necesario incluir nuestra propia función <img src='http://www.emm-gfx.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </div>
<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> (0)</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/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/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/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> (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> (0)</li><li><a href="http://www.emm-gfx.net/2010/01/instalar-mcrypt-en-ubuntu-8-04-3-server-lts/" title="Instalar mcrypt en Ubuntu 8.04.3 server LTS">Instalar mcrypt en Ubuntu 8.04.3 server LTS</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2010/02/mostrar-una-fecha-sin-mostrarla-de-forma-amigable-con-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>La función str_replace() de PHP en Javascript</title>
		<link>http://www.emm-gfx.net/2010/01/str_replace-de-php-en-javascript-2/</link>
		<comments>http://www.emm-gfx.net/2010/01/str_replace-de-php-en-javascript-2/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 13:02:02 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[replace]]></category>
		<category><![CDATA[str_replace]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=855</guid>
		<description><![CDATA[La función str_replace() de PHP tiene un uso muy sencillo, se le entregan 3 parámetros; la cadena a buscar, la cadena por la que se substituirá, y la cadena sobre la que se va a trabajar. Por ejemplo&#8230; $cadena = 'Prefiero el helado de frutas del bosque'; echo $cadena; // Prefiero el helado de frutas [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float:left; margin:-34px 0px 0px -60px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.emm-gfx.net%2F2010%2F01%2Fstr_replace-de-php-en-javascript-2%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.emm-gfx.net%2F2010%2F01%2Fstr_replace-de-php-en-javascript-2%2F&amp;source=emmgfx&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>La función <code>str_replace()</code> de PHP tiene un uso muy sencillo, se le entregan 3 parámetros; la cadena a buscar, la cadena por la que se substituirá, y la cadena sobre la que se va a trabajar. Por ejemplo&#8230;</p>
<pre>$cadena = 'Prefiero el helado de frutas del bosque';
echo $cadena;
// Prefiero el helado de frutas del bosque

$cadena = str_replace('frutas del bosque','pistacho',$cadena);
echo $cadena;
// Prefiero el helado de pistacho
</pre>
<p>Más información sobre <code>str_replace()</code> en la <a href="http://es.php.net/str_replace">página de PHP</a>.</p>
<p>Para hacerlo <strong>en Javascript</strong> se haría así:</p>
<pre>cadena = 'Prefiero el helado de frutas del bosque';
alert(cadena);
// Prefiero el helado de frutas del bosque

cadena = cadena.replace(/frutas del bosque/g,"pistacho");
alert(cadena);
// Prefiero el helado de pistacho
</pre>
<p>Si sólo se quiere cambiar la primera coincidencia, en vez de utilizar <code>/frutas del bosque/g</code> debería ser <code>"frutas del bosque"</code>. El cambio entre <code>//g</code> y <code>""</code> es aparentemente absurdo y me ha costado varias horas de trabajo&#8230; pero de errores se aprende.</p>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><li><a href="http://www.emm-gfx.net/2009/07/detectar-peticion-ajax-con-php/" title="Detectar petición AJAX con PHP">Detectar petición AJAX con PHP</a> (1)</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> (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/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/comprobar-dni-nif-con-php/" title="Comprobar DNI / NIF con PHP">Comprobar DNI / NIF con PHP</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/2010/01/instalar-mcrypt-en-ubuntu-8-04-3-server-lts/" title="Instalar mcrypt en Ubuntu 8.04.3 server LTS">Instalar mcrypt en Ubuntu 8.04.3 server LTS</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/01/rmdir-recursivo-en-php/" title="RMDIR recursivo en PHP">RMDIR recursivo en 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> (0)</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/2010/01/str_replace-de-php-en-javascript-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalar mcrypt en Ubuntu 8.04.3 server LTS</title>
		<link>http://www.emm-gfx.net/2010/01/instalar-mcrypt-en-ubuntu-8-04-3-server-lts/</link>
		<comments>http://www.emm-gfx.net/2010/01/instalar-mcrypt-en-ubuntu-8-04-3-server-lts/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 18:58:43 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[mcrypt]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ubuntu 8.04]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=810</guid>
		<description><![CDATA[Estoy repreparando el servidor personal que utilizo para proyectos de desarrollo. Lo he hecho desde cero por que la vez anterior lo hice hace tiempo y sin dejar nada documentado sobre lo que se hacía, de manera que con el tiempo y mi pobre memória he acabado olvidándome de casi todas las contraseñas que puse&#8230; [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float:left; margin:-34px 0px 0px -60px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.emm-gfx.net%2F2010%2F01%2Finstalar-mcrypt-en-ubuntu-8-04-3-server-lts%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.emm-gfx.net%2F2010%2F01%2Finstalar-mcrypt-en-ubuntu-8-04-3-server-lts%2F&amp;source=emmgfx&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><img style="float: right;" src="http://www.emm-gfx.net/wp-content/uploads/2010/01/mcrypt2.png" alt="mcrypt logo" />Estoy repreparando el servidor personal que utilizo para proyectos de desarrollo. Lo he hecho desde cero por que la vez anterior lo hice hace tiempo y sin dejar nada documentado sobre lo que se hacía, de manera que con el tiempo y mi pobre memória he acabado olvidándome de casi todas las contraseñas que puse&#8230; por eso he hecho copias de seguridad de todo y he vuelto a reinstalar el sistema. Quería instalar debian, como tenía antes, pero aún no sé por qué no me aceptaba el disco&#8230; y por eso he usado un Ubuntu Server&#8230; que tampoco está mal, y menos para mí que no sé demasiado de esto.<span id="more-810"></span></p>
<p>El caso es que necesitaba el paquete mcrypt, y no sé por qué no estaba en los repositorios que venían&#8230; por lo que he leido eso acaba siendo un problema para bastante gente que como yo ha buscado ayuda&#8230; (que al final ha resultado estar <a href="http://packages.ubuntu.com/hardy/amd64/php5-mcrypt/download">en la misma página de ubuntu</a>). Lo que he tenido que hacer es, añadir un nuevo repositorio en el archivo sources.list para que busque ahí el paquete que necesito, php5-mcrypt.</p>
<p><strong>Editamos el archivo sources.list</strong></p>
<pre>nano /etc/apt/sources.list</pre>
<p><strong>Y se añade la linea</strong><br />
(si nuestro servidor es amd64, si es otro visita la <a href="http://packages.ubuntu.com/hardy/php5-mcrypt">página de ubuntu</a> para buscar el tuyo)</p>
<pre>http://packages.ubuntu.com/hardy/amd64/php5-mcrypt/download</pre>
<p><strong>Actualizamos la lista de paquetes:</strong></p>
<pre>apt-get update</pre>
<p><strong>Y ahora ya se puede instalar el paquete que quería:</strong></p>
<pre>apt-get install php5-mcrypt</pre>
<p>Ahora sólo queda reiniciar Apache para que tenga sentido el trabajo hecho:</p>
<pre>/etc/init.d/apache2 restart</pre>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><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/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/comprobar-dni-nif-con-php/" title="Comprobar DNI / NIF con PHP">Comprobar DNI / NIF con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/02/servidor-dedicado-con-ip-dinamica/" title="Servidor dedicado con IP dinámica.">Servidor dedicado con IP dinámica.</a> (5)</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/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> (0)</li><li><a href="http://www.emm-gfx.net/2010/01/rmdir-recursivo-en-php/" title="RMDIR recursivo en PHP">RMDIR recursivo en 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> (0)</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/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/01/instalar-mcrypt-en-ubuntu-8-04-3-server-lts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RMDIR recursivo en PHP</title>
		<link>http://www.emm-gfx.net/2010/01/rmdir-recursivo-en-php/</link>
		<comments>http://www.emm-gfx.net/2010/01/rmdir-recursivo-en-php/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 12:35:32 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[exec]]></category>
		<category><![CDATA[Recursividad]]></category>
		<category><![CDATA[rmdir]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=802</guid>
		<description><![CDATA[Para eliminar directorios con php se utiliza la función rmdir(), el problema es que esa función no permite borrar carpetas que contengan algo, ya sea otras carpetas vacías o archivos. Se pueden hacer funciones para eliminar carpetas y su contenido utilizando sólo php, de hecho en el manual de rmdir en php.net se pueden ver [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float:left; margin:-34px 0px 0px -60px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.emm-gfx.net%2F2010%2F01%2Frmdir-recursivo-en-php%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.emm-gfx.net%2F2010%2F01%2Frmdir-recursivo-en-php%2F&amp;source=emmgfx&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Para eliminar directorios con php se utiliza la función <code>rmdir()</code>, el problema es que esa función no permite borrar carpetas que contengan algo, ya sea otras carpetas vacías o archivos.</p>
<p>Se pueden hacer funciones para eliminar carpetas y su contenido utilizando sólo php, de hecho en el <a href="http://es2.php.net/rmdir">manual de rmdir en php.net</a> se pueden ver algunas en los comentarios, pero no es eso lo que me interesa. Lo que voy a explicar es cómo hacerlo utilizando comandos del sistema (en unix, los de windows no tengo ni idea).<span id="more-802"></span></p>
<p>La cosa es sencilla, para ejecutar comandos del sistema se utiliza la función <code>exec()</code> de PHP.</p>
<p>Por ejemplo:</p>
<pre>echo '&lt;ol&gt;';
if(exec('rm -frv /el/directorio/a/borrar/',$salida)){
   foreach($salida as $line){
      echo '&lt;li&gt;'.$line.'&lt;/li&gt;';
   }
}else{
   echo '&lt;li&gt;Error al eliminar archivos&lt;/li&gt;';
}
echo '&lt;/ol&gt;';</pre>
<p>Como se ve, he utilizado el comando rm con las opciones <code>-frv</code>, la <code>f</code> es para forzar (ignora archivos inexistentes), la <code>r</code> para que sea recursivo y la <code>v</code> (de verbose) para que explique lo que esta haciendo. Si queréis, en la wikipedia hay <a href="http://en.wikipedia.org/wiki/Rm_%28Unix%29">mas información</a> sobre el comando <code>rm</code>.</p>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><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/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/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/comprobar-dni-nif-con-php/" title="Comprobar DNI / NIF con PHP">Comprobar DNI / NIF con PHP</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/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> (0)</li><li><a href="http://www.emm-gfx.net/2010/01/instalar-mcrypt-en-ubuntu-8-04-3-server-lts/" title="Instalar mcrypt en Ubuntu 8.04.3 server LTS">Instalar mcrypt en Ubuntu 8.04.3 server LTS</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> (0)</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/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/01/rmdir-recursivo-en-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[<div class="tweetmeme_button" style="float:left; margin:-34px 0px 0px -60px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.emm-gfx.net%2F2009%2F12%2Fcomprobar-la-validez-de-un-dominio-con-php%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.emm-gfx.net%2F2009%2F12%2Fcomprobar-la-validez-de-un-dominio-con-php%2F&amp;source=emmgfx&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<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> (3)</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> (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></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>0</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[<div class="tweetmeme_button" style="float:left; margin:-34px 0px 0px -60px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.emm-gfx.net%2F2009%2F11%2Feliminar-posicion-de-un-array-en-php%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.emm-gfx.net%2F2009%2F11%2Feliminar-posicion-de-un-array-en-php%2F&amp;source=emmgfx&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<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> (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/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> (3)</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/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></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>Encontrar todos los links de una página con PHP</title>
		<link>http://www.emm-gfx.net/2009/09/encontrar-todos-los-links-de-una-pagina-con-php/</link>
		<comments>http://www.emm-gfx.net/2009/09/encontrar-todos-los-links-de-una-pagina-con-php/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 10:49:42 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[Snippets]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=343</guid>
		<description><![CDATA[No hay mucho que decir sobre esto&#8230; sólo dejar el código: $html = file_get_contents('http://www.example.com'); $dom = new DOMDocument(); @$dom->loadHTML($html); $xpath = new DOMXPath($dom); $hrefs = $xpath->evaluate("/html/body//a"); for ($i = 0; $i < $hrefs->length; $i++) { $href = $hrefs->item($i); $url = $href->getAttribute('href'); echo $url.''; } Visto en css-tricks Articulos relacionadosObtener la URL que se esta visitando [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float:left; margin:-34px 0px 0px -60px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.emm-gfx.net%2F2009%2F09%2Fencontrar-todos-los-links-de-una-pagina-con-php%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.emm-gfx.net%2F2009%2F09%2Fencontrar-todos-los-links-de-una-pagina-con-php%2F&amp;source=emmgfx&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>No hay mucho que decir sobre esto&#8230; sólo dejar el código:</p>
<pre lang="PHP" line="1">
$html = file_get_contents('http://www.example.com');
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate("/html/body//a");
for ($i = 0; $i < $hrefs->length; $i++) {
   $href = $hrefs->item($i);
   $url = $href->getAttribute('href');
   echo $url.'';
}
</pre>
<p>Visto en <a href="http://css-tricks.com">css-tricks</a></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/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/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> (0)</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/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> (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> (0)</li><li><a href="http://www.emm-gfx.net/2010/01/instalar-mcrypt-en-ubuntu-8-04-3-server-lts/" title="Instalar mcrypt en Ubuntu 8.04.3 server LTS">Instalar mcrypt en Ubuntu 8.04.3 server LTS</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2009/09/encontrar-todos-los-links-de-una-pagina-con-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recursividad en mkdir de PHP</title>
		<link>http://www.emm-gfx.net/2009/08/recursividad-en-mkdir-de-php/</link>
		<comments>http://www.emm-gfx.net/2009/08/recursividad-en-mkdir-de-php/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 10:09:11 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Función]]></category>
		<category><![CDATA[mkdir]]></category>
		<category><![CDATA[Recursividad]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=255</guid>
		<description><![CDATA[No en todas las versiones de PHP se puede hacer un mkdir recursivo directamente, mkdir('/1/2/3/'); aunque es lo ideal, en versiones antiguas (la opción se añadió en la 5.0) no se podía. Si en tu servidor hay instalada una versión vieja de PHP y no tienes la posibilidad de actualizarlo tu mismo, puedes utilizar una [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float:left; margin:-34px 0px 0px -60px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.emm-gfx.net%2F2009%2F08%2Frecursividad-en-mkdir-de-php%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.emm-gfx.net%2F2009%2F08%2Frecursividad-en-mkdir-de-php%2F&amp;source=emmgfx&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>No en todas las versiones de PHP se puede hacer un <strong>mkdir recursivo</strong> directamente, <code>mkdir('/1/2/3/');</code> aunque es lo ideal, en versiones antiguas (la opción se añadió en la 5.0) no se podía. Si en tu servidor hay instalada una versión vieja de PHP y no tienes la posibilidad de actualizarlo tu mismo, puedes utilizar una función propia que haga el mkdir recursivo. En el manual oficial de php se explica a fondo como utilizar correctamente la función oficial, con los permisos y recursividad que se necesiten.</p>
<p>Como por ejemplo:</p>
<pre lang="php" line="1">
function mkdir_recursivo($pathname, $mode){
	umask(0);
	is_dir(dirname($pathname)) || mkdir_recursive(dirname($pathname), $mode);
	return is_dir($pathname) || mkdir($pathname, $mode);
}</pre>
<p>Un ejemplo de uso de esta función sería:</p>
<pre lang="php" line="1">
$ruta = 'carpeta/subcarpeta/subsubcarpeta/';
mkdir_recursivo($ruta,0777);
</pre>
<p>Donde <code>0777</code> hay que poner los permisos que se quieran (con el 0 delante).</p>
<p>En cualquier caso, recomiendo leer el manual oficial y visitar estos enlaces para entender y poder escoger la opción que convenga.</p>
<ul>
<li><a href="http://es2.php.net/mkdir">Manual oficial de PHP: mkdir</a></li>
<li><a href="http://www.mombu.com/php/php/t-33140-recursive-mkdir-doesnt-work-when-path-includes-a-non-existent-root-folder-1010858.html">Mkdir recursivo no funciona cuando el path incluye una carpeta raíz inexistente.</a></li>
</ul>
<p>Suerte.</p>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><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/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/comprobar-dni-nif-con-php/" title="Comprobar DNI / NIF con PHP">Comprobar DNI / NIF con PHP</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/01/rmdir-recursivo-en-php/" title="RMDIR recursivo en PHP">RMDIR recursivo en 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> (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> (3)</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/base64-encode-y-decode-en-javascript/" title="Base64 (encode y decode) en Javascript">Base64 (encode y decode) en Javascript</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/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> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2009/08/recursividad-en-mkdir-de-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Detectar petición AJAX con PHP</title>
		<link>http://www.emm-gfx.net/2009/07/detectar-peticion-ajax-con-php/</link>
		<comments>http://www.emm-gfx.net/2009/07/detectar-peticion-ajax-con-php/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 15:31:18 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=185</guid>
		<description><![CDATA[Con PHP se puede saber si una página se carga a través de una petición AJAX, puede ser útil para hacer que un contenido se vea sólo si se esta cargando con AJAX. O todo lo contrario, bloquear el contenido para estas peticiones. Para detectarlo se utiliza la variable de servidor $_SERVER['HTTP_X_REQUESTED_WITH']: if( !empty($_SERVER['HTTP_X_REQUESTED_WITH']) &#038;&#038; [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float:left; margin:-34px 0px 0px -60px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.emm-gfx.net%2F2009%2F07%2Fdetectar-peticion-ajax-con-php%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.emm-gfx.net%2F2009%2F07%2Fdetectar-peticion-ajax-con-php%2F&amp;source=emmgfx&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Con PHP se puede saber si una página se carga a través de una petición AJAX, puede ser útil para hacer que un contenido se vea sólo si se esta cargando con AJAX. O todo lo contrario, bloquear el contenido para estas peticiones.</p>
<p>Para detectarlo se utiliza la variable de servidor <code>$_SERVER['HTTP_X_REQUESTED_WITH']</code>:</p>
<pre lang="PHP" line="1">
if(
   !empty($_SERVER['HTTP_X_REQUESTED_WITH']) &#038;&#038;
   strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'
){
   # Ejecuta si la petición es a través de AJAX.
}else{
   # Ejecuta si la petición NO es a través de AJAX.
}
</pre>
<p>Y poco más que contar.</p>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><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> (0)</li><li><a href="http://www.emm-gfx.net/2009/09/aprender-jquery-1-que-es-y-por-que-usarlo/" title="Aprender jQuery, 1: Qué és y por qué usarlo.">Aprender jQuery, 1: Qué és y por qué usarlo.</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> (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/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/comprobar-dni-nif-con-php/" title="Comprobar DNI / NIF con PHP">Comprobar DNI / NIF con PHP</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/2010/01/instalar-mcrypt-en-ubuntu-8-04-3-server-lts/" title="Instalar mcrypt en Ubuntu 8.04.3 server LTS">Instalar mcrypt en Ubuntu 8.04.3 server LTS</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/01/rmdir-recursivo-en-php/" title="RMDIR recursivo en PHP">RMDIR recursivo en 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> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2009/07/detectar-peticion-ajax-con-php/feed/</wfw:commentRss>
		<slash:comments>1</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[<div class="tweetmeme_button" style="float:left; margin:-34px 0px 0px -60px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.emm-gfx.net%2F2008%2F11%2Fencriptar-y-desencriptar-cadena-php%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.emm-gfx.net%2F2008%2F11%2Fencriptar-y-desencriptar-cadena-php%2F&amp;source=emmgfx&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<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> (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/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> (0)</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/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/2010/03/base64-encode-y-decode-en-javascript/" title="Base64 (encode y decode) en Javascript">Base64 (encode y decode) en Javascript</a> (1)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.emm-gfx.net/2008/11/encriptar-y-desencriptar-cadena-php/feed/</wfw:commentRss>
		<slash:comments>3</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[<div class="tweetmeme_button" style="float:left; margin:-34px 0px 0px -60px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.emm-gfx.net%2F2008%2F07%2Fcomprobar-estado-de-un-servidor-mediante-php%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.emm-gfx.net%2F2008%2F07%2Fcomprobar-estado-de-un-servidor-mediante-php%2F&amp;source=emmgfx&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<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> (0)</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> (3)</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> (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></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>Convertir Hexadecimal a RGB con PHP</title>
		<link>http://www.emm-gfx.net/2008/06/convertir-hexadecimal-a-rgb-con-php/</link>
		<comments>http://www.emm-gfx.net/2008/06/convertir-hexadecimal-a-rgb-con-php/#comments</comments>
		<pubDate>Mon, 16 Jun 2008 07:16:02 +0000</pubDate>
		<dc:creator>Josep Viciana</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[conversor]]></category>
		<category><![CDATA[Hexadecimal]]></category>
		<category><![CDATA[RGB]]></category>

		<guid isPermaLink="false">http://www.emm-gfx.net/?p=1325</guid>
		<description><![CDATA[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: &#60;?php /** * This is an example on using Color to [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float:left; margin:-34px 0px 0px -60px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.emm-gfx.net%2F2008%2F06%2Fconvertir-hexadecimal-a-rgb-con-php%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.emm-gfx.net%2F2008%2F06%2Fconvertir-hexadecimal-a-rgb-con-php%2F&amp;source=emmgfx&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Veo en PHPClasses un articulo que muestra <strong>cómo convertir un código de color hexadecimal</strong> (<span style="color: #888888;">#cc0000</span>) <strong>a RGB</strong> (<span style="color: #888888;">rgb(255,255,255)</span>) y que si nos paramos a leer un poco se puede ver como también lo convierte a la inversa, de rgb a hexadecimal.</p>
<p>Aquí el código:</p>
<pre>&lt;?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 &lt; 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 "&lt;div style=\"width:100px;height:100px;background-color:".$bg.";\"&gt; &lt;/div&gt;\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.
*/
?&gt;</pre>
<p>Que podriamos resumir en:</p>
<pre>&lt;?php
$hsv = Color::hex2hsv("#00CCFF");
for ($i = 0; $i &lt; 5; $i++) {$rS = mt_rand(0, 100);
   $rV = mt_rand(0, 100);
   $bg = "#".Color::hsv2hex($hsv['h'], $rS, $rV);
   echo "&lt;div style=\"width:100px;height:100px;background-color:".$bg.";\"&gt; &lt;/div&gt;\n";
}
?&gt;</pre>
<h2  class="related_post_title">Articulos relacionados</h2><ul class="related_post"><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/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/comprobar-dni-nif-con-php/" title="Comprobar DNI / NIF con PHP">Comprobar DNI / NIF con PHP</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/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> (0)</li><li><a href="http://www.emm-gfx.net/2010/01/instalar-mcrypt-en-ubuntu-8-04-3-server-lts/" title="Instalar mcrypt en Ubuntu 8.04.3 server LTS">Instalar mcrypt en Ubuntu 8.04.3 server LTS</a> (0)</li><li><a href="http://www.emm-gfx.net/2010/01/rmdir-recursivo-en-php/" title="RMDIR recursivo en PHP">RMDIR recursivo en 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> (0)</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/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/06/convertir-hexadecimal-a-rgb-con-php/feed/</wfw:commentRss>
		<slash:comments>0</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[<div class="tweetmeme_button" style="float:left; margin:-34px 0px 0px -60px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.emm-gfx.net%2F2008%2F06%2Fregex-i-solo-letras-numeros-y-espacios%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.emm-gfx.net%2F2008%2F06%2Fregex-i-solo-letras-numeros-y-espacios%2F&amp;source=emmgfx&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<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> (0)</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> (3)</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/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> (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></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[<div class="tweetmeme_button" style="float:left; margin:-34px 0px 0px -60px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.emm-gfx.net%2F2008%2F05%2Fphp-cookies%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.emm-gfx.net%2F2008%2F05%2Fphp-cookies%2F&amp;source=emmgfx&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<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> (0)</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> (3)</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/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></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>
