Crear archivos Zip con PHP

La creación de archivos Zip con PHP es muy sencilla, podemos agregar cualquier tipo de archivos dentro de un Zip y descargarlo o almacenarlo en nuestro servidor, dependiendo de la necesidad, la siguiente función utiliza la clase ZipArchive de PHP, con esto simplemente necesitaremos llamar a la función pasándole las rutas de archivos que

deseamos comprimir y este nos retornara el archivo .Zip.


[php]
function create_zip($f=array(),$zip_name=''){
$valid_files = array();
if(is_array($files)) {
foreach($files as $file) {
if(file_exists($file)) {
$valid_files[] = $file;
}
}
}
if(count($valid_files)) {
$zip = new ZipArchive();
if($zip->open($zip_name, ZIPARCHIVE::CREATE)!==TRUE){
return false;
}
foreach($valid_files as $file) {
$zip->addFile($file,$file);
}
$zip->close();
if(file_exists($zip_name)){
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="'.$zip_name.'"');
readfile($zip_name);
unlink($zip_name);
}
}else{
return false;
}
}
[/php]
Ahora que tenemos la función para poder comprimir los archivos tenemos que crear un array que pasaremos por parametro a la función.
[php]
$files = array(
'images1.jpg',
'images2.png',
'images3.gif',
'file.pdf'
);
create_zip($files,'file.zip');
[/php]
Documentación: ZipArchive PHP
Descargar Script: Crear Zip con PHP

zp8497586rq

El mejor Framework para PHP

Elige el mejor Framework para PHP en base a tus necesidades o caracteristicas que quieres sobre el Framework, el sitio Best Web-Frameworks nos ayuda en esta tarea, pero no solo con Frameworks de PHP, también tiene disponibles Frameworks de otros lenguajes xenical online prescription de programación como: Ruby, Perl, Java, Javascript, CSS, Python, ColdFusion, ASP.NET.

.com/wp-content/images/2011/bfrws.jpg” />
Entre las opciones para comparar que dispone cada Framework están:

  • Descripción del Framework, caracteristicas, descarga, licencia.
  • Soporte para PHP4 y PHP5
  • MVC (Model View Controller)
  • Modulos
  • Object Relational Mapping (ORM)
  • Event Driven Programming (EDP)
  • Autenticacion (Auth)
  • Cache
  • Validadores
  • Funciones para Ajax

Ver Frameworks

zp8497586rq

Detectar errores con PHP y enviarlos por Email

i tenemos una aplicación web con PHP 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 envió por email para enterarnos de inmediato cuando ocurren problemas.

 

Este video publicado por Nettuts+ explica detalladamente cómo funciona.

 

