Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Początki zabaw z curlem :)
kaszanka
post
Post #1





Grupa: Zarejestrowani
Postów: 138
Pomógł: 1
Dołączył: 17.02.2007

Ostrzeżenie: (0%)
-----


Hi,

Stawiam pierwsze kroki z curlem i już mam dylamaty, otóż, prosty skrypt który mi działa:

  1. <?php
  2. $post_fields = 'query[as]=a1&query[aa]=aaa1';
  3.           $ch = curl_init();
  4.           curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); //follow any redirects
  5.           curl_setopt($ch, CURLOPT_VERBOSE, 1);
  6.           curl_setopt($ch, CURLOPT_URL, "http://localhost/command.php");
  7.           curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //print response page
  8.           curl_setopt($ch, CURLOPT_POST, 1);
  9.           curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
  10.          $res = curl_exec($ch);
  11.          curl_close($ch);
  12. echo "<pre>"; print_r($res); echo "</pre>";
  13. ?>

Jednak, że docelowo curl ma być wykorzystywany na wielu podstronach jednego serwisu chce opcję połączenia curla wstawić w funkcję i ją do pliku function.php a na pod stronach tylko się do niej odwoływać:


  1. <?php
  2. function curl_send( $COMMAND,$URL="http://localhost/command.php" )
  3. {
  4.    $ch = curl_init();
  5.    curl_setopt($ch,CURLOPT_URL,$URL);
  6.    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
  7.    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  8.    curl_setopt($ch,CURLOPT_POST,1);
  9.    curl_setopt($ch,CURLOPT_USERAGENT,"client API");
  10.    curl_setopt($ch,CURLOPT_POSTFIELDS,$COMMAND);
  11.    curl_setopt($ch,CURLOPT_HEADER,0);
  12.    $response=curl_exec($ch);
  13. //    echo "$response<BR>";
  14.    curl_close($ch);
  15. }
  16. // poniższy kod będzie znajdował się na wielu podstronach lecz z inną zawartości "$post":
  17. $post = 'query[as]=a1&query[aa]=aaa1';
  18. $response = unserialize(curl_send($post));
  19. echo "<pre>"; print_r($response); echo "<pre>";
  20. ?>

Plik command.php:
  1. <?php
  2. if($_POST['query']['as'] == "a1") { echo "Wykonano połączenie"; } else { }
  3. ?>


Co robię źle, iż curl w funkcji działa lecz tylko gdy odhaszuje "// echo "$response<BR>";" jednak wtedy zwraca wszystko (wynik wszystkich wysłanych parametrów $post, a nie wyświetla to co chce czyli za pomocą "echo "<pre>"; print_r($response); echo "<pre>";" danej zawartości $post?

Ten post edytował kaszanka 13.03.2009, 20:31:57
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A gdzie masz return w funkcji?

Ten post edytował wookieb 13.03.2009, 20:35:28
Go to the top of the page
+Quote Post
kaszanka
post
Post #3





Grupa: Zarejestrowani
Postów: 138
Pomógł: 1
Dołączył: 17.02.2007

Ostrzeżenie: (0%)
-----


Cytat(wookieb @ 13.03.2009, 20:34:59 ) *
A gdzie masz return w funkcji?
Dobre pytanie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

  1. <?php
  2. function curl_send( $COMMAND,$URL="http://localhost/command.php" )
  3. {
  4.   $ch = curl_init();
  5.   curl_setopt($ch,CURLOPT_URL,$URL);
  6.   curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
  7.   curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  8.   curl_setopt($ch,CURLOPT_POST,1);
  9.   curl_setopt($ch,CURLOPT_USERAGENT,"client API");
  10.   curl_setopt($ch,CURLOPT_POSTFIELDS,$COMMAND);
  11.   curl_setopt($ch,CURLOPT_HEADER,0);
  12.   $response=curl_exec($ch);
  13. //    echo "$response<BR>";
  14.   curl_close($ch);
  15.               return $response;
  16. }
  17. // poniższy kod będzie znajdował się na wielu podstronach lecz z inną zawartości "$post":
  18. $post = 'query[as]=a1&query[aa]=aaa1';
  19. $response = unserialize(curl_send($post));
  20. echo "<pre>"; print_r($response); echo "<pre>";
  21. ?>

Teraz już działa, jedną zmienną miałem z dużych liter ;/ eh co za banały (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)



Tak aby nie tworzyć następnego tematu to już tutaj napiszę:

Po wysłaniu POST'em curla otrzymuje za pomocą:
  1. <?php
  2. echo "<pre>"; print_r($response); echo "</pre>";
  3. ?>

wynik:
  1. Array
  2. (
  3. [europa] => Array
  4. (
  5. [polska] => gwewh
  6. [polsffka] => gwewh
  7. )
  8. )

a jak chce tylko wyświetlić co jest w "[europa] [polska]":
  1. <?php
  2. echo $response['europa']['polska'];
  3. ?>

jednak nic nie wyświetla :|

A jeżeli dam samo:
  1. <?php
  2. echo $response['europa'];
  3. ?>
to wyświetli tylko dużą literę: "A" ;/

Ten post edytował kaszanka 14.03.2009, 02:59:55
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.10.2025 - 14:31