Actualizar estado de facebook desde PHP y CURL
<?PHP
/*******************************
*	Facebook Status Updater
*	Christian Flickinger
*	http://nexdot.net/blog
*	April 20, 2007
*******************************/
 
$status = 'YOUR_STATUS';
$first_name = 'YOUR_FIRST_NAME';
$login_email = 'YOUR_LOGIN_EMAIL';
$login_pass = 'YOUR_PASSWORD';
 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://login.facebook.com/login.php?m&amp;next=http%3A%2F%2Fm.facebook.com%2Fhome.php');
curl_setopt($ch, CURLOPT_POSTFIELDS,'email='.urlencode($login_email).'&pass='.urlencode($login_pass).'&login=Login');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_COOKIEJAR, "my_cookies.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "my_cookies.txt");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
curl_exec($ch);
 
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_URL, 'http://m.facebook.com/home.php');
$page = curl_exec($ch);
 
curl_setopt($ch, CURLOPT_POST, 1);
preg_match('/name="post_form_id" value="(.*)" \/>'.ucfirst($first_name).'/', $page, $form_id);
curl_setopt($ch, CURLOPT_POSTFIELDS,'post_form_id='.$form_id[1].'&status='.urlencode($status).'&update=Update');
curl_setopt($ch, CURLOPT_URL, 'http://m.facebook.com/home.php');
curl_exec($ch);
?>
Tags: , , ,
Código PHP para enviar comentarios automáticamente en Wordpress

Un código Script Kiddie para spamear blogs en Wordpress automáticamente. Sin embargo solo es el preámbulo ya que poner un while(1) y tratar de saltarse akismet si que es todo un reto.

<?php 
$postfields = array(); 
$postfields["action"] = "submit"; 
$postfields["author"] = "Spammer"; 
$postfields["email"] = "spammer@spam.com"; 
$postfields["url"] = "http://www.iamaspammer.com/"; 
$postfields["comment"] = "I am a stupid spammer."; 
$postfields["comment_post_ID"] = "123"; 
$postfields["_wp_unfiltered_html_comment"] = "0d870b294b"; 
//Url of the form submission 
$url = "http://www.ablogthatdoesntexist.com/blog/suggerer_site.php?action=meta_pass&id_cat=0"; 
$useragent = "Mozilla/5.0"; 
$referer = $url;  
 
//Initialize CURL session 
$ch = curl_init($url); 
//CURL options 
curl_setopt($ch, CURLOPT_POST, 1); 
//We post $postfields data 
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields); 
//We define an useragent (Mozilla/5.0) 
curl_setopt($ch, CURLOPT_USERAGENT, $useragent); 
//We define a refferer ($url) 
curl_setopt($ch, CURLOPT_REFERER, $referer); 
//We get the result page in a string 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
//We exits CURL 
$result = curl_exec($ch); 
curl_close($ch); 
 
//Finally, we display the result 
echo $result; 
?>
Tags: , ,
Menu con CSS & jQuery
Técnica para evitar el SPAM en tu email

Curioso truco para evitar que los spammers lean tu email.
Consiste en escribirlo al contrario y con CSS lo inviertes, asi los bots spammeros no sabrán ni que es.

<style type="text/css"> 
span.test { direction: rtl; unicode-bidi:bidi-override; }  
</style> 
<p><span class="test">moc.tset@tset</span></p>

Visto en sentidweb.com

Tags: , ,
Catalogo y Ejemplos de expresiones regulares

Una de las cosas mas  difíciles o que tienen una curvatura de aprendizaje diferente  son las expresiones regulares.  Pero una vez que encuentras el truco ya no es tan difícil.

Les dejo los mejores manuales de expresiones regulares y los ejemplos mas esenciales o importantes.

Expresiones regulares que siempre se ocupan:

Expresión regular para números de telefonos

$string = "(232) 555-5555";
if (preg_match('/^\(?[0-9]{3}\)?|[0-9]{3}[-. ]? [0-9]{3}[-. ]?[0-9]{4}$/', $string)) {
echo "This is a valid phone number.";
}

Una de las cosas mas difíciles o que tienen una curvatura de aprendizaje diferente son las expresiones regulares. Pero una vez que encuentras el truco ya no es tan difícil.

Les dejo los mejores manuales de expresiones regulares y los ejemplos mas esenciales o importantes.

Expresiones regulares que siempre se ocupan:

Expresión regular para números de teléfonos

$string = "(232) 555-5555";
if (preg_match('/^\(?[0-9]{3}\)?|[0-9]{3}[-. ]? [0-9]{3}[-. ]?[0-9]{4}$/', $string)) {
echo "Esto es un teléfono válido";
}

Expresión regular para códigos postales

	$string = "55324-4324";
