Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Funkcja fsockopen - Problem
Forum PHP.pl > Forum > Przedszkole
cabana
Witam. Muszę napisać skrypt który ma za zadanie przesłać na inny adres ciąg danych.
Skrypt napisałem na fsockopen który wygląda tak:

  1. $fp = fsockopen($ip, $port, $errno, $errstr, 1);
  2. fputs($fp,"GET /skrypt.php?dane=$dane HTTP/1.0\r\nUser-Agent: XML Getter (Mozilla Compatible)\r\n\r\n");


skrypt działa ładnie jeśli w zmiennej dane to co przesyłam jest stringiem nie zawierającym spacji ale jeśli string będzie zawierał spacje to nie wyśle całych danych lecz utnie zaraz po spacji i wyśle tylko część danych.
czym to jest spowodowane i jak temu zaradzić?
Crozin
Dane powinny być odpowiednio sformatowane, tj. " " (spacja) -> "%20", tak by być url-safe. Do zbudowania ciągu klucz=wartość&klucz2=wartość2... masz funkcję http_build_query - skorzystaj z niej.
cabana
ale to chyba dane muszę wpisać do tablicy aby użyć tej funkcji.
dobrze mówię?
mógł byś podać mi przykład działania tej funkcji jeśli
$dane = 'Dane do przesłania';
ponieważ nie idzie mi używanie tej funkcji sad.gif
Crozin
Yyy... ale w manualu masz bardzo dobry przykład jak tego użyć:
  1. $queryString = http_build_query(array(
  2. 'dane' => $dane
  3. ));
  4.  
  5. // ...
  6.  
  7. fputs($fp,"GET /skrypt.php?$queryString HTTP/1.0...");
cabana
efekt nie jest taki jaki potrzebuję sad.gif
zrobiłem to tak:

  1. $dane = 'Dane do przeslania';
  2. $dane = explode(' ', $dane);
  3. $dane = implode('%20', $dane);


i działa świetnie
ale za udzielenie się w temacie i podjęcie próby rozwiązania mojego problemu oczywiście + na Ciebie
Crozin
Cytat
efekt nie jest taki jaki potrzebuję
W takim razie jaki jest oczekiwany efekt?
Cytat
zrobiłem to tak:
Zamiast explode/implode użyj str_replace. Ale to i tak jest bez sensu, bo jest jescze wiele innych znaków, które muszą zostać odpowiednio inaczej zapisane: urlencode.
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.