Siempre que allow_url_fopen esté
habilitado en php.ini, se pueden usar URLs HTTP y FTP con la
mayoría de las funciones que toman un archivo como
parámetro. Además URLs pueden ser usadas con
include(), include_once(),
require() y
require_once(). Consultar Apéndice L para más información sobre los
protocolos soportados por ???.
Nota:
En PHP 4.0.3 y versiones anteriores, para usar envolturas URL,
habia que configurar PHP usando la opción de
configuración --enable-url-fopen-wrapper.
Por ejemplo, se puede usar este para abrir un archivo en un servidor
web remoto, analizar en la salida la información que se quiera,
y entonces, usar la información en una consulta a base de
datos, o simplemente para sacarlas en un estilo que coincida con el
resto de su sitio web.
Ejemplo 21-1. Obtener el título de una página remota
<?php $file = fopen ("http://www.example.com/", "r"); if (!$file) { echo "<p>Unable to open remote file.\n"; exit; } while (!feof ($file)) { $line = fgets ($file, 1024); /* This only works if the title and its tags are on one line */ if (eregi ("<title>(.*)</title>", $line, $out)) { $title = $out[1]; break; } } fclose($file); ?>
|
|
También se puede escribir a archivos en un servidor FTP
(siempre que se conecte como un usuario con los correctos derechos
de acceso). Solamente se pueden crear nuevos ficheros usando este
método; si se intenta sobreescribir un fichero ya existente,
la función fopen() fallará
Para conectar como un usuario distinto de 'anonymous', se necesita
especificar el nombre de usuario (y posiblemente contraseña)
dentro de la URL, tales como
'ftp://usuario:clave@ftp.ejemplo.com/camino/a/archivo'. (Se puede
usar la misma clase de sintaxis para acceder a archivos via HTTP
cuando se requería una autenticació de same sort of
syntax to access files via HTTP when they require Basic
authentication.)
Ejemplo 21-2. Almacenando datos en un servidor remoto
<?php $file = fopen ("ftp://ftp.example.com/incoming/outputfile", "w"); if (!$file) { echo "<p>Unable to open remote file for writing.\n"; exit; } /* Write the data here. */ fputs ($file, $_SERVER['HTTP_USER_AGENT'] . "\n"); fclose ($file); ?>
|
|
Nota:
Podeis creer por el ejemplo anterior, que podeis usar esta tecnica
para escribir en un fichero de registro remoto. Desgraciadamente
no funcionaria porque la llamada fopen()
fallaria si el fichero remoto existe. Para usar registros
distribuidos de esa manera podeis consultar la funcion
syslog().