if (preg_match('/^[0-9]{5,5}([- ]?[0-9]{4,4})?$/', $string)) {
echo "Cópdigo Postal válido";
}

Expresión regular para Username

function validate_username( $username ) {
  if(preg_match('/^[a-zA-Z0-9_]{3,16}$/', $_GET['username'])) {
    return true;
  }
  return false;
}

Expresión regular para XHTML/XML tag

function get_tag( $tag, $xml ) {
  $tag = preg_quote($tag);
  preg_match_all('{&lt;'.$tag.'[^&gt;]*&gt;(.*?).'}',
                   $xml,
                   $matches,
                   PREG_PATTERN_ORDER);
 
  return $matches[1];
}

Expresión regular para URL o dirección

$szString = "http://www.talkPHP.com";
if (preg_match('/^(http|https|ftp):\/\/([\w]*)\.([\w]*)\.(com|net|org|biz|info|mobi|us|cc|bz|tv|ws|name|co|me)(\.[a-z]{1,3})?\z/i', $szString))
    echo "Es una dirección URL válida";

Expresión regular para Email

$string = "first.last@domain.co.uk";
if (preg_match(
'/^[^\W][a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)*\@[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)*\.[a-zA-Z]{2,4}$/',
$string)) {
echo "Este es un email válido."

Expresión regular para Número de Tarjeta de Crédito

 	function luhn (cc) {
   var sum = 0;
   var i;
 
   for (i = cc.length - 2; i &gt;= 0; i -= 2) {
      sum += Array (0, 2, 4, 6, 8, 1, 3, 5, 7, 9) [parseInt (cc.charAt (i), 10)];
   }
   for (i = cc.length - 1; i &gt;= 0; i -= 2) {
      sum += parseInt (cc.charAt (i), 10);
   }
   return (sum % 10) == 0;
}

Fuente:smashingmagazine.com

Tags: , ,
Mejores prácticas JavaScript
  • No hagas suposiciones: no pienses que el usuario tendrá el javascript activado o que usará un navegador adecuado.
  • Usa IDs y relaciones entre elementos: para no depender de un HTML mal estructurado y que el javascript sea imposible de realizar, utiliza IDs para acceder a los elementos con los que se quiere tratar y busca elementos que faciliten acceder a otros elementos.
  • Utiliza estilos: en vez de modificar los estilos de los elementos HTML mediante Javascript, usa clases CSS que modifiquen los estilos, y mediante Javascript se le puede añadir la clase a un elemento superior.
  • Comprende el navegador y a los usuarios: debes pensar cómo funciona un navegador, no sobre saturar su comportamiento (abuso de drag&drop, eventos, …). Además debes pensar qué espera el usuario que haga el navegador, y respetarlo.
  • Comprende los eventos: los eventos no solo corresponden a un objeto, sino a los elementros hijo que contiene. Así se pueden realizar eventos sobr un único elemento y no tener que modificar los demás.
  • Respeta el código de otros: seguro que a parte de tu código existe algún otro que has añadido, por lo que deberás programar teniendo en cuenta que hay que evitar conflicto entre funciones.
  • Después de ti vendrá otro: es muy frecuente que alguien acabe modificando tu código, ten un poco de consideración por los demás y escribe código legible y entendible.

Via: Sentidoweb.com

Tags: , , ,
Sitios Java en español para estudiantes Universitarios

Hace tiempo que sali de la Universidad, mas concretamente del Tec de Morelia. En mis años de estudiante y programer noob, me la pasaba buscando información sobre Java. Tutoriales, manuales, ejemplos.

Estos son algunos sitios en español, que a mi gusto me sirvieron mucho sin embargo si alguno de ustedes tiene uno que compartir puede hacerlo en los comentarios. (more…)

Tags: , , , ,
Top 25 Chuck Norris frases Programadores

Uno puede encontrar infinidad de bromas con el Héroe nacional Chuck Norris. Algunas ya un poco clicheadas y aburridas, sin embargo esta lista es divertida o al menos para mi, pues tiene que ver con nuesta profesión.

geek-chuck-norris-small

1. When Chuck Norris throws exceptions, it’s across the room.
2. All arrays Chuck Norris declares are of infinite size, because Chuck Norris knows no bounds.
3. Chuck Norris doesn’t have disk latency because the hard drive knows to hurry the hell up.
4. Chuck Norris writes code that optimizes itself.
5. Chuck Norris can’t test for equality because he has no equal.
6. Chuck Norris doesn’t need garbage collection because he doesn’t call .Dispose(), he calls .DropKick().
7. Chuck Norris’s first program was kill -9.
8. Chuck Norris burst the dot com bubble.
9. All browsers support the hex definitions #chuck and #norris for the colors black and blue.
10. MySpace actually isn’t your space, it’s Chuck’s (he just lets you use it).
11. Chuck Norris can write infinite recursion functions…and have them return.
12. Chuck Norris can solve the Towers of Hanoi in one move.
13. The only pattern Chuck Norris knows is God Object.
14. Chuck Norris finished World of Warcraft.
15. Project managers never ask Chuck Norris for estimations…ever.
16. Chuck Norris doesn’t use web standards as the web will conform to him.
17. “It works on my machine” always holds true for Chuck Norris.
18. Whiteboards are white because Chuck Norris scared them that way.
19. Chuck Norris doesn’t do Burn Down charts, he does Smack Down charts.
20. Chuck Norris can delete the Recycling Bin.
21. Chuck Norris’s beard can type 140 wpm.
22. Chuck Norris can unit test entire applications with a single assert.
23. Chuck Norris doesn’t bug hunt as that signifies a probability of failure, he goes bug killing.
24. Chuck Norris’s keyboard doesn’t have a Ctrl key because nothing controls Chuck Norris.
25. When Chuck Norris is web surfing websites get the message “Warning: Internet Explorer has deemed this user to be malicious or dangerous. Proceed?”.

The Ultimate Top 25 Chuck Norris “The Programmer” Jokes

Tags: , ,
El verdadero enfoque de la programación extrema

Cuando hablamos de programacion extrema, hablamos de esto.

extreme_programming

Vía: Pablasso.com

Tags: ,
Ejecutar PHP en Google App Engine

Google App Engine te permite ocupar el procesamiento de los Servers de google para tus aplicaciones. Pero solo esta limitado a pocos lenguajes como Java sin embargo puedes usar Quercus, una implementación Java de PHP.

En el siguiente post puedes encontrar la explicación: Run PHP on the Google App Engine

Via: sentidoweb.com

Tags: , ,
La refactorización de código

La refactorización de código es una de las ¿Técnicas? ¿Herramientas? para tratar de hacer el código más entendible y ahorrar tiempos, costos en el mantenimiento.

Hay dos puntos de vista, por una parte hay muchos programadores que hacen algo en 2 lineas y superMegaHyperEficiente pero que nadie entiende. Y hay otros que lo hacen en 10 lineas pero que entiende cualquier persona.

¿Qué es mejor?, desde mi punto de vista depende del caso. Si es un proyecto cada byte de más es un desperdicio optas por ser óptimo, en otro caso es mejor comentar y programar con modelos y técnicas propuestas que a primera vista son muy tontas, pero a largo plazo suelen funcionar muy bien.

El libro de Martin Fowler, Refactoring es la referencia clásica y básica para empezar. Modelos de datos, encapsulamiento de objetos, etc. Es el libro que lleve hace 1 año y creo que a pesar de todo, funciona bien.

Lo mejor para mi es tener una referencia de “Best Practices” o buenas practicas que me hacen mejor programador. Ya que uno de los grandes problema es que todo el mundo sabe programar, pero todos a su manera. Tener una guia básica te permite tener un estándar y eso para mi es una gran ventaja.

Si quieren darle una “ojeada” a algunas propuestas para refactorizar código: CATALOGO BÁSICO DE REFACTORINGS.

Tags:
Clase PHP para pagos de Paypal

Si necesitas crear aplicaciones con pagos mediante Paypal y no te quieres romper la cabeza viendo su documentación o creando botones o herramientas que son muy tardadas. Ve la siguiente clase muy fácil de utilizar.

 
// Include the paypal library
include_once ('Paypal.php');
 
// Create an instance of the paypal library
$myPaypal = new Paypal();
 
// Specify your paypal email
$myPaypal->addField('business', 'YOUR_PAYPAL_EMAIL');
 
// Specify the currency
$myPaypal->addField('currency_code', 'USD');
 
// Specify the url where paypal will send the user on success/failure
$myPaypal->addField('return', 'http://YOUR_HOST/payment/paypal_success.php');
$myPaypal->addField('cancel_return', 'http://YOUR_HOST/payment/paypal_failure.php');
 
// Specify the url where paypal will send the IPN
$myPaypal->addField('notify_url', 'http://YOUR_HOST/payment/paypal_ipn.php');
 
// Specify the product information
$myPaypal->addField('item_name', 'T-Shirt');
$myPaypal->addField('amount', '9.99');
$myPaypal->addField('item_number', '001');
 
// Specify any custom value
$myPaypal->addField('custom', 'muri-khao');
 
// Enable test mode if needed
$myPaypal->enableTestMode();
 
// Let's start the train!
$myPaypal->submitPayment();

Libreria PHP PAYMENT LIBRARY | Via sentidoweb.com

Tags: , , ,
Página 1 de 3123»