Problem z curl

0

Witajcie. Pragnę przesłać wartość zmiennych z mojej aplikacji:

oldV1 = readString(processHandle, var1_value); // odczytanie danych z pamieci procesu
oldV2 = readString(processHandle, var2_value);

do skryptu php. Korzystam więc z takiego kodu:

CURL *curl;
CURLcode res;

	curl = curl_easy_init();
	if(curl)
	{
		/* First set the URL that is about to receive our POST. This URL can
       just as well be a https:// URL if that is what should receive the
       data. */
		curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1/proj/index.php");
		/* Now specify the POST data */
		curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "var1=tutajchcedanezezmiennej&var2=tutaksamo");

		/* Perform the request, res will get the return code */
		res = curl_easy_perform(curl);

		/* always cleanup */
		curl_easy_cleanup(curl);
	}

Próbowałem zrobić tak:

CURL *curl;
CURLcode res;

	curl = curl_easy_init();
	if(curl)
	{
		/* First set the URL that is about to receive our POST. This URL can
       just as well be a https:// URL if that is what should receive the
       data. */
		curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1/proj/index.php");
		/* Now specify the POST data */
		curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "var1="+oldV1+"&var2="+oldV2+"");

		/* Perform the request, res will get the return code */
		res = curl_easy_perform(curl);

		/* always cleanup */
		curl_easy_cleanup(curl);
	}

jednak to nie działa. Moje pytanie: jak za pomocą tego kodu mogę przesłać te zmienne do skryptu php? Z góry dziękuję za pomoc.

0

Co to znaczy "nie działa"? Nie kompiluje się? Wywraca się runtime? Nic nie wysyła? Wysyła, ale nie ma body w POST? Wyłącza się komputer przy próbie wysłania?

"Panie doktorze, jestem chory. Co mi dolega?"

0

Racja, moja nieuwaga, zapomniałem napisać, że skrypt php wygląda tak:

if(isset($_POST['var1'])) {


$var1 = htmlspecialchars(addslashes($_POST['var1']));

$var2 = htmlspecialchars(addslashes($_POST['var2']));


$fname = 'test.txt';

$handle = fopen($fname, "a");

fwrite($handle, $var1." | ".$var2." |END|   ");

fclose($handle);
} else {
$fnameD = 'dupa.txt';

$handleD = fopen($fnameD, "a");

fwrite($handleD, "dupa");

fclose($handleD);
}

zarówno do dupa.txt jaki i test.txt nic się nie dodaje.

Dodam, że gdy w kodzie C++ nie zastosuję metody

"postname="+zmienna+"&postname2="+zmienna2+""

tylko wpiszę jakąkolwiek wartość: "postname=test&postname2=innytest"

, to skrypt php normalnie zapisuje $var1 oraz $var2 w pliku .txt.
0
Alegres napisał(a)

Dodam, że gdy w kodzie C++ nie zastosuję metody

"postname="+zmienna+"&postname2="+zmienna2+""

Jakim cudem Ci się to kompiluje? Konkatenujesz char* operatorem "+"? Powinno Ci się conajmniej wywrócić z błędem segmentacji.
cstringów tak nie łączymy.

0

Nie mam pojęcia ja kto powinno wyglądać, żeby było dobrze. Te "+" to przyzwyczajenie z innego języka widocznie. Kompiluje się jakoś, nie mam pojęcia jakim cudem, ale za to chciałbym wiedzieć jak powinno się łączyć cstringi =).

Krótko mówiąc, jak to powinno poprawnie wyglądać?

0

funkcja readString:

const char* readString(HANDLE procHandle, DWORD lpBaseAddress)

zmienne var1 oraz var2 na pewno nie są puste.

0

To, co Ty robisz to jest algebra na wskaźnikach i do funkcji w rezultacie przekazujesz coś, co wskazuje "w kosmos".
Poczytaj o funkcjach np. strcat(), sprintf(), strncpy(), czy nawet memcpy().

0

Taką samą metodą przekazywałem wartości var1 oraz var2, również przez curla, tylko metodą get, gdzie funkcja łączyła się bezpośrednio z: http://127.0.0.1/proj/index.php?nazwa=wartosc i wszystko dzialalo POMIMO TEGO iż w kodzie C++ wyglądało to dokładnie tak samo jak robię teraz, czyli:

"http://127.0.0.1/proj/index.php?nazwa="+var1+"&nazwa2="+var2+""
0

Nie wiem jakim cudem Ci to działało. U mnie się nawet nie chce kompilować przy takim łączeniu. Jesteś pewien, że to było C++ a nie Java?
Anyway, możesz się ze mną spierać czy operator "+" tu powinien działać czy nie, albo zbudować cstringa przy pomocy funkcji, które Ci podałem i uruchomić program. Twój wybór.
Jeśli piszesz w C++, to możesz sobie ułatwić sprawę budując łańcuch na std::string. Ja Ci nie jestem w stanie pomóc, gdyż najwyraźniej używasz jakichś dziwnych narzędzi.

0

spróbuj tak: (string("var1=")+"sfsdf"+"sdfsdsds"+...).c_str()

1 użytkowników online, w tym zalogowanych: 0, gości: 1