<?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>Craftyman Blog &#187; PHP</title>
	<atom:link href="http://craftyman.net/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://craftyman.net</link>
	<description>Redes Sociales, WordPress, Desarrollo Web, SEO</description>
	<lastBuildDate>Wed, 01 Feb 2012 00:57:30 +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>El mejor Framework para PHP</title>
		<link>http://craftyman.net/mejor-framework-php/</link>
		<comments>http://craftyman.net/mejor-framework-php/#comments</comments>
		<pubDate>Mon, 12 Sep 2011 00:01:57 +0000</pubDate>
		<dc:creator>craftyman</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Frameworks PHP]]></category>
		<category><![CDATA[MVC en PHP]]></category>

		<guid isPermaLink="false">http://craftyman.net/?p=1295</guid>
		<description><![CDATA[Elige el mejor <a href="http://craftyman.net/tag/frameworks-php/">Framework para PHP</a> en base a tus necesidades o  caracteristicas que quieres sobre el Framework, el sitio <a target="_blank" href="http://www.bestwebframeworks.com/">Best Web-Frameworks</a> nos ayuda en esta tarea, pero no solo con Frameworks de  <a href="http://craftyman.net/tag/php/">PHP</a>, también tiene disponibles Frameworks de otros lenguajes de  programación como: Ruby, Perl, Java, Javascript, CSS, Python,  ColdFusion, ASP.NET.

<div style="text-align:center"><img width="600px" src="http://craftyman.net/wp-content/images/2011/bfrws.jpg" /></div>

Entre las opciones para comparar que dispone cada Framework están:

	<ul>
<li>Descripción del Framework, caracteristicas, descarga, licencia.
</li>
	<li>Soporte para PHP4 y PHP5
</li>
	<li>MVC (Model View Controller)
</li>
	<li>Modulos</li>

	<li>Object Relational Mapping (ORM)</li>

	<li>Event Driven Programming (EDP)
</li>
	<li>Autenticacion (Auth)
</li>
	<li>Cache</li>

	<li>Validadores</li>

	<li>Funciones para Ajax</li>
</ul>

<a class="example"  target="_blank" href="http://www.bestwebframeworks.com/php/">Ver Frameworks</a><p>&nbsp;</p><h3  class="related_post_title">Post Relacionados</h3><ul class="related_post"><li class="rltpost"><a href="http://craftyman.net/motor-de-busqueda-para-desarrolladores/" title="Motor de búsqueda para Desarrolladores">Motor de búsqueda para Desarrolladores</a></li><li class="rltpost"><a href="http://craftyman.net/phpanywhere-editor-php-online/" title="PHPAnyWhere: Editor PHP OnLine">PHPAnyWhere: Editor PHP OnLine</a></li><li class="rltpost"><a href="http://craftyman.net/mvc-en-php/" title="Tutorial MVC con PHP">Tutorial MVC con PHP</a></li></ul>]]></description>
		<wfw:commentRss>http://craftyman.net/mejor-framework-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Detectar errores con PHP y enviarlos por Email</title>
		<link>http://craftyman.net/errores-con-php-enviarlos-email/</link>
		<comments>http://craftyman.net/errores-con-php-enviarlos-email/#comments</comments>
		<pubDate>Wed, 05 Jan 2011 05:08:04 +0000</pubDate>
		<dc:creator>craftyman</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Scripts PHP]]></category>
		<category><![CDATA[tutoriales php]]></category>
		<category><![CDATA[videos php]]></category>

		<guid isPermaLink="false">http://craftyman.net/?p=1250</guid>
		<description><![CDATA[Si tenemos una aplicación web con <a target="_blank" href="http://craftyman.net/category/php/">PHP</a> publicada y debemos revisar constantemente si genera errores a lo largo del tiempo, para automatizar este proceso podemos recurrir al log de errores que tiene PHP, son unas funciones que se ejecutan cada vez que ocurre algún tipo de error en la aplicación, también podemos configurar el <a href="http://craftyman.net/envia-email-con-php/">envió por email</a> para enterarnos de inmediato cuando ocurren problemas.
<p>&nbsp;</p>
Este video publicado por <a target="_blank" href="http://bit.ly/fVoNOo">Nettuts+</a> explica detalladamente cómo funciona.

<object width="640" height="390"><param name="movie" value="http://www.youtube.com/v/Ar0i7rMSGm4&hl=en_US&feature=player_embedded&version=3"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/Ar0i7rMSGm4&hl=en_US&feature=player_embedded&version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="390"></embed></object>
<p>&nbsp;</p>

Este es el codigo explicado.

[php]
&lt;?php
// funcion de errores personalizado
function nettuts_error_handler($number, $message, $file, $line, $vars){
	$email = "
		&lt;p&gt;An error ($number) occurred on line
		&lt;strong&gt;$line&lt;/strong&gt; and in the &lt;strong&gt;file: $file.&lt;/strong&gt;
		&lt;p&gt; $message &lt;/p&gt;";

	$email .= "&lt;pre&gt;" . print_r($vars, 1) . "&lt;/pre&gt;";

	$headers = 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

	// enviar log de errores a un Email
	error_log($email, 1, 'you@youremail.com', $headers);

	// Si es un error demasiado critico, pararlo.
	if ( ($number !== E_NOTICE) && ($number &lt; 2048) ) {
		die("There was an error. Please try again later.");
	}
}

// declaramos cual sera la funcion que se ejecutara cuando ocurra un error
set_error_handler('nettuts_error_handler');

// realizando un error con una variable no existente
echo $somevarthatdoesnotexist;
[/php]

vía: <a target="_blank" href="http://bit.ly/fVoNOo">Nettuts+</a>
<p>&nbsp;</p><h3  class="related_post_title">Post Relacionados</h3><ul class="related_post"><li class="rltpost"><a href="http://craftyman.net/video-mejorando-el-rendimiento-en-php/" title="Video: Mejorando el Rendimiento en PHP">Video: Mejorando el Rendimiento en PHP</a></li><li class="rltpost"><a href="http://craftyman.net/forzar-descarga-de-archivos-con-php/" title="Forzar descarga de archivos con PHP">Forzar descarga de archivos con PHP</a></li><li class="rltpost"><a href="http://craftyman.net/exportar-importar-archivos-csv-php/" title="Exportar e Importar archivos CSV con PHP">Exportar e Importar archivos CSV con PHP</a></li><li class="rltpost"><a href="http://craftyman.net/numero-suscriptores-youtube-php/" title="Mostrar número suscriptores de Youtube con php">Mostrar número suscriptores de Youtube con php</a></li><li class="rltpost"><a href="http://craftyman.net/screencast-usando-php-y-flash-para-desarrollar-aplicaciones-web/" title="ScreenCast : Usando PHP y Flash para desarrollar aplicaciones Web">ScreenCast : Usando PHP y Flash para desarrollar</a></li><li class="rltpost"><a href="http://craftyman.net/screencast-netbeans-zend-framework/" title="ScreenCast: Netbeans 6.9 con soporte para Zend Framework">ScreenCast: Netbeans 6.9 con soporte para Zend F</a></li><li class="rltpost"><a href="http://craftyman.net/video-agregando-rss-a-nuestra-web-con-simplepie/" title="Video: Agregando RSS a nuestra Web con SimplePie">Video: Agregando RSS a nuestra Web con SimplePie</a></li><li class="rltpost"><a href="http://craftyman.net/video-sistema-de-login-con-php/" title="Video: Sistema de Login con PHP">Video: Sistema de Login con PHP</a></li></ul>]]></description>
		<wfw:commentRss>http://craftyman.net/errores-con-php-enviarlos-email/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Redirecciones 301 para conservar el pagerank</title>
		<link>http://craftyman.net/redirecciones-301-para-conservar-el-pagerank/</link>
		<comments>http://craftyman.net/redirecciones-301-para-conservar-el-pagerank/#comments</comments>
		<pubDate>Tue, 02 Nov 2010 15:12:05 +0000</pubDate>
		<dc:creator>craftyman</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Redireccion 301]]></category>
		<category><![CDATA[redireccion PHP]]></category>

		<guid isPermaLink="false">http://craftyman.net/?p=1235</guid>
		<description><![CDATA[Las <a target="_blank" href="http://craftyman.net/tag/redireccion-301/">redirecciones 301</a> son conocidas también como redirecciones permanentes y es un método de las paginas web para redireccionar una antigua URL hacia otra con una estructura mas amigable tal vez.
Estas redirecciones se podrían hacer de mil maneras, por html, javascript, y redireccion por lenguajes de servidor como <a target="_blank" href="http://craftyman.net/redireccion-301-permanente-php-htaccess/">PHP</a>. Lo importante es que el motor de búsqueda interprete esto como una redirreción 301 para conservar nuestro pagerank ganado, de esta manera nuestra url nueva tendrá el mismo peso en los motores de búsqueda.

Este es un listado de scripts para redirección 301 de los mas populares lenguajes de programación, si tienes uno que no esté en la lista se agradecería mucho el aporte.

<h3>ASP</h3>

[jscript]
&lt; %@ Language=VBScript %&gt;
&lt; %
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://www.new-url.com/"
%&gt; 
[/jscript]

<h3>ASP.Net</h3>

[jscript]
&lt;script runat="server"&gt;
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location","http://www.new-url.com");
}
&lt;/script&gt; 
[/jscript]


<h3>CGI PERL</h3>

[php]
$q = new CGI;
print $q-&gt;redirect("http://www.new-url.com/");
[/php]


<h3>ColdFusion</h3>

[html]
&lt;.cfheader statuscode="301" statustext="Moved permanently"&gt;
&lt;.cfheader name="Location" value="http://www.new-url.com"&gt; 
[/html]

<h3>htaccess</h3>

[jscript]
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L] 
[/jscript]


