<?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>Todo Soluciones &#187; PHP</title>
	<atom:link href="http://www.todosoluciones.es/category/informatica/web-informatica/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.todosoluciones.es</link>
	<description>Todo sobre Gadgets, Tecnologia e Internet.</description>
	<lastBuildDate>Sun, 05 Feb 2012 18:40:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>10 scripts para crear gráficas con Javascript, PHP, Flash, Java, ASP…</title>
		<link>http://www.todosoluciones.es/2008/08/29/10-scripts-para-crear-graficas-con-javascript-php-flash-java-asp%e2%80%a6/</link>
		<comments>http://www.todosoluciones.es/2008/08/29/10-scripts-para-crear-graficas-con-javascript-php-flash-java-asp%e2%80%a6/#comments</comments>
		<pubDate>Fri, 29 Aug 2008 12:40:06 +0000</pubDate>
		<dc:creator>ArKKaN</dc:creator>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.todosoluciones.es/informatica/web-informatica/10-scripts-para-crear-graficas-con-javascript-php-flash-java-asp%e2%80%a6/</guid>
		<description><![CDATA[Vamos a ver algunos scripts interesantes para crear gráficos, que utilizan Javascript, Flash, Actionscript y Java en un caso.

Flot: realizado puramente con Javascript utilizando jQuery, puedes interaccionar con los datos incluso ofrece la posibilidad de realizar zoom.


Open Flash Chart: es una de las mejores opciones, tanto por el aspecto visual, como por la cantidad de [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Vamos a ver algunos <strong>scripts interesantes para crear gráficos,</strong> que utilizan Javascript, Flash, Actionscript y Java en un caso.</p>
<ul>
<li><a href="http://code.google.com/p/flot/" title="Flot" target="_blank"><strong>Flot:</strong></a> realizado puramente con Javascript utilizando jQuery, puedes interaccionar con los datos incluso ofrece la posibilidad de realizar zoom.
<p style="text-align: center"><img src="http://informatica-practica.net/wordpress/wp-content/2008/06/flot.jpg" alt="flot.jpg" /></p>
</li>
<li><a href="http://teethgrinder.co.uk/open-flash-chart/" target="_blank"><strong>Open Flash Chart:</strong></a> es una de las mejores opciones, tanto por el aspecto visual, como por la cantidad de clases disponibles en diferentes lenguajes, como son <acronym title="Pre-Hypertext Processing">PHP</acronym>, <acronym title="Practical Extraction and Report Language">Perl</acronym>, Python, Java, Ruby on Rails, y .Net; que posibilitan conectar con los gráficos.
<p style="text-align: center"><img src="http://informatica-practica.net/wordpress/wp-content/2008/06/open-flash-chart.png" alt="open-flash-chart.png" /><span id="more-112"></span></p>
</li>
<li><a href="http://www.amcharts.com/" target="_blank"><strong>AmCharts:</strong></a> realizado con Flash, ofrece diferentes tipos de gráficos, todos ellos muy atractivos. Se pueden usar datos extraidos de ficheros <acronym title="eXtensible Markup Language">XML</acronym>, incluso se pueden leer datos generados dinamicamente con <acronym title="Pre-Hypertext Processing">PHP</acronym>, .NET, Java, Ruby on Rails, <acronym title="Practical Extraction and Report Language">Perl</acronym> y ColdFusion. Es complematemente gratuito siempre y cuando respetemos el link que incorporan en la parte superior de las tablas.
<p style="text-align: center"><img src="http://informatica-practica.net/wordpress/wp-content/2008/06/amcharts.jpg" alt="amcharts.jpg" /></p>
</li>
<li><a href="http://www.ejschart.com/" target="_blank"><strong>Emprise Javascript Charts:</strong></a> para crear gráficas utilizando unicamente Javascript.
<p style="text-align: center"><img src="http://informatica-practica.net/wordpress/wp-content/2008/06/javascript-charts.jpg" alt="javascript-charts.jpg" /></p>
</li>
<li><a href="http://www.liquidx.net/plotkit/" target="_blank"><strong>Plotkit:</strong></a> otra solución Javascript perfectamente documentada, basada en la librería MochiKit.
<p style="text-align: center"><img src="http://informatica-practica.net/wordpress/wp-content/2008/06/plotkit.jpg" alt="plotkit.jpg" /></p>
</li>
<li><strong><a href="http://solutoire.com/flotr/" target="_blank">Flotr:</a></strong> éste script se basa en la librería prototype. Puedes hacer zooms, crear leyendas, soporte para valores negativos, etc.
<p style="text-align: center"><img src="http://informatica-practica.net/wordpress/wp-content/2008/06/flotr.jpg" alt="flotr.jpg" /></p>
</li>
<li><a href="http://www.maani.us/charts/index.php" target="_blank"><strong><acronym title="Pre-Hypertext Processing">PHP</acronym>/SFW Charts:</strong></a> como su propio nombre indica, para poder fusionar <acronym title="Pre-Hypertext Processing">PHP</acronym> con Flash. Realmente recomendable, además goza de un monton de gráficos diversos.
<p style="text-align: center"><img src="http://informatica-practica.net/wordpress/wp-content/2008/06/phpswf.jpg" alt="phpswf.jpg" /></p>
</li>
<li><strong><a href="http://www.visifire.com/" target="_blank">Visfire:</a></strong> bastante simple, permite funcionar con <acronym title="Active Server Pages">ASP</acronym>, <acronym title="Active Server Pages">ASP</acronym>.Net, <acronym title="Pre-Hypertext Processing">PHP</acronym>, JSP, ColdFusion, Ruby on Rails o solamente <acronym title="HyperText Markup Language">HTML</acronym>.
<p style="text-align: center"><img src="http://informatica-practica.net/wordpress/wp-content/2008/06/visifire.jpg" alt="visifire.jpg" /></p>
</li>
<li><a href="http://www.fusioncharts.com/Free/" target="_blank"><strong>FusionCharts:</strong></a> funciona de manera equivalente a Visfire.
<p style="text-align: center"><img src="http://informatica-practica.net/wordpress/wp-content/2008/06/fusioncharts.jpg" alt="fusioncharts.jpg" /></p>
</li>
<li><a href="http://www.jfree.org/jfreechart/" target="_blank"><strong>JFreeCharts:</strong></a> el último scriot puede resultar muy interesante, puesto que funciona con Java, de forma que cualquier programador pueda mostrar sus gráficas en unos sencillos pasos. Una joya para los desarrolladores en Java.
<p style="text-align: center"><img src="http://informatica-practica.net/wordpress/wp-content/2008/06/java.jpg" alt="java.jpg" /></p>
</li>
</ul>
<p>Fuente: <a href="http://informatica-practica.net/wordpress/index.php/2008/06/15/10-scripts-para-crear-graficas-con-javascript-php-flash-java-asp/" title="http://informatica-practica.net/wordpress/index.php/2008/06/15/10-scripts-para-crear-graficas-con-javascript-php-flash-java-asp/">Informatica Practica</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.todosoluciones.es/2008/08/29/10-scripts-para-crear-graficas-con-javascript-php-flash-java-asp%e2%80%a6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Previniendo ataques XSS con PHP</title>
		<link>http://www.todosoluciones.es/2008/03/22/previniendo-ataques-xss-con-php/</link>
		<comments>http://www.todosoluciones.es/2008/03/22/previniendo-ataques-xss-con-php/#comments</comments>
		<pubDate>Sat, 22 Mar 2008 23:04:45 +0000</pubDate>
		<dc:creator>ArKKaN</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Vulnerabilidad]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.todosoluciones.es/informatica/web-informatica/previniendo-ataques-xss-con-php/</guid>
		<description><![CDATA[XSS (Cross Site Scripting) es una de las vulnerabilidades web más comunes, se produce habitualmente cuando no se validan correctamente los datos ingresados por el usuario que posteriormente son mostrados en una página, permitiendo la inyección de código “no deseado” (Javascript o VBScript). No vamos a entrar en más detalles sobre esta vulnerabilidad ni en [...]]]></description>
			<content:encoded><![CDATA[<p><a target="_blank" href="http://es.wikipedia.org/wiki/Cross_Site_Scripting" title="Cross Site Scripting">XSS</a> (Cross Site Scripting) es una de las vulnerabilidades web más comunes, se produce habitualmente cuando no se validan correctamente los datos ingresados por el usuario que posteriormente son mostrados en una página, permitiendo la inyección de código “no deseado” (Javascript o VBScript). No vamos a entrar en más detalles sobre esta vulnerabilidad ni en sus variantes. Nos centraremos en como prevenirla, en este caso desde PHP:</p>
<p>Una función muy útil en estos casos es <a target="_blank" href="http://ar.php.net/strip_tags" title="strip_tags">strip_tags</a><span id="more-66"></span></p>
<p>Si quisiéramos por ejemplo que los usuarios de nuestra web dejen sus comentarios en un articulo por medio de un formulario, deberíamos aplicar esta función a los datos ingresados para poder mostrarlos en nuestra web. Este sería un ejemplo:</p>
<p><font color="#008000">&lt;?php<br />
$texto=strip_tags($texto);<br />
?&gt;</font></p>
<p>Cabe destacar que la función <a target="_blank" href="http://ar.php.net/strip_tags">strip_tags</a> elimina también el código <acronym title="HyperText Markup Language">HTML</acronym> por lo que no permitirá dar ningún tipo de formato a los datos ingresados. Si quisiéramos darle la posibilidad al usuario de utilizar alguna etiqueta, la función cuenta con un argumento mediante el cual se especifica la o las etiquetas permitidas:</p>
<p><font color="#008000">&lt;?php<br />
     $texto=strip_tags($texto, ‘&lt;b&gt;’);<br />
?&gt;</font></p>
<p>Pero hay que tener mucho cuidado con esto (Como lo advierte uno de los warnings de la página oficial de <acronym title="Pre-Hypertext Processing">PHP</acronym>) porque esta función no elimina el código incluido dentro de los atributos de las etiquetas permitidas, por lo que si el usuario introduce algo como esto:</p>
<p><font color="#008000">&lt;b onmouseover=”&lt;script&gt;alert(’XSS’)&lt;/script&gt;”&gt;Texto en Negrita&lt;/b&gt;</font></p>
<p>El resultado, luego de que los datos pasen por la función y sean incluidos en una página web, sería el ya clásico:</p>
<p><img align="top" width="217" src="http://www.codigo200.com/imagenes/xss.jpg" alt="Prueba vulnerabilidad XSS" height="134" /></p>
<p>Por lo que para solucionar esto, deberiamos aplicar la función <a target="_blank" href="http://ar.php.net/preg_replace">preg_replace</a>. El script quedaría de la siguiente forma:</p>
<p><font color="#008000">&lt;?php<br />
     $texto=strip_tags($texto, ‘&lt;b&gt;’);<br />
     $texto=preg_replace(’/&lt;(.*)\s+ (\w+=.*?)&gt;’, ”, $texto);<br />
?&gt;</font></p>
<p>Con esto solucionariamos el “pequeño” bug de la función <a target="_blank" href="http://ar.php.net/strip_tags">strip_tags</a>.</p>
<p>Otra opción (muy utilizada en scripts de foros) es la de permitir un pseudocodigo (por ejemplo <a target="_blank" href="http://www.phpbb.com/community/faq.php?mode=bbcode">BBCode</a>) que luego es reemplazado por las etiquetas <acronym title="HyperText Markup Language">HTML</acronym> verdaderas:</p>
<p>Si el usuario ingresara lo siguiente:</p>
<p><font color="#008000">[b]Negrita[/b]</font></p>
<p>Reemplazariamos el <a target="_blank" href="http://www.phpbb.com/community/faq.php?mode=bbcode">BBCode</a> por <acronym title="HyperText Markup Language">HTML</acronym> para mostrarlo en pantalla (utilizando la función <a target="_blank" href="http://ar.php.net/str_replace">str_replace</a>) y el resultado podríamos incluirlo en una página sin correr ningún riesgo:</p>
<p><font color="#008000">&lt;?php<br />
     $texto=strip_tags($texto);<br />
     $texto=str_replace(’[b]’,'&lt;b&gt;’);<br />
     $texto=str_replace(’[/b]’,'&lt;/b&gt;’);<br />
?&gt;</font></p>
<p>Existen varios tipos de ataques que explotan la vulnerabilidad <a target="_blank" href="http://es.wikipedia.org/wiki/Cross_Site_Scripting" title="Cross Site Scripting">XSS</a>, por lo que recominedo investigarla mucho mas a fondo.</p>
<p>Fuente: <a href="http://www.codigo200.com/previniendo-ataques-xss-con-php">http://www.codigo200.com/previniendo-ataques-xss-con-php</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.todosoluciones.es/2008/03/22/previniendo-ataques-xss-con-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>60 optimizaciones para tus programas PHP</title>
		<link>http://www.todosoluciones.es/2008/01/14/60-optimizaciones-para-tus-programas-php/</link>
		<comments>http://www.todosoluciones.es/2008/01/14/60-optimizaciones-para-tus-programas-php/#comments</comments>
		<pubDate>Mon, 14 Jan 2008 19:00:25 +0000</pubDate>
		<dc:creator>ArKKaN</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://todosoluciones.es/informatica/web-informatica/php/60-optimizaciones-para-tus-programas-php/</guid>
		<description><![CDATA[Aquí tenemos 60 consejos que nos pueden ser de gran ayuda para una correcta programación y optimización.

Si un método puede ser static, decláralo estático. La velocidad se incrementa en un factor de 4.
echo es más rápido que print, aunque la diferencia es despreciable.
Inicializa el contador de tus bucles for antes y no en el propio [...]]]></description>
			<content:encoded><![CDATA[<p>Aquí tenemos 60 consejos que nos pueden ser de gran ayuda para una correcta programación y optimización.</p>
<ol>
<li>Si un método puede ser <code>static</code>, decláralo estático. La velocidad se incrementa en un factor de 4.</li>
<li><code>echo</code> es más rápido que <code>print</code>, aunque la diferencia es despreciable.</li>
<li>Inicializa el contador de tus bucles <code>for</code> antes y no en el propio bucle.</li>
<li>Si tienes que iterar un objeto o un array, utiliza SPL en lugar de bucles recursivos.</li>
<li>Destruye las variables que ya no utilices con <code>unset()</code> para liberar memoria, especialmente si son objetos o arrays pesados. Si utilizas OOP, revisa el destructor <code>__destruct()</code> en este sentido.<span id="more-44"></span></li>
<li>Si tienes que recorrer un array enorme y no te interesa guardarlo, considera utilizar <code>array_shift()</code> para ir leyendo y borrando a la vez.</li>
<li>No abuses de <code>__get()</code>, <code>__set()</code> y <code>__autoload()</code>.</li>
<li><code>require_once()</code> es pesado. Muy pesado en <acronym title="Pre-Hypertext Processing">PHP</acronym> &lt; 5.0.</li>
<li>Utiliza paths absolutos a los ficheros en los <code>include()</code> y <code>require()</code>, el SO tarda menos en resolver las rutas al fichero.</li>
<li>Si necesitas saber el <em>timestamp</em> de acceso a un script, considera utilizar <code>$_SERVER['REQUEST_TIME']</code> en lugar de <code>time()</code></li>
<li>Comprueba si puedes usar <code>strncasecmp()</code>, <code>strpbrk()</code> y <code>stripos()</code> en lugar de expresiones regulares.</li>
<li><code>str_replace()</code> es más rápido que <code>preg_replace()</code>, pero <code>strtr()</code> es hasta 4 veces más rápido que <code>str_replace()</code>.</li>
<li>Si la función, como la función de reemplazo de cadenas, acepta dos arrays y un carácter como argumentos, y tu lista de argumentos no es muy larga, considera escribir varias sentencias de reemplazo redundantes, pasando un carácter cada vez, en lugar de una linea de código que acepte arrays como búsqueda y reemplazo.</li>
<li>La supresión de errores con <code>@</code> es bastante ineficiente a la par que desaconsejable.</li>
<li><code>eval()</code> is evil (y además horrorosamente lento).</li>
<li><code>$row['id']</code> es hasta 7 veces más rápido que <code>$row[id]</code></li>
<li>Si una variable de clase es constante, utiliza <code>const</code>.</li>
<li>Los mensajes de error son ineficientes, utilizalos sólo cuando sea necesario.</li>
<li>No uses funciones dentro de los bucles, como <code>for ($x=0; $x &lt; count($array); $x++)</code>. La función <code>count()</code> se ejecuta cada vez que se repita el bucle.</li>
<li>Incrementar una variable local en un método es lo más rápido. Casi lo mismo que llamar a una variable local en una función.</li>
<li>Incrementar una variable global es dos veces más lento que hacerlo con una variable local.</li>
<li>Incrementar una propiedad de un objeto (por ejemplo <code>$this-&gt;prop++</code>) es 3 veces más lento que hacerlo sobre una variable local.</li>
<li>Incrementar una variable indefinida es hasta 10 veces más lento que hacerlo en una ya inicializada.</li>
<li>Declarar una variable global sin utilizarla también enlentece la ejecución. <acronym title="Pre-Hypertext Processing">PHP</acronym> comprueba si existe.</li>
<li>La cantidad de métodos definidos en una clase no afecta al rendimiento.</li>
<li>Los métodos de la clase concreta se ejecutan más rápidos que los de la clase base.</li>
<li><code>$localvar++</code> es hasta 15 veces más rápido que <code>function inc(){ $localvar++; }</code>.</li>
<li>Las cadenas encerradas entre comillas simples son más rápidas que las que lo están con comillas dobles porque <acronym title="Pre-Hypertext Processing">PHP</acronym> no expande las variables que puedan contener. Si usas <acronym title="Pre-Hypertext Processing">PHP</acronym> 5+, la diferencia es mínima.</li>
<li>Cuando se aplica <code>echo</code> a una lista de cadenas por argumento, es más rápido separarlas con una coma (,) en lugar del operador de concatenación (.). Esto sólo funciona con <code>echo</code> por ser una construcción del lenguaje y no una función.</li>
<li>Un script <acronym title="Pre-Hypertext Processing">PHP</acronym> es servido por Apache entre 2 y 10 veces más lento que una página estática. Cachea resultados cuando sea posible.</li>
<li>Los scripts <acronym title="Pre-Hypertext Processing">PHP</acronym> se “compilan” cada vez que son ejecutados a menos que se guarde el código objeto en un cache. Las diferentes herramientas de compilación de <acronym title="Pre-Hypertext Processing">PHP</acronym> incrementan el rendimiento hasta un 100%.</li>
<li>Puestos a cachear, Memcached es mucho más rápido y versátil que un cache a disco. APC también da buen resultado pero es menos escalable.</li>
<li>Usa <code>ip2long()</code> y <code>long2ip()</code> para almacenar direcciones <acronym title="Internet Protocol">IP</acronym> como números en lugar de como cadenas. Reduce el espaco en un factor de 4 y los cálculos de rango, máscara y ordenaciones son más sencillos y rápidos.</li>
<li>Usa la extensión <acronym title="Simple Object Access Protocol">SOAP</acronym> nativa en lugar de NuSOAP.</li>
<li>Valida las direcciones de correo electrónico con <code>checkdnsrr()</code>.</li>
<li><code>php_filter()</code> mejor y más rápido que tu sistema <em>home made</em> de validación.</li>
<li>Las funciones <code>mysql_*</code> son más lentas que <code>mysqli_*</code>, pero no tan eficientes como el driver <code>mysqlnd</code> para PDO (disponible en el inminente <acronym title="Pre-Hypertext Processing">PHP</acronym> 5.3)</li>
<li>Usa sentencias preparadas, en lugar de concatenar las consultas a mano, para mejorar el rendimiento y frenar significativamente las <acronym title="Structured Query Language">SQL</acronym>-Injections. ( y <a href="http://en.wikipedia.org/wiki/Matt_Mullenweg">Matt</a> puede decir misa, hacedme caso a mi )</li>
<li>No reinventes la rueda, mira a ver si puedes aprovechar algo de PEAR, PECL, SourceForge, CakePHP, CodeIgniter, Zend Framework, …</li>
<li>Utiliza <code>highlight_file()</code> para postear código formateado y bonito en los foros (por favor!!).</li>
<li>Si guardas un objeto o array serializado en la base de datos, considera usar <code>gzcompress()</code> y  <code>gzuncompress()</code> para ahorrar espacio. GZip puede reducir el tamaño de un texto plano hasta en un 90%.</li>
<li>El operador ternario no es más rápido que un <code>if-else</code>.</li>
<li><code>empty()</code> es más rápido que <code>$var == ''</code>, pero es más rápido el operador identidad <code>$var === ''</code>. En general la identidad es más rápida en cualquier situación.</li>
<li><code>do-while</code> es más rápido que <code>while</code>, pero más lento que <code>for</code>. Lo primero a optimizar de un programa son los bucles ( un viejo truco de Algoritmia y Arquitectura de computadores <img src="http://quarkblog.org/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /> )</li>
<li>Si necesitas determinar si una cadena tiene un cierto tamaño, es más rápido utilizar la construcción del lenguaje <code>!isset($str{5})</code> que la función <code>strlen($str) &lt; 5</code></li>
<li>el preincremento <code>++$i</code> es más rápido que el postincremento <code>$i++</code> debido a interioridades del interprete de Zend, de echo es una de las optimizaciones a nivel de OPCODE más utilizadas por los compiladores de <acronym title="Pre-Hypertext Processing">PHP</acronym>.</li>
<li>Usa <code>preg_*</code> en lugar de <code>ereg_*</code>, está a punto de desaparecer y es mucho más lento.</li>
<li>Usa direcciones <acronym title="Internet Protocol">IP</acronym> en lugar de nombres de dominio.</li>
<li>El manejador de flujos <code>ob_start()</code> puede aumentar el rendimiento hasta en un 25%.</li>
<li>El paso de argumentos por referencia en <acronym title="Pre-Hypertext Processing">PHP</acronym> no es igual al paso de una referencia en C mediante un puntero. En <acronym title="Pre-Hypertext Processing">PHP</acronym> una referencia sirve para acceder a una variable mediante dos nombres distintos (nombre de variable y valor de la variable son cosas distintas en <acronym title="Pre-Hypertext Processing">PHP</acronym>). Por tanto pasar arrays por referencia como en C, en realidad, es más lento que hacerlo por valor. En <acronym title="Pre-Hypertext Processing">PHP</acronym> 5+ los objetos se pasan explícitamente por referencia.</li>
<li>Un uso apropiado de las referencias como alias de nombre de variable:
<p class="dean_ch">&nbsp;</p>
<ol>
<li class="li1">
<p class="de1">&nbsp;</p>
</li>
<li class="li1">
<p class="de1"><span class="re0">$a</span><span class="br0">[</span><span class="st0">‘b’</span><span class="br0">]</span><span class="br0">[</span><span class="st0">‘c’</span><span class="br0">]</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">(</span><span class="br0">)</span>;</p>
</li>
<li class="li1">
<p class="de1"><span class="co1">// 2 accesos por iteración a la tabla hash </span></p>
</li>
<li class="li1">
<p class="de1"><span class="co1">// donde <acronym title="Pre-Hypertext Processing">PHP</acronym> almacena las variables</span></p>
</li>
<li class="li2">
<p class="de2"><span class="kw1">for</span><span class="br0">(</span><span class="re0">$i</span> = <span class="nu0">0</span>; <span class="re0">$i</span> &lt; <span class="nu0">5</span>; <span class="re0">$i</span>++<span class="br0">)</span></p>
</li>
<li class="li1">
<p class="de1">        <span class="re0">$a</span><span class="br0">[</span><span class="st0">‘b’</span><span class="br0">]</span><span class="br0">[</span><span class="st0">‘c’</span><span class="br0">]</span><span class="br0">[</span><span class="re0">$i</span><span class="br0">]</span> = <span class="re0">$i</span>;</p>
</li>
<li class="li1">
<p class="de1">&nbsp;</p>
</li>
<li class="li1">
<p class="de1">&nbsp;</p>
</li>
<li class="li1">
<p class="de1"><span class="co1">// con un alias por referencia es mas rápido</span></p>
</li>
<li class="li2">
<p class="de2"><span class="re0">$ref</span> =&amp; <span class="re0">$a</span><span class="br0">[</span><span class="st0">‘b’</span><span class="br0">]</span><span class="br0">[</span><span class="st0">‘c’</span><span class="br0">]</span>;</p>
</li>
<li class="li1">
<p class="de1"><span class="kw1">for</span><span class="br0">(</span><span class="re0">$i</span> = <span class="nu0">0</span>; <span class="re0">$i</span> &lt; <span class="nu0">5</span>; <span class="re0">$i</span>++<span class="br0">)</span></p>
</li>
<li class="li1">
<p class="de1">        <span class="re0">$ref</span><span class="br0">[</span><span class="re0">$i</span><span class="br0">]</span> = <span class="re0">$i</span>;</p>
</li>
<li class="li1">
<p class="de1">&nbsp;</p>
</li>
</ol>
</li>
<li>La manera más rápida a este lado de Rio Grande para detectar si el SO es Unix o no es utilizar la constante <code>DIRECTORY_SEPARATOR</code>.</li>
<li>La manera más rápida de concatenar muchas cadenas de poco tamaño es abrir un flujo de salida con <code>ob_start()</code> y hacer un <code>echo</code> de todas ellas para despues recoger la cadena final con <code>ob_get_contents()</code>. Esto es así porque en el tratamiento de cadenas el factor limitante es la reserva de memoria y al crear un flujo se reservan de golpe 40K, aumentando en pedazos de 10K cuando hace falta más.</li>
<li>En las sentencias <code>switch()</code> ordena los casos empezando por los más frecuentes.</li>
<li>Procesar ficheros <acronym title="eXtensible Markup Language">XML</acronym> con expresiones regulares es más rápido que hacerlo con SAX o <acronym title="Document Object Model">DOM</acronym>. Atención: el uso de expresiones regulares para procesar XMl puede acortar significativamente su esperanza de vida.</li>
<li>Eliminar los comentarios o escribir en una sola linea no hace que se ejecute más rápido, lo único que consigues es que los demás te odien a muerte.</li>
<li>Usar objetos no hace que todo sea más rápido, más bien al contrario, pero utilizarlos mejora otras muchas cosas.</li>
<li>Cuanto menos (x)<acronym title="HyperText Markup Language">HTML</acronym> en la salida del script, más rápido renderiza la pagina.</li>
<li>Utiliza constantes en lugar de funciones: <code>PHP_VERSION</code> vs. <code>php_version()</code>, <code>PHP_OS</code> vs. <code>php_uname()</code>, <code>PHP_SAPI</code> vs. <code>php_sapi_name()</code>, etc.</li>
<li>Si todo lo demás falla … escribe una extensión en C.</li>
</ol>
<p>Conclusión: no prestes mucha atención a todo esto; dependiendo de la carga y la máquina, algunas optimizaciones apenas van a ser apreciables por el usuario final. Sólo con cambiar los <code>while</code> por <code>do-while</code> no va a hacer que tu programa corra como el viento, cuanto mejor conozcas tu stack de software y los entresijos de la aplicación más profundas serán las mejoras que puedas aplicar.</p>]]></content:encoded>
			<wfw:commentRss>http://www.todosoluciones.es/2008/01/14/60-optimizaciones-para-tus-programas-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mostrar código PHP de un archivo con colores resaltados</title>
		<link>http://www.todosoluciones.es/2007/12/10/mostrar-codigo-php-de-un-archivo-con-colores-resaltados/</link>
		<comments>http://www.todosoluciones.es/2007/12/10/mostrar-codigo-php-de-un-archivo-con-colores-resaltados/#comments</comments>
		<pubDate>Mon, 10 Dec 2007 02:37:44 +0000</pubDate>
		<dc:creator>ArKKaN</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://todosoluciones.es/informatica/web-informatica/mostrar-codigo-php-de-un-archivo-con-colores-resaltados/</guid>
		<description><![CDATA[Función de PHP para mostrar un archivo con código PHP con formato y colores resaltados para una lectura más cómoda.
Vamos  con un pequeño truco que nos ofrece una de las funciones de PHP, que  sirve para mostrar código resaltado con colores. Es una función útil  para mostrar en la salida un trozo [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Función de <acronym title="Pre-Hypertext Processing">PHP</acronym> para mostrar un archivo con código <acronym title="Pre-Hypertext Processing">PHP</acronym> con formato y colores resaltados para una lectura más cómoda.</strong></p>
<p>Vamos  con un pequeño truco que nos ofrece una de las funciones de <acronym title="Pre-Hypertext Processing">PHP</acronym>, que  sirve para mostrar código resaltado con colores. Es una función útil  para mostrar en la salida un trozo de código <acronym title="Pre-Hypertext Processing">PHP</acronym>, pero con distintos  colores y saltos de línea, lo que facilita su lectura.</p>
<p><acronym title="Pre-Hypertext Processing">PHP</acronym> incorpora unos patrones para resaltar texto con código <acronym title="Pre-Hypertext Processing">PHP</acronym>,  en distintos colores. Este se puede invocar con la función  highlight_file(), que recibe dos parámetros:</p>
<p>- Primero, el nombre del archivo que queremos que muestre su código resaltado<br />
- Segundo, un parámetro opcional que es un boleano, con valor por  defecto FALSE. El valor verdadero o TRUE significa que queremos que nos  devuelva un string con el código resaltado. El valor falso o FALSE, que  es el comportamiento predeterminado, sirve para que nos muestre en la  salida el código <acronym title="Pre-Hypertext Processing">PHP</acronym> formateado y con colores.<span id="more-43"></span></p>
<p>Esta función puede ser útil en páginas de tutoriales de <acronym title="Pre-Hypertext Processing">PHP</acronym>,  para mostrar código resaltado con colores sin tener que complicarnos la  vida, así como en la documentación de programas realizados con <acronym title="Pre-Hypertext Processing">PHP</acronym>.</p>
<p>Para ver la función en marcha es muy sencillo. Simplemente tenemos que llamarla así:</p>
<p><strong>Código:</strong></p>
<pre class="codigo">
&lt;?
highlight_file ("fichero.php");
?&gt;</pre>
<p>Se supone que "fichero.php" estará en el mismo directorio donde está el archivo <acronym title="Pre-Hypertext Processing">PHP</acronym> con el que estamos trabajando.</p>
<p>Si fichero.php tuviera un código como este, resaltaria el código php:</p>
<p><strong>Código:</strong></p>
<pre class="codigo">

&lt;html&gt;
  &lt;head&gt;
     &lt;title&gt;Probando&lt;/title&gt;
  &lt;/head&gt;

   &lt;body&gt;

      &lt;h1&gt;Hola amigos&lt;/h1&gt;

      &lt;p&gt;Esto es una &lt;b&gt;prueba&lt;/b&gt; para ver como funciona&lt;/p&gt;

   &lt;?

   function tiene_acentos($cadena){

   $buscar = "áéíóúüÁÉÍÓÚÜñÑ";

   for ($i=0; $i&lt;strlen($cadena); $i++){

      if (strpos($buscar, substr($cadena,$i,1))!==false)

         return true;

      }

      return false;

   }

   ?&gt;

   &lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Fuente: <a href="http://desarrolloweb.com/articulos/codigo-php-resaltado.html" title="Dessarolloweb.com" target="_blank">http://desarrolloweb.com/articulos/codigo-php-resaltado.html</a> Copyleft</p>]]></content:encoded>
			<wfw:commentRss>http://www.todosoluciones.es/2007/12/10/mostrar-codigo-php-de-un-archivo-con-colores-resaltados/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutorial Básico para control de Sesiones en PHP</title>
		<link>http://www.todosoluciones.es/2007/12/10/tutorial-basico-para-control-de-sesiones-en-php/</link>
		<comments>http://www.todosoluciones.es/2007/12/10/tutorial-basico-para-control-de-sesiones-en-php/#comments</comments>
		<pubDate>Mon, 10 Dec 2007 01:54:08 +0000</pubDate>
		<dc:creator>ArKKaN</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://todosoluciones.es/noticias/tutorial-basico-para-control-de-sesiones-en-php/</guid>
		<description><![CDATA[Veamos un sencillo ejemplo de uso de sesiones para ilustrar a los usuarios más inexpertos el manejo de sesiones con PHP en sus procesos más básicos, como son la inicialización de sesiones, comprobar si existen variables de sesión, crearlas y modificarlas.
En este ejemplo vamos a hacer un sistema para llevar la cuenta de las páginas [...]]]></description>
			<content:encoded><![CDATA[<p>Veamos un sencillo ejemplo de uso de sesiones para ilustrar a los usuarios más inexpertos el manejo de sesiones con <acronym title="Pre-Hypertext Processing">PHP</acronym> en sus procesos más básicos, como son la inicialización de sesiones, comprobar si existen variables de sesión, crearlas y modificarlas.</p>
<p>En este ejemplo vamos a hacer un sistema para llevar la cuenta de las páginas que ha visto un visitante. Es decir, si entra a una página del sitio por primera vez, contamos que ha visto una página, luego con cada página adicional que visite, seguiremos acumulando 1 en la cuenta de páginas vistas dentro del sitio. Del mismo modo, si se recarga una página o se vuelve a la misma página que ya se estuvo, también haremos que se acumule 1 en su cuenta.</p>
<p><span id="more-40"></span>Lo que tendremos que hacer en este ejercicio es lo siguiente:</p>
<ul>
<li>Inicializar la sesión</li>
<li>Si no tenemos el contador de páginas creado, lo inicializamos al valor 1</li>
<li>Si tenemos el contador de páginas creado, lo incrementamos en 1.</li>
</ul>
<p><strong>Código:</strong></p>
<pre class="codigo">
&lt;?php

if (!isset($_SESSION["cuenta_paginas"])){
   $_SESSION["cuenta_paginas"] = 1;
} else {
   $_SESSION["cuenta_paginas"]++;
}

echo "Desde que entraste has visto " . $_SESSION["cuenta_paginas"] . " páginas";
?&gt;
&lt;a href="otracuenta.php"&gt;Ver otra página&lt;/a&gt;</pre>
<p>Como se ha podido ver, lo primero que debemos hacer es inicializar la sesión con session_start().</p>
<p>Luego de inicializar la sesión podemos trabajar con variables de sesión en cualquier lugar del código <acronym title="Pre-Hypertext Processing">PHP</acronym>. Nosotros vamos a crear y utilizar una variable de sesión para llevar la cuenta del número de páginas que hemos visto.</p>
<p><strong>Código:</strong></p>
<pre class="codigo">
$_SESSION["cuenta_paginas"]</pre>
<p>Para ver si una variable de sesión ha sido creada podemos utilizar la función isset() pasándole como parámetro la variable que deseamos saber si ha sido creada. Si no fue creada anteriormente, simplemente la creamos (inicializando su valor a 1). Si fue creada, pues que tenemos que incrementar en 1. Eso se consigue con este código:</p>
<p><strong>Código:</strong></p>
<pre class="codigo">
if (!isset($_SESSION["cuenta_paginas"])){
   $_SESSION["cuenta_paginas"] = 1;
} else {
   $_SESSION["cuenta_paginas"]++;
}</pre>
<p>Eso es todo! Ahora lo que se supone que tenemos son otras páginas en el mismo sitio que también tienen que incrementar en 1 el contador de páginas vistas por ese usuario en esa sesión.</p>
<p>Eso lo podríamos hacer con el mismo trozo de código, como el que hemos visto antes, colocado al principio del archivo <acronym title="Pre-Hypertext Processing">PHP</acronym>.</p>
<p><strong>Código:</strong></p>
<pre class="codigo">
if (!isset($_SESSION["cuenta_paginas"])){
   $_SESSION["cuenta_paginas"] = 1;
} else {
   $_SESSION["cuenta_paginas"]++;
}

?&gt;</pre>
<p>Luego, en cualquier momento, si deseamos mostrar el número de páginas vistas en un momento dado, tendríamos que hacer algo como esto:</p>
<p><strong>Código:</strong></p>
<pre class="codigo">
&lt;?

   echo "Has visto " . $_SESSION["cuenta_paginas"] . " páginas, contando actualizaciones de paginas";

?&gt;</pre>
<p>Podemos <a href="http://www.desarrolloweb.com/articulos/ejemplos/tallerphp/contar_paginas_vistas_sesion.php" target="_blank">ver el ejemplo relatado en funcionamiento</a>.</p>
<p><strong>Fuente</strong>: <a href="http://www.desarrolloweb.com/articulos/235.php">http://www.desarrolloweb.com/articulos/235.php</a> Copyleft</p>]]></content:encoded>
			<wfw:commentRss>http://www.todosoluciones.es/2007/12/10/tutorial-basico-para-control-de-sesiones-en-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Redimensionar imagenes desde código con php</title>
		<link>http://www.todosoluciones.es/2007/11/27/redimensionar-imagenes-desde-codigo-con-php/</link>
		<comments>http://www.todosoluciones.es/2007/11/27/redimensionar-imagenes-desde-codigo-con-php/#comments</comments>
		<pubDate>Tue, 27 Nov 2007 02:02:56 +0000</pubDate>
		<dc:creator>ArKKaN</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://todosoluciones.es/noticias/redimensionar-imagenes-desde-codigo-con-php/</guid>
		<description><![CDATA[Más de uno habrá tenido problemas con las imagenes, teniendo que recortarlas, porque no tiene el tamaño deseado, y comprimirlas porque son demasiado pesadas y relentizan la visualización de nuestra página web.
Algunos códigos, lo que hacen es crear una segunda imagen, mas pequeña, lo cual ayuda a mejorar la carga de la web, pero aumenta [...]]]></description>
			<content:encoded><![CDATA[<p>Más de uno habrá tenido problemas con las imagenes, teniendo que recortarlas, porque no tiene el tamaño deseado, y comprimirlas porque son demasiado pesadas y relentizan la visualización de nuestra página web.</p>
<p>Algunos códigos, lo que hacen es crear una segunda imagen, mas pequeña, lo cual ayuda a mejorar la carga de la web, pero aumenta el espacio que ocupara en el servidor.</p>
<p>Aquí os traigo un código, que nos ayudara a tratar este tema, el cual no crea ninguna segunda copia de nuestra imagen, este código, hace que el servidor redimensione nuestra imagen, creando una nueva en memoria, que sera la que nos muestre en la web, con esto conseguimos una navegación rápida porque nos mostrara la imagen al tamaño que elijamos y el espacio utilizado sera el mismo porque la imagen la creara en la memoria.<span id="more-24"></span></p>
<p><strong>Código:</strong></p>
<pre class="codigo">
&lt;?php   

  $anchura=basename($_GET['ancho']);
  $hmax=basename($_GET['alto']);
  $nombre=basename($_GET['imagen']);
  $datos = getimagesize($nombre);
  if($datos[2]==1){$img = @imagecreatefromgif($nombre);}
  if($datos[2]==2){$img = @imagecreatefromjpeg($nombre);}
  if($datos[2]==3){$img = @imagecreatefrompng($nombre);}
  $ratio = ($datos[0] / $anchura);
  $altura = ($datos[1] / $ratio);
  if($altura&gt;$hmax){$anchura2=$hmax*$anchura/$altura;$altura=$hmax;$anchura=$anchura2;}
  $thumb = imagecreatetruecolor($anchura,$altura);
  imagecopyresampled($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $datos[0], $datos[1]);
  if($datos[2]==1){header("Content-type: image/gif"); imagegif($thumb);}
  if($datos[2]==2){header("Content-type: image/jpeg");imagejpeg($thumb);}
  if($datos[2]==3){header("Content-type: image/png");imagepng($thumb); }
  imagedestroy($thumb);     

?&gt;</pre>
<p>Guardaremos el código en un archivo que llamaremos redimensionar.php y lo pondremos en la carpeta donde vamos a coger las imagenes que queremos redimensionar.</p>
<p>Supongamos que las imagenes se encuentran en una carpeta llamada "img" que esta en el directorio raíz, una vez guardado el archivo redimensionar.php en la carpeta "img" junto a las imagenes, crearemos nuestra pagina php y donde queramos mostar la imagen pondremos lo siguente:</p>
<p><strong>Código:</strong></p>
<pre class="codigo">
&lt;?php
	$Nombre = "nombre.jpg";
	$Ancho = "150";
	$Alto = "300";
	$Titulo = "Titulo";   

   echo "&lt;img src='img/" . "redimensionar.php?imagen=". $Nombre ."&amp;ancho=". $Ancho ."&amp;alto=". $Alto '." title='". $Titulo ."' &gt;";
?&gt;</pre>
<p>El nombre de la imagen, el ancho y el alto, son los datos que se proporcionan, para redimensionar la imagen, esta la creara proporcionalmente, no creara la imagen con las medidas de altura y anchura indicadas, sino que introducirá la foto de forma que nunca salga de esas medidas, por ejemplo:</p>
<p>Una foto de 800x600 le indicamos que queremos que el alto sea de 600 y el ancho 600, el resultado sera una imagen de 600x450 y si la foto es de 600x800 nos dara una foto de 450x600.</p>]]></content:encoded>
			<wfw:commentRss>http://www.todosoluciones.es/2007/11/27/redimensionar-imagenes-desde-codigo-con-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Básico</title>
		<link>http://www.todosoluciones.es/2007/11/27/php-basico/</link>
		<comments>http://www.todosoluciones.es/2007/11/27/php-basico/#comments</comments>
		<pubDate>Tue, 27 Nov 2007 00:18:39 +0000</pubDate>
		<dc:creator>ArKKaN</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://todosoluciones.es/noticias/php-basico/</guid>
		<description><![CDATA[PHP no es más que códigos de programa incluidos dentro de una página Web y que se ejecuta desde el servidor el cual deberá aportar soporte para interpretar este lenguaje, enviando así al navegador el resultado del programa procesado. Expliquemos estos con este ejemplo:
Dentro de una página Web hecha con HTML le incluimos el siguiente [...]]]></description>
			<content:encoded><![CDATA[<p><acronym title="Pre-Hypertext Processing">PHP</acronym> no es más que códigos de programa incluidos dentro de una página Web y que se ejecuta desde el servidor el cual deberá aportar soporte para interpretar este lenguaje, enviando así al navegador el resultado del programa procesado. Expliquemos estos con este ejemplo:</p>
<p>Dentro de una página Web hecha con <acronym title="HyperText Markup Language">HTML</acronym> le incluimos el siguiente SCRIPT:</p>
<p><strong>Código:</strong></p>
<pre class="codigo">
&lt;?php    

   echo "Hola Mundo";    

?&gt;</pre>
<p>Esto enviará como resultado al navegador lo siguiente:</p>
<p>Hola Mundo<span id="more-16"></span></p>
<p>Lo increíble de esto es que jamás mostrará el código del programa... sólo enviará la respuesta del programa después de procesada.</p>
<p>Creo que ya comprendes entonces que es lo que hace <acronym title="Pre-Hypertext Processing">PHP</acronym>, si hacemos volar la imaginación te darás cuenta la amplia cantidad de aplicaciones que le podemos dar a este poder... manipular fechas y tiempos, manipular bases de datos, realizar cálculos matemáticos, personalizar las presentaciones según lo deseemos, etc.</p>
<p>Por lo pronto, comencemos con la sintaxis de este lenguaje y para ello analicemos el siguiente SCRIPT:</p>
<p><strong>Código:</strong></p>
<pre class="codigo">
&lt;?php    

   $MYVAR = "1234";    

   $myvar = "4321";   echo $MYVAR. "";    

   echo $myvar. "";    

?&gt;</pre>
<p>Esto dará como resultado:</p>
<p>1234<br />
4321</p>
<p>Lo primero que vemos en este SCRIPT es que las instrucciones de <acronym title="Pre-Hypertext Processing">PHP</acronym> comienzan con <!--p y terminan con-->por lo que incluso se pueden crear varios conjuntos de instrucciones dentro de una misma pagina Web. Lo siguiente que observamos es que las variables comienzan con el símbolo $ y que se diferencian las mayúsculas de las minúsculas, es decir, son sensible case. Las etiquetas<br />
están concatenadas por un punto "." con lo que el navegador hará una salto de línea, y por último notarás que todas las lineas de comandos terminan con punto y coma ";" , esto es muy importante de no olvidar.</p>
<p>Pero veamos ahora un ejemplo más complejo aún:<br />
<strong>Código:</strong></p>
<pre class="codigo">
&lt;?php    

   $SUM1 = 12;    

   $SUM2 = 4;    

   $TOT = $SUM1 + $SUM2;    

   echo "La sumatoria de " . $SUM1. " más " .$SUM2. " es igual a " .$TOT";    

   // Este programa realiza la suma de 12 + 4 y lo presenta en pantalla    

?&gt;</pre>
<p>Creo que esto no necesita mucha explicación, como es fácil ver lo que este pequeño programa hace es: declarar el contenido de la primera variable, declarar el contenido de la segunda variable, realizar la suma de ambas variables y asignarla a una nueva variable, y por último realiza la salida del resultado pero incluyendo texto para hacer más fácil la interpretación del mismo. Veremos como resultado en pantalla:</p>
<p>La sumatoria de 12 más 4 es igual a 16</p>
<p>Notemos que para poder hacer la mezcla de variables con texto hemos recurrido a la concatenación y esto se hace interponiendo un punto ".". Podemos observar también que hay un comentario dentro del SCRIPT, este comentario no afectará en nada al programa pero es importante acostumbrar usarlos para mantener organizados nuestro programa y no confundirnos en un programa más extenso.</p>
<p>Existen varias formas de incluir comentarios y estas son:</p>
<p><strong>Código:</strong></p>
<pre class="codigo">
&lt;?php    

   // Esto da comienzo a una línea con comentarios.    

   // Esto es un comentario   /* Esto da comienzo a un grupo de líneas de comentario, se cierra con */    

   /* Esto es un comentario    

       que incluye varias líneas.    

       Es por eso que uso este tipo de inclusión. */    

?&gt;</pre>
<p>Con esto hemos explicado brevemente como se pueden manipular y mostrar datos desde php de forma facil y sencilla, mas adelante pondremos algun ejemplo de como realizar conexiones a bases de datos MySQL.</p>]]></content:encoded>
			<wfw:commentRss>http://www.todosoluciones.es/2007/11/27/php-basico/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
 