Este es el codigo explicado.
[php]
<?php
// funcion de errores personalizado
function nettuts_error_handler($number, $message, $file, $line, $vars){
$email = "
<p>An error ($number) occurred on line
<strong>$line</strong> and in the <strong>file: $file.</strong>
<p> $message </p>";
$email .= "<pre>" . print_r($vars, 1) . "</pre>";
$headers = ‘Content-type: text/html; charset=iso-8859-1’ . "rn";
// 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 < 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: Nettuts+

Redirecciones 301 para conservar el pagerank

Las redirecciones 301 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 PHP. 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.

ASP

[jscript]
< %@ Language=VBScript %>
< %
Response.Status=”301 Moved Permanently”
Response.AddHeader “Location”,”http://www.new-url.com/”
%>
[/jscript]

ASP.Net

[jscript]
<script runat=”server”>
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = “301 Moved Permanently”;
Response.AddHeader(“Location”,”http://www.new-url.com”);
}
</script>
[/jscript]

CGI PERL

[php]
$q = new CGI;
print $q->redirect(“http://www.new-url.com/”);
[/php]

ColdFusion

[html]
<.cfheader statuscode=”301″ statustext=”Moved permanently”>
<.cfheader name=”Location” value=”http://www.new-url.com”>
[/html]

htaccess

[jscript]
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]
[/jscript]

Java

[jscript]
< %
response.setStatus(301);
response.setHeader( “Location”, “http://www.new-url.com/” );
response.setHeader( “Connection”, “close” );
%>
[/jscript]

PHP

[php]
< ?
Header( “HTTP/1.1 301 Moved Permanently” );
Header( “Location: http://www.new-url.com” );
?>
[/php]

Ruby on Rails

[ruby]
def old_action
headers[“Status”] = “301 Moved Permanently”
redirect_to “http://www.new-url.com/”
end
[/ruby]
vía: Webconf

Exportar e Importar archivos CSV con PHP

Exportar datos desde PHP 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.

Exportar datos a .CSV


[php]
$f = fopen("reporte.csv","w");
$sep = ","; //separador
while($reg = mysql_fetch_array($datos) ) {
$linea = $reg[&#039;id&#039;].$sep.$reg[&#039;nombre&#039;].$sep.$reg[&#039;email&#039;]."n";
fwrite($f,$linea);
}
fclose($f);
[/php]

Importar datos desde .CSV

Si tenemos la necesidad de leer un archivo CSV desde alguna aplicación PHP podemos hacerlo con la función fgetcsv

[php]
$fp = fopen ( "reporte.csv" , "r" );
while (( $data = fgetcsv ($fp,1000,",")) !== FALSE ){
$i = 0;
foreach($data as $row) {
echo "Campo $i: $row<br />";
// Muestra todos los campos de la fila actual
$i++ ;
}
echo "<br /><br />";
}
fclose ( $fp );
[/php]

También te puede interesar Exportar archivos a Excel utilizando PHP.
Descargar Demo

zp8497586rq

Buscador Twitter con PHP

Un buscador de Twitter realizado en PHP, 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.

La siguiente función nos devuelve los datos en formato json.
[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->profile_image_url .'<br />’;
echo $o->created_at .'<br />’;
echo $o->from_user .'<br />’;
echo $o->text .'<br />’;
echo $o->id .'<br />’;
echo $o->source .'<br />’;
echo $o->geo .'<br />’;
echo $o->iso_language_code .'<br />’;
echo $o->from_user_id .'<br />’;
}
[/php]
Si quieres saber más sobre los operadores de búsqueda de Twitter puedes revisar la documentación oficial : Twitter Search Operators.
Tambíen te puede interesar Como loguearse con Twitter y PHP.

Seguridad en PHP : filtrar numeros y cadenas

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.

Validar solo números

Si la entrada es una edad o algún valor numérico pequeño, podemos usar simplemente el CAST (int) de PHP

$numero = (int)$_POST['edad'];

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

$output = preg_replace("/[^0-9-.]/", "", $data);

Esto permitirá también valores negativos y decimales.

Eliminar etiquetas HTML

Si deseas eliminar toda etiqueta HTML de una cadena puedes utilizar la función strip_tags, o si solo deseas que se muestre puedes encodificarlas con htmlspecialchars y no causara problemas al momento de mostrarlo.

$text = '<p>Test paragraph.</p>
<!-- Comment -->
<a href="#fragment">Other text</a>';
echo strip_tags($text);
// Permite <p> y <a>
echo strip_tags($text, '<p><a>');

Filtrando cadenas en MySQL

Utilizando mysql_real_escape_string 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.

$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);

Utilizar filter_input

Si utilizas $_GET[‘id’] puedes utilizar esta alternativa y de paso filtrar valores al mismo tiempo

$itemId = filter_input(INPUT_GET, 'id', FILTER_SANITIZE_SPECIAL_CHARS);

Se pueden utilizar como parámetro INPUT_POST, INPUT_COOKIE, INPUT_SERVER o INPUT_ENV
Que te parecieron estos consejos?, utilizas alguna validación más en tus aplicaciones?, puedes comentarlo y discutiremos alternativas y mejoras.
vía: ReadWriteWeb.com

Mostrar número suscriptores de Youtube con php

Mostrar el numero de suscriptores o seguidores de YouTube con PHP 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.

 

Función 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->ytstatistics['subscriberCount'];
return($subs);
}

Luego llamamos a la función pasando como parámetro el username de Youtube.

echo get_yt_subs('rppvideos');

Mostrar número de seguidores de Twitter con PHP

Mostrar el número de seguidores de Twitter con PHP es una forma de personalizar la presentación de esta estadística, podemos crear una función y que nos devuelva el número de seguidores en texto, esta función que utiliza el API de Twitter nos ayudara mucho, solo debemos pasar como parámetro el username de Twitter.

function getTwFollowers($username){
	$xml=file_get_contents('http://twitter.com/users/show.xml?screen_name='.$username);
	if (preg_match('/followers_count>(.*)</',$xml,$match)!=0) {
		$count = $match[1];
	}
	return $count;
}

Ahora solo tenemos que llamar a la función y pasarle como parámetro el username de Twitter.

echo getTwFollowers('craftyman');

También podemos mostrar los seguidores de otras Redes Sociales:

Mostrar número de Fans de Facebook con PHP

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.

Paso 1: Registrar una aplicación en Facebook

Para utilizar el API de Facebook primero tenemos que registrar una Aplicación Facebook y obtener el API Key y Application Secret que lo necesitaremos en el siguiente paso.

Paso 2: Utilizando el API de Facebook

Tenemos que bajarnos el Facebook API PHP SDK, esto lo encontramos en la misma página de desarrolladores para Facebook.
Luego tenemos que incluirlo en nuestro archivo demo y pegar el API Key y App Secret.

include('src/facebook.php');
$facebook = new Facebook(array(
	'app_id',
	'app_secret',
	'cookie' => true
));

Ahora debemos obtener el ID de nuestra Fan page, esto lo hacemos editando el Fan page en Facebook, luego la tendremos que pegar “page_id”

$result = $facebook->api(array(
	    'method' => 'fql.query',
	    'query' => 'select fan_count from page where page_id = page_id;'
	));
$fb_fans = $result[0]["fan_count"];

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.