<?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>xhiena.net &#187; html</title>
	<atom:link href="http://xhiena.net/index/tag/html/feed/" rel="self" type="application/rss+xml" />
	<link>http://xhiena.net/index</link>
	<description>Tecnologia, humor, actualidad y videos, muchos videos</description>
	<lastBuildDate>Tue, 03 Jan 2012 10:45:55 +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>[PHP] Listar contenido de un directorio</title>
		<link>http://xhiena.net/index/php-mostrar-contenido-directorio/</link>
		<comments>http://xhiena.net/index/php-mostrar-contenido-directorio/#comments</comments>
		<pubDate>Thu, 10 Mar 2011 17:20:55 +0000</pubDate>
		<dc:creator>xhiena</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[contenido de un directorio]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[leer directorio]]></category>
		<category><![CDATA[listar directorio]]></category>
		<category><![CDATA[mini-motor web]]></category>
		<category><![CDATA[mostrar archivos]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[readdir]]></category>
		<category><![CDATA[reutilizar código]]></category>

		<guid isPermaLink="false">http://xhiena.net/index/?p=1283</guid>
		<description><![CDATA[Cuando empecé con php con lo que más disfrutaba era crear mini motores web, piezas de código en un único archivo que generan una web y los puedes poner donde quieras y te salvan de un apuro o te sirven de base para montar otras cosas (ampliando el codigo). Hoy me he encontrado uno que [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando empecé con php con lo que más disfrutaba era crear <strong>mini motores web</strong>, piezas de código en un único archivo que generan una web y los puedes poner donde quieras y te salvan de un apuro o te sirven de base para montar otras cosas (ampliando el codigo).</p>
<p>Hoy me he encontrado uno que hice para mostrar el contenido de una carpeta (sin activar el listar contenidos del servidor web).</p>
<h3>Objetivo del script</h3>
<p>Debe mostrar el contenido de un directorio (no entrará en los subdirectorios) y sólo mostrará los archivos.</p>
<h3>Requisito</h3>
<p>Debe ser comprensible y fácil de modificar (tanto el php como el html resultante), ya que así con unos pocos campos se puede adaptar para cualquier cosa que se pueda hacer leyendo el contenido de un directorio (listado de ficheros, galería de fotos, leer el directorio para montar una estructura para pasarlo a una galería jQuery,&#8230;).</p>
<h3>El script</h3>
<p>El esquema del script será:</p>
<pre class="brush: plain; title: ; notranslate">
Abrimos el directorio
mientras podamos leer del directorio{
 mostramos el contenido
}
cerramos el directorio
</pre>
<p><span id="more-1283"></span></p>
<p>En php sería:</p>
<pre class="brush: php; title: ; notranslate">
$dir_handle = @opendir($path) or die(&quot;No se pudo abrir $path&quot;);
while ($file = readdir($dir_handle)) {
 echo &quot;&lt;a href=\&quot;$file\&quot; title=\&quot;$file\&quot;&gt;$file&lt;/a&gt;&lt;br&gt;&quot;;
}
closedir($dir_handle);
</pre>
<p>vale ya lo tenemos, pero&#8230; muestra enlaces para todos los archivos en la carpeta, incluso &#8216;.&#8217;, &#8216;..&#8217; y el propio archivo. como podemos arreglar esto?</p>
<p>Podemos hacer varias cosas,</p>
<p><strong>hacer el if mas grande del mundo libre</strong></p>
<pre class="brush: php; title: ; notranslate"> if($file == &quot;.&quot; || $file == &quot;..&quot; || $file == &quot;index.php&quot; ) continue;</pre>
<p>E ir añadiendo en la clausula todos los archivos que no queremos. Funciona, si pero lo hace complicado de mantener.</p>
<p><strong>Usar Arrays y las extensiones de los archivos<br />
</strong></p>
<p>Personalmente, es la solución que más me gusta (y con la que más cómodo estoy).</p>
<p>Suelo crearme un <strong>array con las extensiones</strong> que no quiero mostrar y luego comprobar si la extensión del archivo está en el array.</p>
<pre class="brush: php; title: ; notranslate">
//array de extensiones (la cadena vacia es para el caso de '.' , '..' y los ficheros sin extension)
$no_mostrar=Array(&quot;&quot;,&quot;php&quot;);
//sacamos la posicion del último punto
$pos=strrpos($file,&quot;.&quot;);
//cortamos la cadena desde esa posición hasta el final
$extension=substr($file,$pos);
if (!in_array($extension, $no_mostrar)) {
//cosas que hacer si no está en el array
}
else{
//cosas que hacer si está en el array
}
</pre>
<p><a name="codigo_listado"></a><br />
<strong>Y ya lo tenemos</strong>, juntandolo todo queda (y añadiendo &lt;ul&gt; y &lt;li&gt; porque es un listado:</p>
<pre class="brush: php; title: ; notranslate">

&lt;h1&gt;Listado de archivo&lt;/h1&gt;

&lt;ul&gt;
&lt;?php
//ruta a la carpeta, '.' es carpeta actual
$path=&quot;.&quot;;
$no_mostrar=Array(&quot;&quot;,&quot;php&quot;);
$dir_handle = @opendir($path) or die(&quot;No se pudo abrir $path&quot;);
while ($file = readdir($dir_handle)) {
 $pos=strrpos($file,&quot;.&quot;);
 $extension=substr($file,$pos);
 if (!in_array($extension, $no_mostrar)) {
 echo &quot;&lt;li&gt;&lt;a href=\&quot;$file\&quot; id=\&quot;enlace_$file\&quot; title=\&quot;$file\&quot;&gt;$file&lt;/a&gt;&lt;/li&gt;&quot;;
 }

}
closedir($dir_handle);
?&gt;
&lt;/ul&gt;
</pre>
<p>podemos añadir una variable contador dentro del while si queremos saber cuantos archivos estamos mostrando.</p>
<p>Como he dicho es muy extensible y modificable. Si quieres hacer una galeria de imágenes puedes cambiar</p>
<pre class="brush: php; title: ; notranslate">

echo &quot;&lt;li&gt;&lt;a href=\&quot;$file\&quot; id=\&quot;enlace_$file\&quot; title=\&quot;$file\&quot;&gt;$file&lt;/a&gt;&lt;/li&gt;&quot;;
</pre>
<p>por</p>
<pre class="brush: php; title: ; notranslate">

echo &quot;&lt;img src=\&quot;$file\&quot; id=\&quot;enlace_$file\&quot; title=\&quot;$file\&quot; alt=\&quot;$file\&quot; /&gt;&quot;;
</pre>
<p>y puedes quitarle el &lt;ul&gt; y el &lt;h1&gt; que he puesto y usarlo de con un include en cualquier otro script php&#8230; Mil posibilidades!!!</p>
<img src="http://xhiena.net/index/?ak_action=api_record_view&id=1283&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://xhiena.net/index/php-mostrar-contenido-directorio/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>In Memoriam Geocities.</title>
		<link>http://xhiena.net/index/in-memoriam-geocities/</link>
		<comments>http://xhiena.net/index/in-memoriam-geocities/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 21:48:48 +0000</pubDate>
		<dc:creator>xhiena</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cierre]]></category>
		<category><![CDATA[geocities]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[yahoo!]]></category>

		<guid isPermaLink="false">http://xhiena.net/index/?p=662</guid>
		<description><![CDATA[Si, Geocities ha cerrado y el culpable? Yahoo! Fundado a mediados de los 90, llegó a ser uno de los sitios más populares dentro de los resultados de las búsquedas antes de ser comprado por Yahoo Inc. por allá por el año 2000, momento en el que, tras las imposiciones del nuevo contrato de Yahoo, [...]]]></description>
			<content:encoded><![CDATA[<p>Si, Geocities ha cerrado y el culpable? Yahoo!</p>
<p>Fundado a mediados de los 90, llegó a ser uno de los sitios más populares dentro de los resultados de las búsquedas antes de ser comprado por Yahoo Inc. por allá por el año 2000, momento en el que, tras las imposiciones del nuevo contrato de Yahoo, el cual indicaba que pasaría a ser propietario de todos los derechos de contenido e imágenes alojados ahí, motivara a que los usuarios comenzaran a alejarse.</p>
<p>Y un servicio si no tiene usuarios&#8230; Yahoo! compro geocities y lo abandonó. Era un servicio de alojamiento web muy usado por ser gratuito y a pesar de que te ponian publicidad exagerada, los que empezabamos a crear paginas web lo usabamos.</p>
<p>Aun recuerdo, y si miro por mis cds de backups seguro que está, mi primera pagina web (que alojé en Geocities). Era un html burdo y sucio, un completo insulto a los estándares (que por aquella epoca (97-98) no tenia ni idea de que existieran estándares para esto), pero era mi web :D, la más cargada de gifs :D.</p>
<p>Estaba claro que ahora con la vendida de humo de la web 2.0 y habiendo servicios como webcindario o Tripod (la parte gratis de lycos, que creo que cerró el año pasado, no estoy seguro) que ofrecían lo mismo, sólo que con mas o menos publicidad y php con bases de datos, Geocities, que sólo ofrecia alojamiento HTML y unos pocos meguillas, no iba a hacer nada.</p>
<p>Por aquella época la interacción que hay ahora con la web no existia, las paginas eran HTML y algunas usaban cgis para el envio de formularios y un mínimo procesamiento de las páginas. No exisitían blogs, eran páginas personales, google estaba empezando, windows 98 dominaba el mercado, e Internet explorer 5.5 competia contra Netscape, ibamos a 56kbs, Hotmail ofrecia 2 Megas de espacio en su correo y no era de microsoft.</p>
<p>Como ha cambiado todo esto en un poco más de 10 años.</p>
<img src="http://xhiena.net/index/?ak_action=api_record_view&id=662&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://xhiena.net/index/in-memoriam-geocities/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>[JS] Abrir enlace en ventana nueva cumpliendo los estándares Xhtml/Html estricto</title>
		<link>http://xhiena.net/index/abrir-enlace-en-ventana-nueva-cumpliendo-los-estandares-xhtmlhtml-estricto/</link>
		<comments>http://xhiena.net/index/abrir-enlace-en-ventana-nueva-cumpliendo-los-estandares-xhtmlhtml-estricto/#comments</comments>
		<pubDate>Sun, 03 May 2009 19:45:52 +0000</pubDate>
		<dc:creator>xhiena</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[anclas]]></category>
		<category><![CDATA[atributo rel]]></category>
		<category><![CDATA[enlaces]]></category>
		<category><![CDATA[frames]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://xhiena.wordpress.com/?p=397</guid>
		<description><![CDATA[Venga va, que hace mucho que no pongo nada de programación web :D. Cuando insertas un enlace en HTML su comportamiento por defecto es que se abra en la ventana actual, si queremos cambiar ese comportamiento, sólo hay que poner el atributo target=&#8221;_new&#8221; en el enlace y se nos abrirá en una ventana nueva: Lo [...]]]></description>
			<content:encoded><![CDATA[<p>Venga va, que hace mucho que no pongo nada de programación web :D.</p>
<p>Cuando insertas un enlace en HTML su comportamiento por defecto es que se abra en la ventana actual, si queremos cambiar ese comportamiento, sólo hay que poner el atributo target=&#8221;_new&#8221; en el enlace y se nos abrirá en una ventana nueva:</p>
<pre class="brush: xml; title: ; notranslate">&lt;a href=&quot;http://www.xhiena.net&quot; target=&quot;_new&quot;&gt;Xhiena.net&lt;/a&gt;</pre>
<p>Lo mismo si estamos trabajando con frames, si queremos que un enlace abra la pagina en un frame especifico, en vez de _new ponemos el nombre del frame.</p>
<p>Todo eso esta muy bien, pero sólo cumple los estándares transicionales. Si estamos montando una pagina en con estandar estricto (que, personalmente pienso, es como se deberían hacer todas las webs) no podemos usar ese atributo de la etiqueta <strong>a</strong>.</p>
<p>Si lo requerimos y no hay otra forma de solucionarlo (si estas trabajando con frames quítalos, ganarás mucho en accesibilidad y usabilidad) se puede usar javascript para simular el atributo target.</p>
<p>La forma de hacerlo consiste en:</p>
<ol>
<li>Cojer todos los enlaces.</li>
<li>Ver su atributo rel.</li>
<li>Cambiar su propiedad target.</li>
</ol>
<p><span id="more-397"></span><br />
<strong>1.- Cojer todos los enlaces</strong></p>
<p>Esto se hace con la funcion getElementsByTagName(&#8220;tag&#8221;) de javascript, que nos devuelve un array con todos los elementos del documento con ese tag</p>
<pre class="brush: jscript; title: ; notranslate">var enlaces = document.getElementsByTagName(&quot;a&quot;);</pre>
<p><strong>2.- Ver su atributo rel.</strong></p>
<p>para ver el atributo rel de un enlace se puede hacer con getAttribute(&#8220;atributo&#8221;)<br />
enlace.getAttribute(&#8220;rel&#8221;)<br />
<strong>3.- Cambiar su propiedad target.</strong><br />
eso se hace con<strong> .target</strong></p>
<pre class="brush: jscript; title: ; notranslate">enlace .target=&quot;&quot;;</pre>
<p>Una vez claras las cosas que hay que hacer y como se debe hacer, una función que cambiara todos los targets a lo rel podria ser:</p>
<pre class="brush: jscript; title: ; notranslate">function cambiarTargets(){
var enlaces= document.getElementsByTagName(&quot;a&quot;);
for (var i=0;i&lt;enlaces.length; i++){
enlaces[i].target= enlaces[i].getAttribute(&quot;rel&quot;);
}
}</pre>
<p>Se pueden hacer varias comprobaciones para que el javascript funcione perfectamente:</p>
<p>Que el cliente pueda usar la función:</p>
<pre class="brush: jscript; title: ; notranslate">if (!document.getElementsByTagName) return;</pre>
<p>Que el enlace sea un enlace y no un ancla:<br />
enlaces[i].getAttribute(&#8220;href&#8221;)!=&#8221;"<br />
Sólo poner target si tienen un rel especifico:</p>
<pre class="brush: jscript; title: ; notranslate">if(enlaces[i].getAttribute(&quot;rel&quot;) == &quot;contenido&quot;){
enlaces[i].target = &quot;contenido&quot;;
}</pre>
<p>Aquí os pongo una función que cambia el tag de los enlaces que tengan rel = new</p>
<pre class="brush: jscript; title: ; notranslate">function cambiarTargets() {
if (!document.getElementsByTagName) return;
var enlaces= document.getElementsByTagName(&quot;a&quot;);
for (var i=0;i&lt;enlaces.length; i++) {
var enlace = enlaces[i];
if (enlace.getAttribute(&quot;href&quot;) &amp;&amp; enlace.getAttribute(&quot;rel&quot;) == &quot;new&quot;){
enlace.target = &quot;_new&quot;;
}
}
}</pre>
<img src="http://xhiena.net/index/?ak_action=api_record_view&id=397&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://xhiena.net/index/abrir-enlace-en-ventana-nueva-cumpliendo-los-estandares-xhtmlhtml-estricto/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

