<?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>Acatos &#187; php</title>
	<atom:link href="http://www.acatos.es/category/programacion/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.acatos.es</link>
	<description>Hay otros mundos... pero están en éste.</description>
	<lastBuildDate>Mon, 05 Dec 2011 14:43:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Evitar SQL Injection en php</title>
		<link>http://www.acatos.es/2010/04/23/evitar-sqlinjection-en-php/</link>
		<comments>http://www.acatos.es/2010/04/23/evitar-sqlinjection-en-php/#comments</comments>
		<pubDate>Fri, 23 Apr 2010 15:55:40 +0000</pubDate>
		<dc:creator>acatos</dc:creator>
				<category><![CDATA[chuletario]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[evitar]]></category>
		<category><![CDATA[limpiar]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[sql injection]]></category>

		<guid isPermaLink="false">http://www.acatos.es/?p=2006</guid>
		<description><![CDATA[Estaba ojeando la lista de categorías del blog y me he dado cuenta de que solo tengo 3 entradas referentes a php. Es curioso porque php suele ocupar el 33,3% de cada uno de mis dias (exceptuando sábados y domingos). Así que me he decidido a publicar algunos tips de vez en cuando Como habrán [...]]]></description>
			<content:encoded><![CDATA[<p>Estaba ojeando la lista de categorías del blog y me he dado cuenta de que solo tengo 3 entradas referentes a <a href="http://www.acatos.es/category/programacion/php/">php</a>. Es curioso porque <strong>php</strong> suele ocupar el 33,3% de cada uno de mis dias (exceptuando sábados y domingos).</p>
<p>Así que me he decidido a publicar algunos tips de vez en cuando <img src='http://www.acatos.es/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: center;"><a href="http://www.acatos.es/wp-content/uploads/2010/04/sql-injection-car-coche.jpg"><img class="size-medium wp-image-2007 aligncenter" title="sql-injection-car-coche" src="http://www.acatos.es/wp-content/uploads/2010/04/sql-injection-car-coche-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>Como habrán adivinado por la foto, hoy les voy a enseñar la función que suelo usar (cuando trabajo con <strong>mysql</strong>) para limpiar las ristras de posibles<a href="http://es.wikipedia.org/wiki/Inyecci%C3%B3n_SQL#PHP"> <strong>SQL Injection</strong></a>:</p>
<p><span style="color: #000080;"># Limpia una ristra para evitar sql injection<br />
function limpia_ristra($ristra){<br />
return mysql_escape_string(strip_tags($ristra));<br />
}</span></p>
<p><span style="color: #000080;"><span style="color: #000000;">Aunque lo mejor sería utilizar querys precompilados (prepare), bind variables y cosas así&#8230; otro día hablo de ello refiriendome a oracle :p</span><br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.acatos.es/2010/04/23/evitar-sqlinjection-en-php/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Instalando apache,php y mysql en Ubuntu Hardy Heron</title>
		<link>http://www.acatos.es/2008/06/04/instalando-apachephp-y-mysql-en-ubuntu-hardy-heron/</link>
		<comments>http://www.acatos.es/2008/06/04/instalando-apachephp-y-mysql-en-ubuntu-hardy-heron/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 19:01:08 +0000</pubDate>
		<dc:creator>acatos</dc:creator>
				<category><![CDATA[Turoriales]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[/var/www]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[configuracion]]></category>
		<category><![CDATA[configurar]]></category>
		<category><![CDATA[document_root]]></category>
		<category><![CDATA[hardy]]></category>
		<category><![CDATA[heron]]></category>
		<category><![CDATA[instalacion]]></category>
		<category><![CDATA[instalar]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.acatos.es/?p=59</guid>
		<description><![CDATA[Hoy vamos a preparar nuestra garza para que pueda ejecutar las típicas aplicaciones php que nos hacemos, como puede ser el caso del proyecto itable. Como siempre, si algo no queda del todo claro o si piensan que falta alguna explicación. No duden en comentarlo, que para eso estamos en la era de las webs [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy vamos a preparar <a href="http://www.acatos.es/2008/06/04/hardy-heron/" target="_self">nuestra garza</a> para que pueda ejecutar las típicas aplicaciones php que nos hacemos, como puede ser el caso del <a href="http://www.acatos.es/category/itable/">proyecto itable</a>.</p>
<p>Como siempre, si algo no queda del todo claro o si piensan que falta alguna explicación. No duden en comentarlo, que para eso estamos en la era de las webs sociales <img src='http://www.acatos.es/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  no mordemos.</p>
<p>Ingredientes:</p>
<ul>
<li>Apache2</li>
<li>Mysql 4.1</li>
<li>PHP 5</li>
</ul>
<p>Abrimos un terminal y empezamos.</p>
<p>Uno: El brikindans xDD</p>
<p>Va, fuera de coña.</p>
<p><strong>1.- Mysql</strong></p>
<p><em>sudo aptitude install mysql-server-4.1</em></p>
<p><strong>2.- Apache</strong></p>
<p><em>sudo aptitude install apache2</em></p>
<p><strong>3.- PHP</strong></p>
<p><em>sudo aptitude install php5</em></p>
<p><strong>4.- Soporte para mysql en apache y php</strong></p>
<p><em>sudo aptitude install libapache2-mod-auth-mysql</em></p>
<p><em>sudo aptitude install php5-mysql</em></p>
<p><strong>5.- Nos bajamos de la moto y nos volvemos a subir</strong></p>
<p><em>sudo /etc/init.d/apache2 restart</em></p>
<p><strong>6.- Cambiamos de ubicacion el directorio www</strong></p>
<p>Para tener todos los datos importantes en el mismo sitio a la hora de hacer backups, creamos un directorio en el home que se llame www y editamos el fichero de configuracion de apache para decirle donde se encuentra la nueva raiz del servidor web.</p>
<p><em>sudo gedit /etc/apache2/sites-available/default </em></p>
<p>Donde <em>aparezca /var/www/ </em>ponemos nuestra nueva ruta. Nos volvemos a bajar de la moto y a subir de nuevo.</p>
<p>Vamos al directorio /home/usuario/www/ y le ponemos los permisos para que se pueda acceder desde el navegador si procede.</p>
<p><strong>7.- Comprobamos que todo está correcto </strong></p>
<p>Creamos un fichero info.php con</p>
<p><code><span style="color: #000000;"><span style="color: #0000bb;">&lt;?</span><span style="color: #0000bb;">phpinfo</span><span style="color: #007700;">();?&gt;</span></span></code></p>
<p>Lo colocamo en el nuevo www, vamos al firefox y ponemos http://localhost/info.php</p>
<p>voilá.</p>
<p>Dudas, problemas, sugerencias, quejas&#8230; en los comentarios.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.acatos.es/2008/06/04/instalando-apachephp-y-mysql-en-ubuntu-hardy-heron/feed/</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
		<item>
		<title>php : Errores que no se muestran</title>
		<link>http://www.acatos.es/2008/05/23/php-errores-que-no-se-muestran/</link>
		<comments>http://www.acatos.es/2008/05/23/php-errores-que-no-se-muestran/#comments</comments>
		<pubDate>Fri, 23 May 2008 14:30:28 +0000</pubDate>
		<dc:creator>acatos</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[chuletario]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[activar]]></category>
		<category><![CDATA[ampliar]]></category>
		<category><![CDATA[blanco]]></category>
		<category><![CDATA[ejecucion]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[errores]]></category>
		<category><![CDATA[execution]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[limite]]></category>
		<category><![CDATA[memoria]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[no muestra]]></category>
		<category><![CDATA[page]]></category>
		<category><![CDATA[pantalla]]></category>
		<category><![CDATA[tiempo]]></category>
		<category><![CDATA[time]]></category>
		<category><![CDATA[white]]></category>

		<guid isPermaLink="false">http://www.acatos.es/?p=46</guid>
		<description><![CDATA[Un post breve de algo que me pasó una vez, por si le es útil a alguien. Aparentemente se estaba produciendo un error de php en una página y no se mostraba nada. El problema era de internet explorer :p fuí a: herramientas-&#62;opciones-&#62;avanzadas y desactivar &#8220;mostrar mensajes descriptivos de los errores http&#8221; Y así se [...]]]></description>
			<content:encoded><![CDATA[<p>Un post breve de algo que me pasó una vez, por si le es útil a alguien. Aparentemente se estaba produciendo un error de php en una página y no se mostraba nada.</p>
<p>El problema era de internet explorer :p fuí a:<br />
<strong>herramientas-&gt;opciones-&gt;avanzadas<br />
y desactivar &#8220;mostrar mensajes descriptivos de los errores http&#8221;</strong></p>
<p>Y así se solucionó.</p>
<p>Cuando nos pasen éstas cosas raras, también podemos activar todos los errores en tiempo de ejecución (en entornos de desarrollo normalmente, no me sean cafres).</p>
<blockquote><p><strong>error_reporting(E_ALL);</strong></p></blockquote>
<p>Y si tienen un &#8220;crash&#8221; subito del script, o sea, que se queda la pantalla en blanco, lo mismo puede ser que se esté sobrepasando el tiempo máximo de ejecución o el límite de memoria.</p>
<p>Tambien en tiempo de ejecución (y tambien evitando hacerlo en servidores de explotación) se puede hacer:</p>
<blockquote><p><strong>ini_set(&#8216;memory_limit&#8217;, &#8217;8M&#8217;);<br />
ini_set(&#8216;max_execution_time&#8217;, &#8217;30&#8242;);</strong></p></blockquote>
<p>Tanto el reporte de errores como las variables de límite se pueden y deben configurar en php.ini</p>
<p>¡Que les sea útil! Al final no me quedó tan corto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.acatos.es/2008/05/23/php-errores-que-no-se-muestran/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>php : Eliminar elementos duplicados de un array</title>
		<link>http://www.acatos.es/2008/05/20/php-eliminar-elementos-duplicados-de-un-array/</link>
		<comments>http://www.acatos.es/2008/05/20/php-eliminar-elementos-duplicados-de-un-array/#comments</comments>
		<pubDate>Tue, 20 May 2008 15:30:29 +0000</pubDate>
		<dc:creator>acatos</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[borrar]]></category>
		<category><![CDATA[campo]]></category>
		<category><![CDATA[duplicado]]></category>
		<category><![CDATA[duplicate]]></category>
		<category><![CDATA[element]]></category>
		<category><![CDATA[elemento]]></category>
		<category><![CDATA[elementos]]></category>
		<category><![CDATA[elements]]></category>
		<category><![CDATA[eliminar]]></category>
		<category><![CDATA[indice]]></category>
		<category><![CDATA[remove]]></category>
		<category><![CDATA[unico]]></category>
		<category><![CDATA[unique]]></category>
		<category><![CDATA[valor]]></category>
		<category><![CDATA[vector]]></category>

		<guid isPermaLink="false">http://www.acatos.es/?p=42</guid>
		<description><![CDATA[# Ésta función recibe un array con campos duplicados y lo # devuelve sin duplicidades. function elimina_duplicados($array, $campo) { foreach ($array as $sub) { $cmp[] = $sub[$campo]; } $unique = array_unique($cmp); foreach ($unique as $k => $campo) { $resultado[] = $array[$k]; } return $resultado; } # Prueba $v_usr = array(); $v_usr[] = array('foto'=>'Pepe1.jpg','nif'=>'222222'); $v_usr[] = [...]]]></description>
			<content:encoded><![CDATA[<pre lang="PHP">
# Ésta función recibe un array con campos duplicados y lo
# devuelve sin duplicidades.
function elimina_duplicados($array, $campo)
{
  foreach ($array as $sub)
  {
    $cmp[] = $sub[$campo];
  }
  $unique = array_unique($cmp);
  foreach ($unique as $k => $campo)
  {
    $resultado[] = $array[$k];
  }
  return $resultado;
}

# Prueba
$v_usr = array();

$v_usr[] = array('foto'=>'Pepe1.jpg','nif'=>'222222');
$v_usr[] = array('foto'=>'Pepe2.jpg','nif'=>'222222');
$v_usr[] = array('foto'=>'Julian.jpg','nif'=>'3333333');
$v_usr[] = array('foto'=>'Miguel.jpg','nif'=>'4444444');
$v_usr[] = array('foto'=>'Marcos.jpg','nif'=>'5555555');
$v_usr[] = array('foto'=>'Jose.jpg','nif'=>'66666666');

echo "Vector antes de eliminar duplicados";
print_r($v_usr);
echo "Vector despues";
print_r(elimina_duplicados($v_usr,'nif'));
?>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.acatos.es/2008/05/20/php-eliminar-elementos-duplicados-de-un-array/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

