FAQ
Hola Listeros:

Estoy tratando de tomar el resultado de un post via https para parsearlo,
les muestro las alternativas que probé, cada una con sus problemas, a ver si
a alguno se le ocurre algo:

1)
<?php
$ch=curl_init("https://www.puentenet.com/prueba_remote_post.php");
$fp = fopen("/archivo_txt.txt","w");
curl_setopt($ch,CURLOPT_FILE,$fp);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_POST,"a=1&b=2");
curl_close($ch);
fclose($fp);

Nunca usé curl, pero supongo que esto debería traerme el contenido de
prueba_remote_post.php y ponerlo en archivo_txt.txt. El tema es que tengo
los reportes de error para que me muestre cualquier error, pero ni me
muestra en archivo_txt.txt el contenido de
https://www.puentenet.com/prueba_remote_post.php , ni me da ningún error.


2) Encontré esta función para tomar un post a HTTP. Esta tanto en el
histórico de la lista como en el amigo google:

<?php
function PostToHost($host, $path, $data_to_send) {
$fp = fsockopen($host,80);
fputs($fp, "POST $path HTTP/1.1\n");
fputs($fp, "Host: $host\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\n");
fputs($fp, "Content-length: ".strlen($data_to_send)."\n");
fputs($fp, "Connection: close\n\n");
fputs($fp, $data_to_send);
while(!feof($fp)) {
$cad.= fgets($fp, 128);
}
fclose($fp);
return $cad;
}

La cual funciona bien para un http, pero obviamente no soporta https. Probé
cambiarle el port al cual hace fsockopen por 443, pero no hay caso, no abre
nunca el socket, y además es evidente que los post sobre ssl deberían ser
distintos (Supongo que hay variaciones en el protocolo, aunque todavía no
leí las rfc). Vi que Pablo Godel envió a la lista la biblioteca que esta en
http://phpclasses.upperdesign.com/browse.html/package/3 , pero funciona
sobre el mismo principio y tampoco abre el socket.

Desde ya, muchisimas gracias por su ayuda.

Pablo E. Siciliano
Depto. técnico
PuenteNet.com
tel: 4329-0137

Search Discussions

  • Pablo A. Godel at Feb 27, 2003 at 7:33 pm
    Pablo,

    La opcion 2 solo funcionara con http y nunca lo hara con https ya que
    requiere la encriptacion de los datos.

    La opcion 1 solo funcionaria si tenes curl compilado en php, y ademas curl
    tiene que tener soporte para SSL, Fijate bien esto.

    Para que curl te devuelva el contenido de la pagina yo lo haria de la
    siguiente forma, en vez de guardarlo directamente a un archivo, yo lo
    pondria en una variable de php, verificaria que la variable sea llenada con
    el contenido de la pagina, y luego lo guardaria.
    Esto lo harias de la siguiente forma:

    <?php

    $ch=curl_init("https://www.puentenet.com/prueba_remote_post.php");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch,CURLOPT_HEADER,0);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_VERBOSE, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, "a=1&b=2");
    $html_content = curl_exec($ch);

    ?>

    No te olvides de hacer el curl_exec() porque sino no se conectara. En la
    variable html_content tendras el contenido de la pagina remota.

    probalo asi que deberia funcionar,

    Saludos,
    Pablo Godel


    ----- Original Message -----
    From: "Pablo E. Siciliano" <psiciliano@puentenet.com>
    To: <lista@phpes.com>
    Sent: Thursday, February 27, 2003 2:21 PM
    Subject: [PHP-ES] resultado de un post por https

    Hola Listeros:

    Estoy tratando de tomar el resultado de un post via https para parsearlo,
    les muestro las alternativas que probé, cada una con sus problemas, a ver si
    a alguno se le ocurre algo:

    1)
    <?php
    $ch=curl_init("https://www.puentenet.com/prueba_remote_post.php");
    $fp = fopen("/archivo_txt.txt","w");
    curl_setopt($ch,CURLOPT_FILE,$fp);
    curl_setopt($ch,CURLOPT_HEADER,0);
    curl_setopt($ch,CURLOPT_POST,"a=1&b=2");
    curl_close($ch);
    fclose($fp);

    Nunca usé curl, pero supongo que esto debería traerme el contenido de
    prueba_remote_post.php y ponerlo en archivo_txt.txt. El tema es que tengo
    los reportes de error para que me muestre cualquier error, pero ni me
    muestra en archivo_txt.txt el contenido de
    https://www.puentenet.com/prueba_remote_post.php , ni me da ningún error.


    2) Encontré esta función para tomar un post a HTTP. Esta tanto en el
    histórico de la lista como en el amigo google:

    <?php
    function PostToHost($host, $path, $data_to_send) {
    $fp = fsockopen($host,80);
    fputs($fp, "POST $path HTTP/1.1\n");
    fputs($fp, "Host: $host\n");
    fputs($fp, "Content-type: application/x-www-form-urlencoded\n");
    fputs($fp, "Content-length: ".strlen($data_to_send)."\n");
    fputs($fp, "Connection: close\n\n");
    fputs($fp, $data_to_send);
    while(!feof($fp)) {
    $cad.= fgets($fp, 128);
    }
    fclose($fp);
    return $cad;
    }

    La cual funciona bien para un http, pero obviamente no soporta https. Probé
    cambiarle el port al cual hace fsockopen por 443, pero no hay caso, no abre
    nunca el socket, y además es evidente que los post sobre ssl deberían ser
    distintos (Supongo que hay variaciones en el protocolo, aunque todavía no
    leí las rfc). Vi que Pablo Godel envió a la lista la biblioteca que esta en
    http://phpclasses.upperdesign.com/browse.html/package/3 , pero funciona
    sobre el mismo principio y tampoco abre el socket.

    Desde ya, muchisimas gracias por su ayuda.
  • Pablo E. Siciliano at Feb 27, 2003 at 9:42 pm
    Muchas gracias, Pablo. Pruebo lo que me sugeriste de curl y te cuento.
    Supongo que voy a encarar por ahí mientras este con el apuro de terminarlo.
    Espero tener tiempo dentro de poco para leer las rfc y ver todo lo que
    implica hacer algo como la opción 1) sobre SSL, y quizas modificar la clase
    que habias posteado antes.

    ----- Original Message -----
    From: "Pablo A. Godel" <pablo@godel.com.ar>
    To: <lista@phpes.com>
    Sent: Thursday, February 27, 2003 4:40 PM
    Subject: Re: [PHP-ES] resultado de un post por https

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-general-es @
categoriesphp
postedFeb 27, '03 at 7:08p
activeFeb 27, '03 at 9:42p
posts3
users2
websitephp.net

People

Translate

site design / logo © 2022 Grokbase