<?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"
	>

<channel>
	<title>Maestros del Web &#187; Ramon Torres</title>
	<atom:link href="http://www.maestrosdelweb.com/author/ramon-torres/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.maestrosdelweb.com</link>
	<description>Un espacio para los entusiastas del web</description>
	<pubDate>Fri, 21 Nov 2008 02:02:21 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<item>
		<title>Evitar listado de directorios en Apache</title>
		<link>http://www.maestrosdelweb.com/editorial/directapache/</link>
		<comments>http://www.maestrosdelweb.com/editorial/directapache/#comments</comments>
		<pubDate>Thu, 21 Sep 2006 00:00:00 +0000</pubDate>
		<dc:creator>Ramon Torres</dc:creator>
		
		<category><![CDATA[Aspectos técnicos]]></category>

		<category><![CDATA[Editorial]]></category>

		<category><![CDATA[Seguridad]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Prevenir el listado de directorios puede ser útil para mantener la seguridad en un sitio web.Para ello, es necesario tomar en cuenta varios puntos claves.

He visto varios sitios que para prevenir el listado de directorios, sus webmasters utilizan un archivo &#8216;index.html&#8217; vac&#237;o en cada carpeta en el servidor. 
Esto puede ser una soluci&#243;n sencilla pero [...]]]></description>
			<content:encoded><![CDATA[<p><span class="intro">Prevenir el listado de directorios puede ser útil para mantener la seguridad en un sitio web.Para ello, es necesario tomar en cuenta varios puntos claves.</span><span id="more-348"></span></p>
<p><body></p>
<p>He visto varios sitios que para prevenir el listado de directorios, sus webmasters utilizan un archivo &#8216;index.html&#8217; vac&iacute;o en cada carpeta en el servidor. </p>
<p>Esto puede ser una soluci&oacute;n sencilla pero si tomamos en cuenta que nuestro sitio web posee decenas hasta centenas de directorios y sub-directorios nuestro querido webmaster tendr&iacute;a la hermosa tarea de subir un archivo &#8216;index.html&#8217; en cada uno de ellos.</p>
<p>Si nuestro sitio est&aacute; alojado en un servidor Apache la forma m&aacute;s pr&aacute;ctica y f&aacute;cil es agregar la siguiente l&iacute;nea en un .htaccess localizado en el directorio ra&iacute;z:</p>
<div class="codigo">
<pre>Options -Indexes</pre>
</div>
<p>Otra cosa que podemos hacer (no la recomiendo) es admitir el listado parcial de los directorios. Restringiendo solamente los de un tipo especificado por nosotros. Por ejemplo: el siguiente c&oacute;digo evita que sean listados los archivos php y los archivos html.</p>
<div class="codigo">
<pre>IndexIgnore *.php *.html *.htm </pre>
</div>
<p>O tambi&eacute;n podemos especificar que no sean listados ning&uacute;n archivo poniendo:
</p>
<div class="codigo">
<pre>IndexIngnore *
</pre>
</div>
<p>Con esta l&iacute;nea cuando intentemos listar un directorio, &eacute;ste permitir&aacute; que se muestre como si estuviera vac&iacute;o. Esto se debe a que el asterisco (&quot;*&quot;) aplica para todos los archivos de cualquier nombre y cualquier extensi&oacute;n. </p>
<p>Este art&iacute;culo fue publicado originalmente en <a href="http://www.raymondjavaxx.com/articulos/evitar-listado-de-directorios.html">raymondjavaxx.com</a> por Ramon Torres. </p>
<p></body></p>
]]></content:encoded>
			<wfw:commentRss>http://www.maestrosdelweb.com/editorial/directapache/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Rotador de Banners en PHP</title>
		<link>http://www.maestrosdelweb.com/editorial/bannersphp/</link>
		<comments>http://www.maestrosdelweb.com/editorial/bannersphp/#comments</comments>
		<pubDate>Tue, 12 Sep 2006 00:00:00 +0000</pubDate>
		<dc:creator>Ramon Torres</dc:creator>
		
		<category><![CDATA[Desarrollo Web]]></category>

		<category><![CDATA[Editorial]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[El presente documento guiará paso a paso la construcción de un sistema rotador de banners en PHP y MySQL.
Antes  de empezar vamos a definir las caracter&#237;sticas que debe tener nuestro sistema  rotador:

 Mostrar&#225; un banner aleatorio al cargar una p&#225;gina.
 Mantendr&#225; un r&#233;cord de impresiones y clics.
 Presentara un texto alternativo para cuando [...]]]></description>
			<content:encoded><![CDATA[<p><span class="intro">El presente documento guiará paso a paso la construcción de un sistema rotador de banners en PHP y MySQL.</span><span id="more-344"></span></p>
<p>Antes  de empezar vamos a definir las caracter&iacute;sticas que debe tener nuestro sistema  rotador:</p>
<ul>
<li> Mostrar&aacute; un banner aleatorio al cargar una p&aacute;gina.</li>
<li> Mantendr&aacute; un r&eacute;cord de impresiones y clics.</li>
<li> Presentara un texto alternativo para cuando el banner no pueda ser cargado  (par&aacute;metro &quot;alt&quot; de la etiqueta &quot;img&quot;).</li>
</ul>
<p>Ya  definidas las caracter&iacute;sticas vamos a desarrollar nuestro sistema. Lo primero  que tendr&iacute;amos que dise&ntilde;ar es la tabla en la base de datos. </p>
<p>Necesitamos  almacenar algunos datos como por ejemplo: nombre del banner, url, url de la  imagen, cantidad de clics e impresiones. B&aacute;sicamente nuestra tabla lucir&iacute;a as&iacute;:</p>
<p><img src="http://www.maestrosdelweb.com/images/editorial/rotadorbanners.png" alt="Rotador de Imagenes" width="181" height="125" class="centro" /></p>
<p>Para  mayor facilidad pueden ejecutar este c&oacute;digo para crear su tabla en MySQL.</p>
<div class="codigo">
<pre>CREATE TABLE banner (
&nbsp;  banner_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
&nbsp; nombre VARCHAR(20) NULL,
&nbsp; url VARCHAR(100) NULL,
&nbsp; url_imagen  VARCHAR(100) NULL,
&nbsp;  impresiones INTEGER UNSIGNED NULL DEFAULT 0,
&nbsp; clics  INTEGER UNSIGNED NULL DEFAULT 0,
&nbsp; PRIMARY  KEY(banner_id)
);</pre>
</div>
<p>Una  vez creada nuestra tabla crearemos el script que se encargar&aacute; de mostrar los  banners de manera aleatoria.</p>
<div class="codigo">
<pre>&lt;?php

//  Conecta con el servidor mysql
  $link = mysql_connect('servidor-bd',  'usuario-bd', 'contrase&ntilde;a-bd');
  if(!$link) {

  &nbsp; // Si no  conecta, muestra un error y termina la ejecucion
  &nbsp; die('No  se pudo conectar con la base de datos:' . mysql_error());
 }

// Selecciona la base de datos que contiene la  tabla banner
  if(!mysql_select_db('nombre-base-de-datos',  $link))
  {

  &nbsp; // Si no  se puede seleccionar muestra error y termina ejecucion
  &nbsp;  die('Error seleccionando base de datos: ' . mysql_error());
  }

// Toma un banner aleatorio de la base de datos
  $sql = &quot;SELECT banner_id, nombre, url,  url_imagen FROM banner ORDER BY RAND() LIMIT 1&quot;;
  $res = mysql_query($sql);
list($banner_id, $nombre, $url, $url_imagen) =  mysql_fetch_array($res);

// Muestra el banner
  echo &quot;&lt;a href=\&quot;banner-clic.php?banner_id=&quot;.$banner_id.&quot;\&quot;&gt;\n&quot;;
  echo &quot;&lt;img  src=\&quot;&quot;.$url_imagen.&quot;\&quot; width=\&quot;468\&quot;  height=\&quot;60\&quot; &quot;;
  echo &quot;border=\&quot;0\&quot;  alt=\&quot;&quot;.$nombre.&quot;\&quot;&gt;&lt;/a&gt;\n&quot;;

// Actualiza la cantidad de impresiones del  banner
  $sql = &quot;UPDATE banner SET impresiones=impresiones+1  WHERE banner_id=&quot;.$banner_id.&quot; LIMIT 1&quot;;
  mysql_query($sql);
?&gt;</pre>
</div>
<p>Ahora creamos un script que se encargar&aacute; de  contar los clics de los banners:</p>
<div class="codigo">
<pre>&lt;?php

// Archivo 'banner-clic.php'

// Conecta con el servidor mysql
  $link = mysql_connect('servidor-bd',  'usuario-bd', 'contrase&ntilde;a-bd');
  if(!$link) {

  &nbsp; // Si no  conecta, muestra un error y termina la ejecucion
  &nbsp; die('No  se pudo conectar con la base de datos:' . mysql_error());
  }

// Selecciona la base de datos que contiene la  tabla banner
  if(!mysql_select_db('nombre-base-de-datos',  $link))
  {

  &nbsp; // Si no  se puede seleccionar muestra error y termina ejecucion
  &nbsp;  die('Error seleccionando base de datos: ' . mysql_error());
  }

// Revisa si se paso el parametro correcto
  if(!isset($_GET['banner_id']) || !eregi('^[0-9]+$',  $_GET['banner_id']))
  {
  &nbsp; die('Ha  seguido un enlace incorrecto');
  }
$banner_id = $_GET['banner_id'];
$sql = &quot;SELECT url FROM banner WHERE  banner_id=&quot; . $banner_id;
  $res = mysql_query($sql);
if(mysql_num_rows($res) == 0)
  {

  &nbsp; // Si el  banner no existe muestra el error y termina ejecucion
  &nbsp;  die('Este banner no existe');
  }
  else
  {
  &nbsp;  list($url) = mysql_fetch_array($res);

&nbsp; //  Actualiza la cantidad de clics
  &nbsp; $sql =  &quot;UPDATE banner SET clics=clics+1 WHERE banner_id=&quot;.$banner_id.&quot;  LIMIT 1&quot;;
  &nbsp; mysql_query($sql);

&nbsp; //  Redirecciona el navegador
  &nbsp;  header('Location: ' . $url);
  &nbsp; die();
  }
?&gt;</pre>
</div>
<p>Este  art&iacute;culo fue publicado originalmente en <a href="http://www.raymondjavaxx.com/articulos/rotador-de-banners-en-php.html">raymondjavaxx.com</a> por Ramon Torres.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.maestrosdelweb.com/editorial/bannersphp/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
