Entradas con la etiqueta ‘php’

AS3 – Enviar Datos en Raw a un JSON

Publicado por Iván Gajate el 4 de noviembre de 2011 en AS3, Flash | 15 comentarios »

En lugar de enviar los datos en forma de variable a un PHP, podemos enviarlos en la propia llamada al archivo, para leer luego los datos en bruto (“raw”). Esto se suele utilizar para cargar imágenes, pero también puede usarse con variables de texto, o JSON como en este caso.

La diferencia es que no le asigno el valor de lo que quiero enviar a ninguna variable, sino que se lo asigno directamente al data del URLRequest:

var req:URLRequest = new URLRequest("http://localhost/leer_raw.php");
req.method = URLRequestMethod.POST;

var usu1:Object = {nombre:"Iván"};
var usu2:Object = {nombre:"Pepe"};
var usu3:Object = {nombre:"Matías"};

var usuarios:Array = [usu1, usu2, usu3];

// Codifico el Array en formato JSON
var json:String = JSON.encode(usuarios);

// Le asigno esos datos directamente al data del request.
req.data = json;

var loader:URLLoader = new URLLoader();
loader.load(req);

En el PHP puedo acceder al raw de datos directamente y asignárselo a una variable.

<?php
	// Accedo al RAW de datos directamente,
	// no a una variable con un nombre y un valor
	$datos = file_get_contents("php://input");
	// Decodifico los datos JSON para tratarlos como un Array
	$json = json_decode($datos, true);
	echo('nombre=' . $json[0]['nombre']);
?>

Nota: Hay que subir el ejemplo a un servidor que interprete PHP para poder ver los resultados.

Descargar Ejemplo.

AS3 – Enviar Variables JSON a un PHP

Publicado por Iván Gajate el 3 de noviembre de 2011 en AS3, Flash | 15 comentarios »

Es bastante sencillo, pero hay que tener ciertas precauciones con el PHP.

El envío de variables es similar a cualquier otro envío, salvo que las variables las enviado codificadas en formato JSON con la librería as3corelib. Simplemente ponerla al lado de nuestro .fla y hacer la carga normal.

var req:URLRequest = new URLRequest("http://localhost/leer_variables.php");
req.method = URLRequestMethod.POST;

var usu1:Object = {nombre:"Iván"};
var usu2:Object = {nombre:"Pepe"};
var usu3:Object = {nombre:"Matías"};

var usuarios:Array = [usu1, usu2, usu3];

// Codifico el Array con formato JSON
var json:String = JSON.encode(usuarios);

// Creo las variables del URLRequest
var vars:URLVariables = new URLVariables();
vars.usuarios = json;
req.data = vars;

var loader:URLLoader = new URLLoader();
loader.load(req);

En el PHP se recogen como una variable normal, con la precaución de utilizar stripslashes, pues por defecto nuestro servidor nos truncará las comillas (“)a barra comillas (\”)

<?php
	// Si se tiene magic_quotes_gpc = On en el "php.ini", esta linea es necesaria
	$datos = stripslashes($_POST['usuarios']);
	//
	$json = json_decode($datos, true);
	// Puedo acceder a los datos como cualquier otro Array
	echo('nombre=' . $json[0]['nombre']);
?>

Nota: Hay que subir el ejemplo a un servidor que interprete PHP para poder ver los resultados.

Descargar Ejemplo.

PHP – Escribir un XML con CDATA Usando SimpleXML

Publicado por Iván Gajate el 26 de abril de 2011 en Desarrollo Web | 14 comentarios »

Si usamos la fantástica librería de PHP SimpleXML para leer y construir xml, nos habremos dado cuenta que no tiene soporte para meter datos en etiquetas CDATA, lo cual es un engorro.

Tras mucho buscar, he encontrado este truco que soluciona el problema 🙂

Consiste en extender la clase SimpleXml para ampliarla con DOM, que sí tiene soporte para CDATA, y devuelve un objeto SimpleXML 🙂

Así, si nos creamos una clase “SimpleXMLExtended.php

<?php
	class SimpleXMLExtended extends SimpleXMLElement {
	  public function addCDATA($cData) {
	    $node = dom_import_simplexml($this);
	    $no = $node->ownerDocument;
	    $node->appendChild($no->createCDATASection($cData));
	  }
	}
?>

Podemos crear un XML así:

<?php
	Header('Content-type: text/xml;  charset=utf-8'); 

	require_once('SimpleXMLExtended.php');

	$miXML = new SimpleXMLExtended('<?xml version="1.0" encoding="UTF-8"?><usuario></usuario>');
	$nombre = $miXML->addChild('nombre');
	$nombre->addCData('Iván Gajate');
	echo $miXML->asXML();
?>

Y devolverá esto:

<?xml version="1.0" encoding="UTF-8"?>
<usuario>
	<nombre><![CDATA[Iván Gajate]]></nombre>
</usuario>

Nunca digas nunca jamás

Publicado por Iván Gajate el 3 de diciembre de 2008 en Flash | 17 comentarios »

Y es que a veces soy un poco bocazas.

Siempre decía que no me hacía falta para nada tener un servidor local para trabajar, que yo era programador front, y que eso era para PHPeros… pues después de que mi compañero Isra me animase a hacerlo, anoche lo instalé en local, con el wordpress, los plugins y la misma base de datos que tengo online… fantástico. No se como he podido vivir hasta ahora sin un localhost 😉

Fué realmente sencillo, instalas el WAMP (Windows Apache MySQL PHP) o el MAMP en Mac (y es que en el trabajo tengo un Mac, otra cosa que dije que nunca haría… voy a borrar esa palabra de mi mente…).

Dando siguiente, siguiente, siguiente te deja todo instalado y configurado, PHP, la bbdd MySQL y el servidor Apache.

Luego puedes gestionar la bbdd desde el propio apache, o instalar un cliente de bbdd como el Navicat, que permite crear tablas, sincronizarlas, sentencias SQL… lo hace todo mucho mas fácil.

Y ya puedes ponerte a trastear con PHP sin miedo de romper nada en servidor :))

Esto hace que pueda trabajar sin depender de nadie de back-end, al menos para cosas básicas… hasta el infinito…y más allá!! 😉