Siempre que el soporte para la "envoltura URL fopen" esté
habilitado cuando se configura PHP (lo cual ocurre a menos que se
pasa explícitamente la opción
--disable-url-fopen-wrapper a configure (para versiones
hasta la 4.0.3), ó configurar como "off" el parámetro
allow_url_fopen en php.ini (para las nuevas versiones))
se pueden usar URLs HTTP y FTP con la mayoría de las funciones
que toman un archivo como parámetro, incluyendo las sentencias
require() e include().
Nota:
No se pueden usar archivos remotos en las sentencias
include() y require()
en Windows.
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 20-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 FTP siempre que
se conecte como un usuario con los correctos derechos de acceso,
y el archivo no exista ya.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 20-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, $HTTP_SERVER_VARS['HTTP_USER_AGENT'] . "\n");
fclose ($file);
?> |
|
Nota:
Podeis captar la idea en el ejemplo anterior de como escribir en
un registro remoto, pero como ya hemos comentado antes, solamente se
puede escribir a un fichero nuevo usando la "envoltura URL fopen"
Para registros distribuidos, consultar la función syslog().