497 votos

PHP + curl, POST de HTTP de código de ejemplo?

Puede que alguien me muestre cómo hacer un php curl con un HTTP POST?

Quiero enviar datos como este:

username=user1, password=passuser1, gender=1

A www.domain.com

Espero que el curl para devolver una respuesta como result=OK. ¿Hay algún ejemplo?

854voto

miku Puntos 63392

Usted encontrará php/curl ejemplos aquí: http://curl.haxx.se/libcurl/php/examples/, especialmente http://curl.haxx.se/libcurl/php/examples/simplepost.html


<?php
//
// A very simple PHP example that sends a HTTP POST to a remote site
//

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,"http://www.mysite.com/tester.phtml");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
            "postvar1=value1&postvar2=value2&postvar3=value3");

// in real life you should use something like:
// curl_setopt($ch, CURLOPT_POSTFIELDS, 
//          http_build_query(array('postvar1' => 'value1')));

// receive server response ...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$server_output = curl_exec ($ch);

curl_close ($ch);

// further processing ....
if ($server_output == "OK") { ... } else { ... }

?>

32voto

Eric Leschinski Puntos 14289

Un vivo ejemplo de la utilización de php curl_exec hacer un HTTP post:

Poner esto en un archivo llamado foobar.php:

<?php
  $ch = curl_init();
  $skipper = "luxury assault recreational vehicle";
  $fields = array( 'penguins'=>$skipper, 'bestpony'=>'rainbowdash');
  $postvars = '';
  foreach($fields as $key=>$value) {
    $postvars .= $key . "=" . $value . "&";
  }
  $url = "http://www.google.com";
  curl_setopt($ch,CURLOPT_URL,$url);
  curl_setopt($ch,CURLOPT_POST, 1);                //0 for a get request
  curl_setopt($ch,CURLOPT_POSTFIELDS,$postvars);
  curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch,CURLOPT_CONNECTTIMEOUT ,3);
  curl_setopt($ch,CURLOPT_TIMEOUT, 20);
  $response = curl_exec($ch);
  print "curl response is:" . $response;
  curl_close ($ch);
?>

A continuación, ejecutarlo con el comando php foobar.php, se vuelca este tipo de salida a pantalla:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Title</title>

<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
<body>
  A mountain of content...
</body>
</html>

Así que hice un POST para PHP www.google.com y envió algunos datos.

Tenía el servidor sido programado para leer en el post de las variables, podría decidir hacer algo diferente que se basa en.

6voto

Anthony Puntos 14424

Si está utilizando el formulario de redirecciones, autenticación, cookies, SSL (https), o otra cosa que una totalmente abierta script esperando variables POST, va a iniciar la nashing los dientes muy rápido. Echa un vistazo a Snoopy, que hace exactamente lo que usted tiene en la mente, mientras que la eliminación de la necesidad de establecer una gran cantidad de la sobrecarga.

3voto

user2532795 Puntos 11

Una simple respuesta SI se pasa la información a tu propio sitio web es el uso de una variable de SESIÓN. Comienzan página php con:

session_start();

Si en algún momento hay de la información que se desea generar en PHP y pasar a la página siguiente en la sesión, en lugar de utilizar una variable POST, asignar a una variable de SESIÓN. Ejemplo:

$_SESSION['message']='www.'.$_GET['school'].'.edu was not found.  Please try again.'

A continuación en la siguiente página usted simplemente hacer referencia a esta variable de SESIÓN. NOTA: después de cada uso, asegúrese de que la destruyen, así que no persisten después de que se utiliza:

if (isset($_SESSION['message'])) {echo $_SESSION['message']; unset($_SESSION['message']);}

3voto

Azi Puntos 2421

Aquí están algunas repetitivo de código para PHP + curl http://www.webbotsspidersscreenscrapers.com/DSP_download.php

incluir en estos biblioteca de simplificar el desarrollo

<?php
# Initialization
include("LIB_http.php");
include("LIB_parse.php");
$product_array=array();
$product_count=0;

# Download the target (store) web page
$target = "http://www.tellmewhenitchanges.com/buyair";
$web_page = http_get($target, "");
    ...
?>

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X