Posts Tagged ‘PHP’

Escribir en un archivo usando cURL

Septiembre 3rd, 2008

Existe una librería llamada libcurl en PHP la cual te permite usar sesiones cURL para realizar conexiones por HTTP, FTP y demás.

Esta librería se usar normalmente para acceder a una página web donde hay un formulario (realizar una conexión HTTP y mandar datos por le método POST). Por ejemplo, usando cURL puedes comentar en statuesque.es sin estar navegando por ella. Por eso se ponen los famosos captcha. Para que una máquina no pueda poner un comentario, por ejemplo.

Pues bien, hace poco me hicieron programar una función que pudiera escribir una cadena de texto en un archivo .xml pero me pusieron como condición no usar la función que tiene PHP para ello (fwrite()). Empecé a documentarme sobre cURL y aparte de abrírseme un mundo de posibilidades encontré una manera de hacerlo. Probablemente existan mejores formas para escribir en un archivo con cURL pero a mi solo se me ha ocurrido esta, si tienes alguna mejora puedes comentar que ten por seguro que la tendré en cuenta.

Ahora vamos al tema. Para usar la función hacen falta dos archivos: el archivo save.php que es el que tiene la función escrita y el archivo temp.php que es un archivo que usa la función.

En el archivo save.php escribiremos lo siguiente:

function curl_write($filename, $content) {
$path = 'http://' . $_SERVER['SERVER_NAME'] . substr($_SERVER['PHP_SELF'], 0, strlen($_SERVER['PHP_SELF']) - strlen(’save.php’)) . ‘temp.php’; //Para que reconozca solo la ruta. SIEMPRE que el .htaccess no haga de las suyas


$fp = fopen('./' . $filename, "w");
chmod('./' . $filename, 0777); //Aquí dale los permisos que quieras que tenga el archivo. Ahora todo el mundo puede cambiar su información.
$curl = curl_init(); //Inicializo la sesión cURL
curl_setopt($curl, CURLOPT_URL, $path); //Descargo el archivo con el contenido a escribir
curl_setopt($curl, CURLOPT_FILE, $fp); //Configuro la salida por defecto al archivo $fp
curl_setopt($curl, CURLOPT_HEADER, false); //Que no devuelva las cabeceras
curl_setopt($curl, CURLOPT_POST, true); //Para realizar una petición HTTP con el método POST
curl_setopt($curl, CURLOPT_POSTFIELDS, 'text=' . urlencode($content)); //Contenido de POST

if(curl_exec($curl)) //Ejecuto la conexión
$exito = true;

else
$exito = false;

curl_close($curl); //Cierro la conexión
fclose($fp); //Cierro el archivo

return $exito;
}

Y en el archivo temp.php escribiremos lo siguiente:
$texto = $_POST['text'];

echo $texto;

La función lo que hace es aprovecharse de que tú puedes poner como salida por defecto de una conexión un archivo de texto. Entonces realizamos una conexión a nuestro archivo temp.php y le pasamos por POST la variable text. El archivo temp.php lo que hace es sacar como contenido el valor de la variable text que le pasen por POST.

Una vez realizada la conexión a temp.php y devuelto el valor de la variable text se escribe en el archivo que le hayamos pasado y cerramos tanto la sesión cURL como el archivo que hemos abierto para escribir.

Un dato importante es que temp.php y save.php tienen que estar en el mismo directorio (o si cambias el directorio cambia también la variable $path para indicar donde se encontrará el archivo temp.php)

Un ejemplo de uso podría ser:

curl_write('diario.txt', 'Querido diario. He estado pensando y... ');

Puedes conseguir curl_write.rar aquí [rar].

Espero que os sea útil! Un saludo a todos!

¿Qué necesita un programador de PHP?

Mayo 9th, 2006

Cuando yo me pongo frente a la pantalla a trabajar necesito una serie de programas indispensables y unos cuantos links que me hacen la vida mucho más fácil a la hora de solucionar problemas o mejorar aspectos de mi programa.

En mi caso (si, soy un pijo) necesito que la síntaxis del código esté coloreada y también necesito que cuando escribo una función salga una ayuda que me indique el orden de los argumentos de dicha función. Para ello he encontrado este pedazo de programa (Gracias Vicente!). El programa se llama PHP Expert Editor y cumple todo lo que cualquier programador necesita. Si además le sumas que es GNU hace que sea una pedazo de elección.

Otra opción que me han comentado mucho es Notepad++ que parece un editor sencillo, ligero y que cumple las dos funciones que a mi me chiflan. Que autocomplete funciones y que coloree la síntaxis. Además la web está curiosa. Yo no he probado este programa pero según han comentado es el mejor en cuanto a sencillez de interfaz. Además este si que es GNU :P

Para los linuxeros está el vim que tanto comentan pero si quereis algo más gráfico podeis encontrarlo en Quanta o Bluefish.
MySQL Front también es una muy buena herramienta para gestionar las bases de datos. Muy intuitiva y rápida.

Luego está el programa para diseñar bases de datos más o menos complicadas que se llama DB Designer. Este programa está muy bien porque puedes crear bases de datos “visualmente”, cruzarlas, combinar claves primarias, etc. Además el propio programa sincroniza la base de datos que tienes diseñada con la base de datos del servidor. No he encontrado el sitio oficial pero se puede descargar desde aquí.

También está el plugin para Firefox por excelencia para los programadores/diseñadores web. IE Tab consiste en un pequeño icono al lado del de GMail Notifier con el cual puedes ver las webs tal y como se verían en Internet Explorer pero sin tener que cambiar de navegador (solo para Windows). Muy útil para darnos cuenta de todos los errores que el señor Internet Explorer nos da en nuestros diseños.

Hay otro plugin para Mozilla Firefox que es el Web Developer Toolbar. Este plugin incorpora una barra horizontal en el navegador con muchas opciones y muy útiles para ver un poco más “a fondo” las webs (subrayar las celdas, desvincular CSS, desactivar JS, etc.)

También me acaban de comentar un debugger que parece que está bien. Personalmente no puedo aportar ningún comentario sobre él ya que no uso debuggers. El programa en cuestión se llama DBG y parece que está bien.
Por último están los enlaces muy útiles para desarrollar cualquier sitio web:

El primero es, obviamente, PHP.net
El siguiente es PHP-Hispano.net

Por último, como siempre, Mr. Google

Eso es todo por hoy, espero que os haya sido útil para desarrollar vuestras páginas web :)

Actualización: Gracias a Anieto2k por esta lista de programas en MySQL