/** * Arrays are walked through using the key as a the name. Arrays * of Arrays are emitted as repeated fields consistent with such things * as checkboxes. * * @desc Return data as a post string. * @param mixed by reference data to be written. * @param string [optional] name of the datum. * @access public */ function &asPostString(&$theData, $theName = NULL) { $thePostString = ''; $thePrefix = $theName; if (is_array($theData)) { foreach ($theData as $theKey => $theValue) { if ($thePrefix === NULL) { $thePostString .= '&' . curl::asPostString($theValue, $theKey); } else { $thePostString .= '&' . curl::asPostString($theValue, $thePrefix . '[' . $theKey . ']'); } } } else { $thePostString .= '&' . urlencode((string) $thePrefix) . '=' . urlencode($theData); } $xxx =& substr($thePostString, 1); return $xxx; }
<?php include_once "class.curl.php"; // // Create a new instance of the curl class and point it // at the page to be fetched. // $c = new curl("http://www.csworks.com/development/dumpState.php"); // // By default, curl doesn't follow redirections and this // page may or may not be available via redirection. // $c->setopt(CURLOPT_FOLLOWLOCATION, true); $c->setopt(CURLOPT_POST, true); $theFields = array('foo' => '1', 'bar' => array(2, 3, 4), 'baz' => array(array(5, 6), array(7, 8))); $c->setopt(CURLOPT_POSTFIELDS, $c->asPostString($theFields)); // // By default, the curl class expects to return data to // the caller. // echo $c->exec(); // // Check to see if there was an error and, if so, print // the associated error message. // if ($theError = $c->hasError()) { echo $theError; } // // Done with the cURL, so get rid of the cURL related resources. //