lo estoy probando con fsockopen()
he encontrado un código navegando por el foro y lo he intentado adaptar a lo que necesito...
tengo el script (llamado prueba.php) así:
Código PHP:
// Funcion que intenta enviar una serie da valores mediante el método
// POST a un documento web en particular. Recibe, en orden: (a) el
// nombre del servidor con el que se va a realizar la conexion (p.
// ej. 'www.servidor.com', o '127.0.0.1'), (b) la ruta hacia el
// documento web al que le van a ser pasados los valores
// (p. ej. '/cgi-bin/script.cgi') y (c) una matriz asociativa con los
// valores a pasar. Las claves de esta matriz seran usadas como
// nombres de variables y los valores como valores de cada variable.
// Esta funcion podria implementar mas chequeos, pero en terminos
// generales, suele devolver TRUE cuando la informacion es enviada
// exitosamente, y FALSE de lo contrario.
function enviar_metodo_post ($servidor, $ruta, $matriz)
{
$contenido = '';
$primer = true; // Bandera que indica si se esta procesando la
// primera pareja clave/valor de la matriz
// recibida
while (list ($clave, $valor) = each ($matriz)) {
if (! $primer)
$contenido .= '&';
else
$primer = false;
$contenido .= urlencode ($clave) . '=' . urlencode ($valor);
}
$socket = fsockopen ($servidor, 80); // Conexion por el puerto 80
if (!$socket) {
trigger_error ('No fue posible abrir la conexion con el servidor');
return false;
}
// Enviar cabeceras HTTP
fwrite ($socket, "POST $ruta HTTP/1.0\n");
fwrite ($socket, "User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)\r\n");
fwrite ($socket, "Content-type: application/x-www-form-urlencoded\n");
fwrite ($socket, "Content-length: " . strlen ($contenido) . "\n\n");
// Enviar el contenido de las variables
fwrite ($socket, $contenido);
fclose ($socket);
return true;
}
$variables = array ('loginname' => 'nombredeusuario', 'password' => 'estoeslacontrasena', 'action' => 'login', 'Submit' => 'ENTRAR');
$resultado = enviar_metodo_post ('xxx.xxx.xxx.155',
'/Common/default.asp',
$variables);
header("Location: http://xxx.xxx.xxx.155/Common/hrf.asp");
Voy al script http://localhost/prueba.php y cuando se redirecciona a la página donde se descarga el archivo, me da un error como si no me hubiese "logueado" sin embargo, si en la misma ventana vuelvo a ejecutar el script, aparece la descarga, es decir, la segunda vez funciona...
pfff, ¿como podría arreglarlo praa que funcione a la primera?