Archive for the ‘ PHP ’ Category

Leer el news feed de facebook

El 3 de junio, Facebook actualizo el Graph API y ahora requiera un “access token” para poder leer el news feed o wall post o muro, así sean públicos. Este cambio ha hecho que muchas paginas/scripts dejen de funcionar, es por esto luego de investigar que encontre una solución que les dejo acá.

esto es lo que se hacia antes del 3 de junio:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function fetchUrl($url){
     $ch = curl_init();
     curl_setopt($ch, CURLOPT_URL, $url);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     curl_setopt($ch, CURLOPT_TIMEOUT, 20);
 
     $retData = curl_exec($ch);
     curl_close($ch); 
 
     return $retData;
}
 
$profile_id = "1234567890";
 
$data['feed_data'] = fetchUrl("http://graph.facebook.com/{$profile_id}/feed");

Con los cambios recientes hay que hacer una pequena modificacion:

1
2
3
4
5
6
7
8
9
10
$profile_id = "1234567890";		
 
//App Info, 
$app_id = "0001234567890";
$app_secret = "abc123ebf123f3g5g6j";
 
//retrieve auth token
$authToken = fetchUrl("https://graph.facebook.com/oauth/access_token?type=client_cred&client_id={$app_id}&client_secret={$app_secret}");
 
$data['feed_data'] = fetchUrl("https://graph.facebook.com/{$profile_id}/feed?{$authToken}");

Se agregan dos componentes para crear la url que nos devolvera la feed y estas son simplemente la app id y la app secret.Estas nos sirven para pedir un “Token” que sera usado para pedir el “Feed”. La app id y app secret se pueden obtener facilmente creando una aplicacion en www.facebook.com/developers.
Espero que les sea util

Css condicional

Hay varias formas de usar distintas hojas de estilo según el browser que nuestro usuario tenga. Pero lejos me parece que la que mas control y seguridad no da es simplemente con php elegir el archivo correspondiente según el resultado del HTTP_USER_AGENT. Lo ideal no es cargar css completamente distintos sino cargar uno general para todos y luego según el browser cargar el uno que corrija los errores particulares, total como lo cargamos secundariamente los primeros selectores serán sobre escritos.
Por ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 <link href="http://www.grupoquantum.com/css/css.css?v=0.9" rel="stylesheet" type="text/css">
 
       <?php
       $msie = strpos($_SERVER["HTTP_USER_AGENT"], 'MSIE') ? true : false; 
	   $firefox = strpos($_SERVER["HTTP_USER_AGENT"], 'Firefox') ? true : false; 
	   $safari = strpos($_SERVER["HTTP_USER_AGENT"], 'Safari') ? true : false; 
	   $chrome = strpos($_SERVER["HTTP_USER_AGENT"], 'Chrome') ? true : false;
 
	   if ($firefox) { //Firefox?
 
		}
 
		if ($safari || $chrome) { // Safari?
		echo '<link href="http://www.grupoquantum.com/css/css-webkit.css?v=0.9" rel="stylesheet" type="text/css">';
		}
 
		if (!$msie) { // Not IE?
 
		}
		if ($msie) { // IE?
		echo '<link href="http://www.grupoquantum.com/css/css-ie.css?v=2.3" rel="stylesheet" type="text/css">';
		}
 
	   ?>

Tambien es recomendable incluir la version que estamos usando de forma que nos aseguramos que estamos viendo el ultimo archivo modificado y no una version cacheada.

seleccionar entradas aleatoriamente en mySql

La idea de este tutorial se basa en la siguiente situación: Hemos hecho una competencia donde se encontraba un formulario donde los participantes dejaban sus datos. La competencia corre por cuatro semanas y tenemos que elegir un ganador cada semana.
Como seguridad también en vez de elegir sólo un ganador elegiremos 5 ganadores de forma que contactémos al primero y en caso que no cumpla con los requisitos de la política de privacidad llamaremos al segundo y así sucesivamente.

Bueno el código es muy fácil, se basa en la utilización de rand() que es una funcion incluida en mysql.

1
SELECT * FROM  `competicion` ORDER BY RAND( ) LIMIT 1";

Como había comentado antes quiero seleccionar 5 ganadores que sean de la semana x y que no hayan ganado (la semana en la que han ingresado se guarda en la db al momento de registro) por lo que la consulta nos quedaría de la siguiente forma:

1
$sql = "SELECT * FROM  `competicion` WHERE semana =  'primera' AND gano =  'no' ORDER BY RAND( ) LIMIT 5";

Con eso ya tenemos todo, utilizando PHP se nos hace bien fácil enviarnos los resultados a nuestro email o simplemente imprimirlo en la pantalla.
El código completo sería algo como:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$semana='primera';
$sql = "SELECT * FROM  `competicion` WHERE semana = '$semana' AND gano =  'no' ORDER BY RAND( ) LIMIT 5";
 
 
$result = mysql_query($sql);
 
if (!$result) {
    echo "No se pudo correr la consulta ($sql) de la DB: " . mysql_error();
    exit;
}
 
if (mysql_num_rows($result) == 0) {
    echo "No se encontraron registros";
    exit;
}else{
 
	while ($row = mysql_fetch_assoc($result)) {
		$fecha=date('l jS \of F Y h:i:s A',$row['time']);
		$ganador.="Id: ".$row["id"]."\nTitle: ".$row['titulo']."\nNombre: ".$row['nombre']."\nApellido: ".$row['apellido']."\nEmail: ".$row['email']."\nEdad: ".$row['edad']."\nRespuesta: ".$row['respuesta']."\nTime: ".$fecha."\n\n\n";
	}
 
	mysql_free_result($result);
	$to='email del administrador o quien vaya a chequear que el ganador sea genuino';
	mail($to,"ganador de la semana ".$semana,$ganador);
	echo "la lista de ganadores ha sido enviada a $to";
 
}

PHP for Android

No me voy a explayar mucho porque el titulo lo dice todo. phpforAndroid es una seria de librerias/framework que te permite desarrollar aplicaciones para Android usando PHP. Está bastante bueno porque las salidas las hace usando la GUI de Android. Vean el video que demuestra bien de lo que estoy hablando. Espero que sigan evolucionando estas tecnologías y que en el futuro podamos acceder a la brujula, al gps, la camará,etc.

.htacess generator

Estoy con los generadores online. Ayer hice un post cortito sobre una aplicación online que te permitía formatear fecha en mySql. Hoy dejo una nueva aplicación que genera los archivos .htaccess. Los .htacces siempre fueron difícil de hacer, si bien es un documento de texto nunca recuerdo bien como es la sintaxis para cada una de la sentencias. Utilizando ésta página podemos hacerlo de forma gráfica.

http://www.htaccesseditor.com/en.shtml#a_access