<h3>Java</h3>

[jscript]
&lt; %
response.setStatus(301);
response.setHeader( "Location", "http://www.new-url.com/" );
response.setHeader( "Connection", "close" );
%&gt; 
[/jscript]

<h3>PHP</h3>

[php]
&lt; ?
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://www.new-url.com" );
?&gt; 
[/php]

<h3>Ruby on Rails</h3>

[ruby]
def old_action
headers["Status"] = "301 Moved Permanently"
redirect_to "http://www.new-url.com/"
end
[/ruby]

vía: <a target="_blank" href="http://www.webconfs.com/how-to-redirect-a-webpage.php">Webconf</a><p>&nbsp;</p><h3  class="related_post_title">Post Relacionados</h3><ul class="related_post"><li class="rltpost"><a href="http://craftyman.net/redireccion-301-permanente-php-htaccess/" title="Redirección permanente 301 con PHP y htaccess">Redirección permanente 301 con PHP y htaccess</a></li></ul>]]></description>
		<wfw:commentRss>http://craftyman.net/redirecciones-301-para-conservar-el-pagerank/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Exportar e Importar archivos CSV con PHP</title>
		<link>http://craftyman.net/exportar-importar-archivos-csv-php/</link>
		<comments>http://craftyman.net/exportar-importar-archivos-csv-php/#comments</comments>
		<pubDate>Mon, 25 Oct 2010 18:59:45 +0000</pubDate>
		<dc:creator>craftyman</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Exportar CSV PHP]]></category>
		<category><![CDATA[Importar CSV PHP]]></category>
		<category><![CDATA[Scripts PHP]]></category>

		<guid isPermaLink="false">http://craftyman.net/?p=1231</guid>
		<description><![CDATA[<a target="_blank" href="http://craftyman.net/exportar-a-excel-con-php/">Exportar datos desde PHP</a> en un archivo CSV es una manera de ahorrar espacio al hacer reportes de registros, otra ventaja es que serán más fácil de leer al querer importarlo desde otra aplicación si fuera necesario.
Este script es un ejemplo de como generar un archivo CSV y guardar los registros de una base de datos dentro del archivo.

<div style="text-align:center"><img src="http://craftyman.net/wp-content/images/php_vers_excel.jpg" /></div>

[php]
$f = fopen("reporte.csv","w");
$sep = ","; //separador

while($reg = mysql_fetch_array($datos) ) {

$linea = $reg['id'].$sep.$reg['nombre'].$sep.$reg['email']."\n"; 
fwrite($f,$linea);

}
fclose($f);
[/php]


Si tenemos la necesidad de leer un archivo CVS desde alguna <a target="_blank" href="http://craftyman.net/category/php/">aplicación PHP</a> podemos hacerlo con la función <a target="_blank" href="http://bit.ly/aoMn8a">fgetcsv</a>

[php]
$fp = fopen ( "reporte.csv" , "r" );
while (( $data = fgetcsv ($fp,1000,",")) !== FALSE ){

	$i = 0;
    foreach($data as $row) {

        echo "Campo $i: $row&lt;br&gt;n"; 
        // Muestra todos los campos de la fila actual
        $i++ ;

    }

    echo "&lt;br&gt;&lt;br&gt;nn";

}
fclose ( $fp );
[/php]

También te puede interesar <a target="_blank" href="http://craftyman.net/exportar-a-excel-con-php/">Exportar archivos en Excel utilizando PHP.</a>
<p>&nbsp;</p><h3  class="related_post_title">Post Relacionados</h3><ul class="related_post"><li class="rltpost"><a href="http://craftyman.net/errores-con-php-enviarlos-email/" title="Detectar errores con PHP y enviarlos por Email">Detectar errores con PHP y enviarlos por Email</a></li><li class="rltpost"><a href="http://craftyman.net/exportar-consultas-sql-a-csv-con-mysql/" title="Exportar consultas SQL a CSV con MySQL">Exportar consultas SQL a CSV con MySQL</a></li><li class="rltpost"><a href="http://craftyman.net/numero-suscriptores-youtube-php/" title="Mostrar número suscriptores de Youtube con php">Mostrar número suscriptores de Youtube con php</a></li><li class="rltpost"><a href="http://craftyman.net/forzar-descarga-de-archivos-con-php/" title="Forzar descarga de archivos con PHP">Forzar descarga de archivos con PHP</a></li><li class="rltpost"><a href="http://craftyman.net/generar-thumbnails-con-php/" title="Generar Thumbnails con PHP">Generar Thumbnails con PHP</a></li></ul>]]></description>
		<wfw:commentRss>http://craftyman.net/exportar-importar-archivos-csv-php/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Buscador Twitter con PHP</title>
		<link>http://craftyman.net/buscador-twitter-con-php/</link>
		<comments>http://craftyman.net/buscador-twitter-con-php/#comments</comments>
		<pubDate>Sat, 16 Oct 2010 05:00:40 +0000</pubDate>
		<dc:creator>craftyman</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://craftyman.net/?p=1229</guid>
		<description><![CDATA[Un buscador de <a target="_blank" href="http://craftyman.net/tag/twitter/">Twitter </a> realizado en <a target="_blank" href="http://craftyman.net/category/php/">PHP</a>, esta sencilla función nos puede simular una real búsqueda en Twitter, podemos pasar como parámetro el criterio de búsqueda que deseamos y el numero de tweets que queremos obtener, también el numero de pagina, es simple y potente, pongo algunos ejemplos con los cuales podemos aprovecharlo mejor, puede servir para mucho más dependiendo de las necesidades de cada uno.

<div style="text-align:center"><img src="http://craftyman.net/wp-content/images/tsearch.jpg" /></div>

La siguiente función nos devuelve los datos en formato <a target="_blank" href="http://craftyman.net/introduccion-a-json/">json</a>.

[php]
function searchTwitter($query,$rpp=10,$page=1){

    $url="http://search.twitter.com/search.json?q=";
    $q=urlencode(utf8_encode($query));
    $params="&page=$page&rpp=$rpp";
	
    $result = file_get_contents($url.$q.$params);    
    
    $array =  json_decode($result);
    
    return $array;
    
}
[/php]

Estas son algunas búsquedas comunes

[php]
// de un usuario especifico
print_r(searchTwitter('from:craftyman'));

//de un hashtag especifico
$rs = searchTwitter('#SEO');

//cualquiera de las dos palabras
$rs = searchTwitter('#php OR #mysql');

//buscar una palabra que no contenga otra
$rs = searchTwitter('javascript -jquery');

//referenciando a un usuario
$rs = searchTwitter('@craftyman');

[/php]


Ahora recorreremos el array de objetos que nos devuelve la función.

[php]
foreach($rs as $k=>$o){

echo $o-&gt;profile_image_url .'&lt;br /&gt;';
echo $o-&gt;created_at .'&lt;br /&gt;';
echo $o-&gt;from_user .'&lt;br /&gt;';
echo $o-&gt;text .'&lt;br /&gt;';
echo $o-&gt;id .'&lt;br /&gt;';
echo $o-&gt;source .'&lt;br /&gt;';
echo $o-&gt;geo .'&lt;br /&gt;';
echo $o-&gt;iso_language_code .'&lt;br /&gt;';
echo $o-&gt;from_user_id .'&lt;br /&gt;';

}
[/php]

Si quieres saber más sobre los operadores de búsqueda de Twitter  puedes revisar la documentación oficial : <a target="_blank" href="http://search.twitter.com/operators">Twitter Search Operators.</a>

Tambíen te puede interesar <a target="_blank" href="http://craftyman.net/utilizando-twitter-oauth-con-php/">Como loguearse con Twitter y PHP</a>.
<p>&nbsp;</p><h3  class="related_post_title">Post Relacionados</h3><ul class="related_post"><li class="rltpost"><a href="http://craftyman.net/top-10-librerias-graficos-php/" title="Top 10 librerías para gráficos en php">Top 10 librerías para gráficos en php</a></li><li class="rltpost"><a href="http://craftyman.net/5-librerias-para-generar-pdf-con-php/" title="5 librerías para generar PDF con PHP">5 librerías para generar PDF con PHP</a></li><li class="rltpost"><a href="http://craftyman.net/mvc-en-php/" title="Tutorial MVC con PHP">Tutorial MVC con PHP</a></li><li class="rltpost"><a href="http://craftyman.net/tabs-css-simples-con-jquery/" title="Tabs CSS simples con jQuery">Tabs CSS simples con jQuery</a></li><li class="rltpost"><a href="http://craftyman.net/mostrar-archivos-ocultos-en-mac/" title="Mostrar archivos ocultos en Mac">Mostrar archivos ocultos en Mac</a></li><li class="rltpost"><a href="http://craftyman.net/20-plantillas-css-gratuitas/" title="20 Plantillas CSS Gratuitas">20 Plantillas CSS Gratuitas</a></li><li class="rltpost"><a href="http://craftyman.net/el-mejor-ide-para-php/" title="El mejor IDE para PHP">El mejor IDE para PHP</a></li><li class="rltpost"><a href="http://craftyman.net/10-excelentes-plugins-jquery-para-formularios/" title="10 Excelentes plugins jQuery para formularios">10 Excelentes plugins jQuery para formularios</a></li></ul>]]></description>
		<wfw:commentRss>http://craftyman.net/buscador-twitter-con-php/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Seguridad en PHP : filtrar numeros y cadenas</title>
		<link>http://craftyman.net/seguridad-php-filtrar-numeros-cadenas/</link>
		<comments>http://craftyman.net/seguridad-php-filtrar-numeros-cadenas/#comments</comments>
		<pubDate>Tue, 05 Oct 2010 14:33:20 +0000</pubDate>
		<dc:creator>craftyman</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Destacados]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[MySQL tools]]></category>
		<category><![CDATA[seguridad php]]></category>
		<category><![CDATA[Tips PHP]]></category>

		<guid isPermaLink="false">http://craftyman.net/?p=1226</guid>
		<description><![CDATA[La Seguridad en PHP se realiza filtrando las entradas del usuario, esto se debe realizar obligatoriamente para no tener en un futuro algunas sorpresas desagradables en nuestro servidor, estos consejos para validación de entradas en nuestras aplicaciones con PHP nos facilitaran el proceso.

<h3>Validar solo números</h3>

Si la entrada es una edad o algún valor numérico pequeño, podemos usar simplemente el CAST (int) de PHP 

<pre name="code" class="php">$numero = (int)$_POST['edad'];</pre>

Pero si nuestra entrada es una cadena de números podemos utilizar la siguiente expresion regular que filtrara de nuestra variable todos los caracteres que no sean numéricos

<pre name="code" class="php">$output = preg_replace("/[^0-9\-.]/", "", $data);</pre>

<strong>Esto permitirá también valores negativos y decimales.</strong>

<h3>Eliminar etiquetas HTML</h3>

Si deseas eliminar toda etiqueta HTML de una cadena puedes utilizar la función <a target="_blank" href="http://www.php.net/manual/en/function.strip-tags.php">strip_tags</a>, o si solo deseas que se muestre puedes encodificarlas con htmlspecialchars y no causara problemas al momento de mostrarlo.

<pre name="code" class="php">
$text = '&lt;p&gt;Test paragraph.&lt;/p&gt;
&lt;!-- Comment --&gt; 
&lt;a href="#fragment"&gt;Other text&lt;/a&gt;';
echo strip_tags($text);

// Permite &lt;p&gt; y &lt;a&gt;
echo strip_tags($text, '&lt;p&gt;&lt;a&gt;');
</pre>

<h3>Filtrando cadenas en MySQL</h3>

Utilizando <a target="_blank" href="http://bit.ly/dqoHnO">mysql_real_escape_string</a> podemos filtrar las cadenas antes de enviarlas en una consulta SQL, esto para prevenir inyecciones SQL, si utilizamos PDO con PHP esto ya no es necesario porque lo tienen integrado.

<pre name="code" class="php">
$user = mysql_real_escape_string($_POST['username']); //'aidan';
$pass = mysql_real_escape_string($_POST['password']); //"' OR ''='";

$query = "SELECT * FROM users WHERE user='$user' AND password='$pass'";
mysql_query($query);
</pre>

<h3>Utilizar filter_input</h3>

Si utilizas <strong>$_GET['id']</strong> puedes utilizar esta alternativa y de paso filtrar valores al mismo tiempo

<pre name="code" class="php">
$itemId = filter_input(INPUT_GET, 'id', FILTER_SANITIZE_SPECIAL_CHARS);</pre>

Se pueden utilizar como parámetro <strong>INPUT_POST, INPUT_COOKIE, INPUT_SERVER o INPUT_ENV</strong>

Que te parecieron estos consejos?, utilizas alguna validación más en tus aplicaciones?, puedes comentarlo y discutiremos alternativas y mejoras.

vía: <a target="_blank" href="http://www.readwriteweb.com/hack/2010/09/php-security-sanitizing-string.php">ReadWriteWeb.com</a><p>&nbsp;</p><h3  class="related_post_title">Post Relacionados</h3><ul class="related_post"><li class="rltpost"><a href="http://craftyman.net/comillas-simples-y-dobles-en-php/" title="¿Cúando utilizar comillas simples y dobles en PHP?">¿Cúando utilizar comillas simples y dobles en </a></li></ul>]]></description>
		<wfw:commentRss>http://craftyman.net/seguridad-php-filtrar-numeros-cadenas/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Mostrar número suscriptores de Youtube con php</title>
		<link>http://craftyman.net/numero-suscriptores-youtube-php/</link>
		<comments>http://craftyman.net/numero-suscriptores-youtube-php/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 18:11:17 +0000</pubDate>
		<dc:creator>craftyman</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Scripts PHP]]></category>
		<category><![CDATA[suscriptores youtube php]]></category>
		<category><![CDATA[Youtube]]></category>

		<guid isPermaLink="false">http://craftyman.net/?p=1216</guid>
		<description><![CDATA[Mostrar el numero de suscriptores o seguidores de YouTube con <a target="_blank" href="http://craftyman.net/category/php/">PHP</a> es una tarea sencilla, si tenemos una cuenta en esta Red Social, podemos mostrar la cantidad de suscriptores que tenemos en nuestra página web, esto con una función sencilla en PHP.

<div style="text-align:center"><img width="580px" src="http://craftyman.net/wp-content/images/youtube-count-subscribers.jpg" /></div>
<p>&nbsp;</p>
<strong>Función PHP</strong>

<pre name="code" class="php">
function get_yt_subs($username) { 

$xmlData = file_get_contents('http://gdata.youtube.com/feeds/api/users/' . strtolower($username)); 
$xmlData = str_replace('yt:', 'yt', $xmlData); 

$xml = new SimpleXMLElement($xmlData); 

$subs = $xml-&gt;ytstatistics['subscriberCount']; 

return($subs); 

}   
</pre>

Luego llamamos a la función pasando como parámetro el username de Youtube.

<pre name="code" class="php">
echo get_yt_subs('rppvideos');
</pre>

<ul>
	<li><a title="Mostrar Seguidores de Facebook" target="_blank" href="http://craftyman.net/numero-fans-facebook-php/">Mostrar Seguidores de Facebook</a></li>


	<li><a title="Mostrar número de seguidores de Twitter con PHP" target="_blank" href="http://craftyman.net/numero-seguidores-twitter-php/">Mostrar número de seguidores de Twitter con PHP</a></li>

</ul><p>&nbsp;</p><h3  class="related_post_title">Post Relacionados</h3><ul class="related_post"><li class="rltpost"><a href="http://craftyman.net/errores-con-php-enviarlos-email/" title="Detectar errores con PHP y enviarlos por Email">Detectar errores con PHP y enviarlos por Email</a></li><li class="rltpost"><a href="http://craftyman.net/exportar-importar-archivos-csv-php/" title="Exportar e Importar archivos CSV con PHP">Exportar e Importar archivos CSV con PHP</a></li><li class="rltpost"><a href="http://craftyman.net/nueva-forma-de-embeber-videos-de-youtube/" title="Nueva Forma de Embeber Videos de Youtube">Nueva Forma de Embeber Videos de Youtube</a></li><li class="rltpost"><a href="http://craftyman.net/forzar-descarga-de-archivos-con-php/" title="Forzar descarga de archivos con PHP">Forzar descarga de archivos con PHP</a></li><li class="rltpost"><a href="http://craftyman.net/generar-thumbnails-con-php/" title="Generar Thumbnails con PHP">Generar Thumbnails con PHP</a></li></ul>]]></description>
		<wfw:commentRss>http://craftyman.net/numero-suscriptores-youtube-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mostrar número de seguidores de Twitter con PHP</title>
		<link>http://craftyman.net/numero-seguidores-twitter-php/</link>
		<comments>http://craftyman.net/numero-seguidores-twitter-php/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 18:11:14 +0000</pubDate>
		<dc:creator>craftyman</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Twitter API]]></category>
		<category><![CDATA[Twitter PHP]]></category>

		<guid isPermaLink="false">http://craftyman.net/?p=1222</guid>
		<description><![CDATA[Mostrar el número de seguidores de <a target="_blank" href="http://craftyman.net/category/redes-sociales/twitter/">Twitter </a> con <a target="_blank" href="http://craftyman.net/category/php/">PHP</a> es una forma de personalizar la presentación de esta estadística, podemos crear una función y que nos devuelva el <a target="_blank" href="http://craftyman.net/tag/numero-suscriptores/">número de seguidores en texto</a>, esta función que utiliza el <a target="_blank" href="http://craftyman.net/tag/twitter-api/">API de Twitter</a> nos ayudara mucho, solo debemos pasar como parámetro el username de Twitter.

<div style="text-align:center"><img src="http://craftyman.net/wp-content/images/twitter-followers-follow-me.jpg" /></div>

<pre name="code" class="php">
function getTwFollowers($username){

	$xml=file_get_contents('http://twitter.com/users/show.xml?screen_name='.$username);
	if (preg_match('/followers_count&gt;(.*)&lt;/',$xml,$match)!=0) {
		$count = $match[1];
	}
	return $count;
}</pre>

Ahora solo tenemos que llamar a la función y pasarle como parámetro el username de Twitter.

<pre name="code" class="php">
echo getTwFollowers('craftyman');
</pre>

<strong>También podemos mostrar los seguidores de otras Redes Sociales:</strong>
<ul>
	<li><a title="Mostrar Seguidores de Facebook" target="_blank" href="http://craftyman.net/numero-fans-facebook-php/">Mostrar Seguidores de Facebook</a></li>

	<li><a title="Mostrar número suscriptores de youtube con php" target="_blank" href="http://craftyman.net/numero-suscriptores-youtube-php/">Mostrar número suscriptores de youtube con php</a></li>

	

</ul><p>&nbsp;</p><h3  class="related_post_title">Post Relacionados</h3><ul class="related_post"><li class="rltpost"><a href="http://craftyman.net/twitter-lanza-su-boton-oficial/" title="Twitter lanza su botón oficial">Twitter lanza su botón oficial</a></li><li class="rltpost"><a href="http://craftyman.net/utilizando-twitter-oauth-con-php/" title="Utilizando Twitter OAuth con PHP">Utilizando Twitter OAuth con PHP</a></li></ul>]]></description>
		<wfw:commentRss>http://craftyman.net/numero-seguidores-twitter-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mostrar número de Fans de Facebook con PHP</title>
		<link>http://craftyman.net/numero-fans-facebook-php/</link>
		<comments>http://craftyman.net/numero-fans-facebook-php/#comments</comments>
		<pubDate>Wed, 15 Sep 2010 00:26:09 +0000</pubDate>
		<dc:creator>craftyman</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Facebook API]]></category>
		<category><![CDATA[Facebook Pages]]></category>

		<guid isPermaLink="false">http://craftyman.net/?p=1208</guid>
		<description><![CDATA[Si tenemos una Fan Page de Facebook, y necesitamos mostrar el numero de fans que tenemos podemos utilizar los Plugins sociales de Facebook y elegir el Like Box, una de las desventajas de esto es que carece de personalización, otra manera de mostrar el numero de fans limpiamente es utilizando el API de Facebook.

<h3>Paso 1: Registrar una aplicación en Facebook</h3>

<div style="text-align:center"><img width="590px" src="http://craftyman.net/wp-content/images/facebookapp.jpg" /></div>

Para utilizar el API de Facebook primero tenemos que <a target="_blank" href="http://craftyman.net/utilizando-facebook-connect-con-php/">registrar una Aplicación Facebook</a> y obtener el API Key y Application Secret que lo necesitaremos en el siguiente paso.

<h3>Paso 2: Utilizando el API de Facebook</h3>

Tenemos que bajarnos el <a target="_blank" href="http://github.com/facebook/php-sdk/">Facebook API PHP SDK</a>, esto lo encontramos en la misma página de desarrolladores para Facebook.

Luego tenemos que incluirlo en nuestro archivo demo y pegar el <strong>API Key</strong> y <strong>App Secret</strong>.

<pre name="code" class="php">
include('src/facebook.php');
$facebook = new Facebook(array(
	'app_id',
	'app_secret',
	'cookie' => true
));
</pre>

Ahora debemos obtener el ID de nuestra Fan page, esto lo hacemos editando el Fan page en Facebook, luego la tendremos que pegar <em>"page_id"</em>

<pre name="code" class="php">
$result = $facebook->api(array(
	    'method' => 'fql.query',
	    'query' => 'select fan_count from page where page_id = page_id;'
	));
$fb_fans = $result[0]["fan_count"];</pre>

Listo, esto nos mostrara el numero de fans de la manera más limpia posible, ahora podemos darle estilos, incluirle alguna imagen, y alguna otra creatividad posible, si la tienen y quieren compartirla, bienvenida sea.
<p>&nbsp;</p><h3  class="related_post_title">Post Relacionados</h3><ul class="related_post"><li class="rltpost"><a href="http://craftyman.net/utilizando-facebook-connect-con-php/" title="Utilizando Facebook Connect con PHP">Utilizando Facebook Connect con PHP</a></li></ul>]]></description>
		<wfw:commentRss>http://craftyman.net/numero-fans-facebook-php/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Crear PDF con PHP</title>
		<link>http://craftyman.net/crear-pdf-php/</link>
		<comments>http://craftyman.net/crear-pdf-php/#comments</comments>
		<pubDate>Mon, 13 Sep 2010 19:39:22 +0000</pubDate>
		<dc:creator>craftyman</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[generar pdf php]]></category>
		<category><![CDATA[pdf con php]]></category>

		<guid isPermaLink="false">http://craftyman.net/?p=1214</guid>
		<description><![CDATA[El siguiente tutorial para crear archivos <a target="_blank" href="http://craftyman.net/tag/pdf-con-php/">PDF con PHP</a> con <a target="_blank" href="http://www.fpdf.org">FPDF</a> explica su implementación y también un archivo demo para descargar y revisar.

<div style="text-align:center"><img width="600px" src="http://craftyman.net/wp-content/images/pdf-php.jpg" /></div>
<p>&nbsp;</p>
FPDF es una librería <em>Open source</em> para PHP y la creación de archivos PDF, es muy sencilla y flexible para utilizar.

<h3>Características.</h3>

<ul>
	<li>Elección de formato de página y margen.</li>
	<li>Colocar cabeceras y pies de página.</li>
	<li>Saltos de página automáticos.</li>
	<li>Soporte de imágenes.</li>
	<li>Personalización de fuentes.</li>
</ul>


El siguiente ejemplo muestra como hacer una tabla utilizando FPDF.



<h3>Paso 1: descargar la librería FPDF</h3>

La podemos descargar del <a target="_blank" href="http://www.fpdf.org/">sitio oficial de FPDF.</a>
Solamente necesitaremos el archivo <strong>fpdf.php</strong>.

<h3>Paso 2: Creando una clase reutilizable.</h3>

Esta clase la copie y modifique de la misma página de FPDF, el cambio esta en que no tenemos que modificar la clase para elegir el numero de columnas que deseamos mostrar.

<strong>Clase PdfTable <em>(para generar tablas en los PDF)</em></strong>

<pre name="code" class="php">
require('fpdf.php');
class PdfTable extends FPDF
{

function FancyTable($header,$data,$w)
{
	//Colores, ancho de línea y fuente en negrita
	$this-&gt;SetFillColor(0, 126, 216);
	$this-&gt;SetTextColor(255);
	$this-&gt;SetDrawColor(0, 126, 216);
	$this-&gt;SetLineWidth(.3);
	$this-&gt;SetFont('','B');
	
	//Cabecera
	
	for($i=0;$i&lt;count($header);$i++)
		$this-&gt;Cell($w[$i],7,$header[$i],1,0,'C',1);
	$this-&gt;Ln();
	
	//Restauración de colores y fuentes
	$this-&gt;SetFillColor(224,235,255);
	$this-&gt;SetTextColor(0);
	$this-&gt;SetFont('');
	
	//Datos
	$fill=false;
	foreach($data as $row)
	{
		foreach($w as $k=&gt;$col){
			$this-&gt;Cell($col,6,$row[$k],'LR',0,'L',$fill);
		}
		
		$this-&gt;Ln();
		$fill=!$fill;
	}
	$this-&gt;Cell(array_sum($w),0,'','T');
}
}
</pre>


<h3>Paso 3: Utilizando la Clase PdfTable a nuestra necesidad</h3>

Llamando a esta clase lo único que debemos hacer es definir que columnas queremos mostrar y darle al ancho necesario a cada una, luego almacenar en un array los datos de cada columna.

<pre name="code" class="php">
//instanciamos la clase
$pdf=new PdfTable();

//Títulos de las columnas
$header=array('Nombre','E-Mail','Twitter');

//anchos de cada columna
$widths=array(40,70,40);

//Carga de datos
$data=array(
array("Juan","jperez@hotmail.com","@jperez"),
array("Mario","mmoreno@hotmail.com","@mariom"),
array("Luis","lgomez@hotmail.com","@luisluis"),
array("Javier","jchavez@hotmail.com","@xavierx")
);

$pdf-&gt;SetFont('Arial','',14);
$pdf-&gt;AddPage();
$pdf-&gt;FancyTable($header,$data,$widths);
$pdf-&gt;Output();
</pre>

De esta manera nos libramos un poco del código para crear tablas en los PDF.

Para más documentación pueden entrar a la <a target="_blank" href="http://www.fpdf.org/">página oficial de FPDF</a>.

<a target="_blank" href="http://craftyman.net/5-librerias-para-generar-pdf-con-php/">Librerías para generar PDF con PHP.</a>

<a class="download" target="_blank" href="http://www.box.net/shared/3fvbkjuhq4">Descargar Ejemplo</a><p>&nbsp;</p><h3  class="related_post_title">Post Relacionados</h3><ul class="related_post"><li class="rltpost"><a href="http://craftyman.net/generar-pdf-con-php/" title="Generar PDF con PHP">Generar PDF con PHP</a></li><li class="rltpost"><a href="http://craftyman.net/5-librerias-para-generar-pdf-con-php/" title="5 librerías para generar PDF con PHP">5 librerías para generar PDF con PHP</a></li></ul>]]></description>
		<wfw:commentRss>http://craftyman.net/crear-pdf-php/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

