Ver Mensaje Individual
  #6 (permalink)  
Antiguo 18/09/2003, 16:33
berilo
 
Fecha de Ingreso: enero-2002
Mensajes: 94
Antigüedad: 22 años, 2 meses
Puntos: 0
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 ($servidor80);  // 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?