[ Milos911 @ 28.04.2011. 10:51 ] @
Treba da prosledim jednom fajlu post data (ne direktno, nego moram sam da generisem string koji saljem), i nikako da se snadjem kako to da uradim. Svaki tutorial prvo extractuje post, pa ga onda procesira. Posto ja ne saljem podatke direktno posle posta, moram sam da generisem string. Ono sto mi nije jasno je:
Code:

curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
Zasto moram da saljem ovaj prvi info? I jel moze neko da mi da primer stringa koji mogu da posaljem sa ovim postfields (da kazemo da su polja koja hocu da posaljem ime i prezime?

Valjda ste me razumeli :)
[ vatri @ 28.04.2011. 11:44 ] @
Ovo prvo moras izvrsiti isto kao npr. u HTML-u mora staviti method="post" u form tag i pravilno je da je boolean tip (true ili false, ili recimo 1 ili 0)
http://php.net/manual/en/function.curl-setopt.php

$fields_string pravis u ovom obliku:

"name=marko&surname=markovic"

Pogledaj i ovu funkciju, vjerovatno je lakse sa njom nego sa foreach ;)

http://php.net/manual/en/function.http-build-query.php
[ Br@nkoR @ 28.04.2011. 12:45 ] @
Preuzeto sa http://www.php.net/manual/en/function.curl-exec.php#98628
Code (php):
/**
 * Send a POST requst using cURL
 * @param string $url to request
 * @param array $post values to send
 * @param array $options for cURL
 * @return string
 */

function curl_post($url, array $post = NULL, array $options = array())
{
    $defaults = array(
        CURLOPT_POST => 1,
        CURLOPT_HEADER => 0,
        CURLOPT_URL => $url,
        CURLOPT_FRESH_CONNECT => 1,
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_FORBID_REUSE => 1,
        CURLOPT_TIMEOUT => 4,
        CURLOPT_POSTFIELDS => http_build_query($post)
    );

    $ch = curl_init();
    curl_setopt_array($ch, ($options + $defaults));
    if( ! $result = curl_exec($ch))
    {
        trigger_error(curl_error($ch));
    }
    curl_close($ch);
    return $result;
}
[ Milos911 @ 28.04.2011. 20:02 ] @
^to mi je malo tesko da ukapiram :)

Citat:
vatri: Ovo prvo moras izvrsiti isto kao npr. u HTML-u mora staviti method="post" u form tag i pravilno je da je boolean tip (true ili false, ili recimo 1 ili 0)
http://php.net/manual/en/function.curl-setopt.php

Cek, a sto ga ovaj onda broji? Jel mogu onda samo da stavim true i to je to?

Citat:
vatri:
$fields_string pravis u ovom obliku:

"name=marko&surname=markovic"

Pogledaj i ovu funkciju, vjerovatno je lakse sa njom nego sa foreach ;)

http://php.net/manual/en/function.http-build-query.php

Ko sisa foreach, ni za ich mi nije potreban. Podatke vucem iz baze, samo mi nije bilo jasno kako da formatiram fields_string.

Sad mi nije jasno ovo:) :
Ako uradim
Code:
print_r($_POST) dobijem Array ( [email] => cvetko.liva [first_name] => Milos [site_id] => 4 [campaign_id] => 3 [api_key] => gfdg )
i ako ovo posaljem stranici koja treba da procesira podatke, dobijem odgovor da je sve ok. Kako moze da radi i to, i "name=marko&surname=markovic"? Mislim, jel php prepoznaje i jedan i drugi format post-a, ili?
[ vatri @ 28.04.2011. 20:24 ] @
Broji ga mozda zato sto je brze. PHP 0 vidi i kao false, a 1,2,3,4,itd - kao true, tako da i ovo njegovo radi.

Curl izgleda prepoznaje i obicni i array i oblik koji sam ja naveo - to nisam znao do sad :)

Evo ti sa linka (koji sam gore vec postavio) objasnjenje:

"The full data to post in a HTTP "POST" operation. To post a file, prepend a filename with @ and use the full path. The filetype can be explicitly specified by following the filename with the type in the format ';type=mimetype'. This parameter can either be passed as a urlencoded string like 'para1=val1&para2=val2&...' or as an array with the field name as key and field data as value. If value is an array, the Content-Type header will be set to multipart/form-data. As of PHP 5.2.0, files thats passed to this option with the @ prefix must be in array form to work."

Ukratko mozes i array i string proslijediti.
[ Milos911 @ 30.04.2011. 00:22 ] @
Uspeo sam da podesim. Hvala na pomoci :) I inace stvarno je mnogo lakse napraviti ovo koristeci http://php.net/manual/en/function.http-build-query.php
[ Br@nkoR @ 30.04.2011. 09:14 ] @
Ne moraš da koristiš funkciju http_build_query() napisao si gore, a takođe i korisnik @vatri.