Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [curl] Przesyłanie tablic wielowymiarowych metodą POST
Forum PHP.pl > Forum > PHP
Athlan
Problem dotyczy CURL'a. Mam tabliczkę:

  1. <?php
  2. $this->_aDataPost = array('test' => array('test' => array('test' => array('test' => 'a'))));
  3. ?>


Wysyłam ją po czym w dumpie $_POST otrzymuje:

Kod
array(1) { ["test"]=> string(5) "Array" }


CURL nie przekazuje podtablic drugiego poziomu?

Zaserializeować danych też nie mogę, bo przy stringach UTF-8 jest bug i zwraca false.

-- EDIT --

W specyikacji HttpRequest też jest takie coś:
Cytat
Associative array of POST values

http://www.php.net/manual/pl/function.http-post-fields.php
Czyli ni wałka przesłać tych danych sad.gif
sf
Jeśli przesyłałem dane curlem to i tak musiałem stworzyć ciąg bo tablicy nigdy mi nie przyjmował.

Tutaj masz coś co może pomoże: http://pl2.php.net/http_build_query
Athlan
Czytamy (http://php.net/http):

Cytat
Wstęp

Te funkcje pozwalają operować na danych wysyłanych do przeglądarki internetowej, bezpośrednio na poziomie protokołu HTTP.
Wymagania

Do zbudowania tego rozszerzenia nie są wymagane żadne zewnętrzne biblioteki.
Instalacja

By używać tych funkcji, nie trzeba niczego instalować. Są one częścią jądra PHP.
Konfiguracja uruchomieniowa

To rozszerzenie nie definiuje posiada żadnych dyrektyw konfiguracyjnych w pliku php.ini.


Wchodzimy w specyfikację funkcji: http://www.php.net/manual/pl/function.http-get.php

I czytamy:
Cytat
PECL pecl_http:0.1.0-1.4.1


Dobra, nie trzeba nic instalować ale jednak trzeba. No to łat da fak? Nie przejmuąc się czytamy:

Cytat
Fatal error: Call to undefined function http_post_data() in


Co Wy na to snitch.gif
qqrq
Dżizas, i po co tak kombinujesz? Chcesz przesłać jakąś tablicę wielowymiarową POST-em, czy GET-em (nawey niekoniecznie przy pomocy cURL-a), to traktujesz ją serialize + urlencode i wpychasz do zmiennej POST lub GET.
Sedziwoj
Z komentarzy do curl_setopt" title="Zobacz w manualu PHP" target="_manual
<?php
function data_encode($data, $keyprefix = "", $keypostfix = "") {
assert( is_array($data) );
$vars=null;
foreach($data as $key=>$value) {
if(is_array($value)) $vars .= data_encode($value, $keyprefix.$key.$keypostfix.urlencode("["), urlencode("]"));
else $vars .= $keyprefix.$key.$keypostfix."=".urlencode($value)."&";
}
return $vars;
}

curl_setopt($ch, CURLOPT_POSTFIELDS, substr(data_encode($_POST), 0, -1) );

?>
Athlan
Użyłem serialize i base64. Wszystko ładnie śmiga smile.gif

Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.