[C++] Metoda Post

0

Witam czy jest możliwe użycie metody POST w c++? jeżeli to jak?
Powiedzmy mam:

<input type="text" name="user_name" class="textbox" style="width:100px">

<input type="password" name="user_pass" class="textbox" style="width:100px">

I chce aby program sam wpisał wartości.

Będe bardzo wdzięczny za gotowy kod

0

Zadania GET i POST wysylasz w naglowku HTTP, jak chcesz wiedziec jak to sie robi to dowiedz sie wiecej o obsludze http oraz o programowaniu socketow i sobie na pewno dasz rade ;)

0

http://curl.haxx.se/libcurl/c/postit2.html
W komentarzu na początku masz przykład formy do jakiej się odnosi kod.

0
t0m_k-tmp napisał(a)

Zadania GET i POST wysylasz w naglowku HTTP, jak chcesz wiedziec jak to sie robi to dowiedz sie wiecej o obsludze http oraz o programowaniu socketow i sobie na pewno dasz rade ;)

Mniej więcej wiem o co chodzi, zrobiłem tak:
/login.php?user_name=admin&user_name=test123

no ale nic się nie dzieje.

@up zaraz to sprawdze

0

No niby coś tam zrobiłem, po uruchomieniu wyskakuje źródło strony, ale jak sprawdzić czy to rzeczywiście się udało? może jakiś link macie gdzie mógłbym to użyć i sprawdzić czy rzeczywiście zadziałało?

0

Sorry ze spamuje, ale niemam konta, ok wiem ze to dziala, ale pytanie czy program przechowuje w sobie jakies sesje, ciasteczka?

0

Wszystko jest opisane w dokumentacji. Ciasteczka można ustawić(podać plik, do którego będą zapisywane dane).
Jak użyjesz easy_perform to masz wyjście(treść strony) na konsoli. Z nagłówku można wyczytać, że się powiodło(OK). Również to można zmienić, tzn. żeby nie było wypisywane na konsole lecz wszystko przekazywane do Twojej funkcji albo od razu do pliku(ktoś pytał się o write callback na tym forum).

0

Dobra jako przyklad cos takiego:
index.php

<html>
<form action="login.php" method="POST"><b>
login:<br/><input type="text" name="login"/><br/>
haslo:<br/><input type="password" name="pass"/><br/>
</b><input type="submit" value="wyslij"/>
</form>
</html>

login.php

<?php
if($_POST['login'] == 'tomek' and $_POST['pass'] == 'tajne') {
	echo "zalogowany<br/>\n";
} else {
	echo "lipa<br/>\n";
}

?>

tutaj kod wysylajacy zapytanie

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <unistd.h>

#define REQUEST "POST /costam/login.php HTTP/1.1\r\n"\
		"Host: localhost\r\n"\
		"Content-Type: application/x-www-form-urlencoded\r\n"\
		"Content-Length: 22\r\n\r\n"\
		"login=tomek&pass=tajne"

#define SIZE 1024

int main(void)
{
	int sock, i; char buff[SIZE] = {0};
	struct sockaddr_in sin;
	struct hostent *hos;

	sock = socket(AF_INET, SOCK_STREAM, 0);
	memset(&sin, '\0', sizeof(struct sockaddr_in));
	sin.sin_family = AF_INET;
	sin.sin_port = htons(PORT);
	sin.sin_addr.s_addr = inet_addr("127.0.0.1");

	connect(sock, (struct sockaddr*)&sin, sizeof(struct sockaddr));

	write(sock, REQUEST, sizeof(REQUEST));
	read(sock, buff, sizeof(buff));

	for(i = 0; i < SIZE; i++)	
		putchar(buff[i]);
	puts("");

	close(sock);

	return 0;
}
0

Co do tych ciastek to zwroci Ci ten kod co podalem naglowek http i strone, a w naglowku ciastka sa po [truncate].

0
tobix10 napisał(a)

Wszystko jest opisane w dokumentacji. Ciasteczka można ustawić(podać plik, do którego będą zapisywane dane).
Jak użyjesz easy_perform to masz wyjście(treść strony) na konsoli. Z nagłówku można wyczytać, że się powiodło(OK). Również to można zmienić, tzn. żeby nie było wypisywane na konsole lecz wszystko przekazywane do Twojej funkcji albo od razu do pliku(ktoś pytał się o write callback na tym forum).

no własnie mam problem, bo mi w konsoli wyskakuje źródło strony. jak to zmienic?

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