PHP: Descargar archivos, páginas o mandar formularios POST

He visto por ahí que todavía hay gente que no tiene claro cómo bajar archivos de Internet con PHP con cabeceras personalizadas y/o obtener las cabeceras de respuesta.

En versiones antiguas de PHP se solían usar las funciones fsockopen o la librería curl para hacer peticiones HTTP personalizadas. Sin embargo a partir de PHP4.3 y PHP5 empiezan a haber facilidades al respecto.

http_build_query + file_get_contents + stream_context_create + $http_response_header

**Para construir una query-string para usar en GET o en POST mediante un array asociativo:
**

// $str = 'a=1&b=test+2';  
$str = http_build_query(array(  
    'a' => 1,  
    'b' => 'test 2',  
));  

**Para hacer una petición POST a un formulario www-encodeado con un referer, cookies, simulando ser google chrome y obtener las cabeceras de respuesta:
**

unset($http_response_header);  

$http_response_body = file_get_contents('http://url/to/form', false, stream_context_create(array(  
    'http' => array(  
        'method' => "POST",  
        'user_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.215 Safari/534.10',  
        'header' => implode("\r\n", array(  
            "Accept-language: en",  
            "Content-Type: application/x-www-form-urlencoded",  
            "Referer: http://url/to/form",  
            "Cookie: foo=bar",  
            "Connection: close",  
        )),  
        'content' => http_build_query(array(  
            'form_key'         => 'form_value',  
            'another_form_key' => '10',  
        )),  
    )  
)));  

if (!isset($http_response_header)) throw(new Exception("Can't connect"));  
print_r($http_response_header);  
echo $http_response_body;  

Leer más...

Migrando blog de pspemu

Tal y como hice con el blog que tenía de PHP, estoy trasladando las entradas del emulador de PSP a este blog. Imagino que en uno o dos días lo tendré listo.

Actualmente me es imposible continuar con el emulador a corto plazo. Tengo una serie de cosas pendientes que no pueden esperar más. La verdad es que me gustaría continuarlo y tengo unas ideas en mente bastante rompedoras que podrían mejorar el emulador siendo HLE una barbaridad, especialmente en máquinas nuevas con diversos cores. Serán cambios drásticos, así que haré uso del unittesting y del TDD para hacerlos y avanzar.

Sin duda lo haré, pero dentro de algún tiempo.

Leer más...

Flash: Pixel Bender 3D (ejecutándose en GPUs)

Aunque esta noticia tiene ya casi un mes, yo me enteré hará un par de días.

Todos los que probamos en su día el Pixel Bender en flash nos llevamos una gran desilusión viendo lo lento que podía llegar a ser. Resulta que los shaders de Pixel Bender en flash se ejecutan en la CPU, y eso hace que sean muy lentos y desaconsejables en la mayoría de los casos. Siguen siendo muy útiles en Photoshop y After Effects, donde sí se ejecutan en la GPU con resultados fantásticos y posibilidad de crear efectos personalizados con mucha facilidad.

Pues resulta que el problema de ejecución en CPU se va a solucionar muy pronto.  Anunciaron el Pixel Bender 3D. Shaders por fin en la gráfica, y aplicables a la nueva API 3D de flash.
http://blogs.adobe.com/kevin-goldsmith/2010/10/video-from-my-pixel-bender-3d-sneak-peak.html

Yo cojo la noticia con mucha ilusión, porque pronto se podrán tener efectos muy cañeros tanto en flash con el API 3D y Pixel Bender como con HTML5 y su WebGL que ya empieza a vislumbrarse en las releases normales de los navegadores. Y eso es algo bueno para todos: usuarios y desarrolladores.

Leer más...

PHP: Rendimiento entre versiones incluyendo PHP 5.4 (SVN)

Lo primero, voy a poner un enlace para compilar PHP en windows: http://wiki.php.net/internals/windows/stepbystepbuild

Ahí explica todo lo necesario para compilarlo con herramientas gratuitas (Visual Studio Express).

Lo primero que voy a probar es la velocidad de los loops con el siguiente código:

PHP4:

$start = array_sum(explode(' ', microtime()));  
for ($n = 0; $n < 10000000; $n++) { }  
$end = array_sum(explode(' ', microtime()));  
printf('%.3f', $end - $start);  

PHP5:

$start = microtime(true);  
for ($n = 0; $n < 10000000; $n++) { }  
$end = microtime(true);  
printf('%.3f', $end - $start);  

Leer más...

Kawagames.com

Desde hace bastantes meses he estado desarrollando junto a mi amigo Mandanga una web de distribución de juegos Indie. Esa web es Kawagames.com.

Y me enorgullece mucho poder decir que ya está abierta al público.

La web nace con el objetivo de dar a conocer juegos Indie (juegos hechos por aficionados), de facilitar su distribución y venta en un futuro, desarrollo de juegos interno, así como de traducir algunos juegos de gran calidad.

Leer más...

Suscribirse via RSS