Page 1 sur 1

Envoyer des données POST depuis un programme ?

Publié : sam. 03/nov./2007 15:04
par Nombre
Salut !
J'aimerais savoir comment créer un programme qui rempli automatiquement des données de POST sur un site Internet depuis mon prog.

Voila un topic similaire :
http://www.purebasic.fr/french/viewtopi ... formulaire

J'ai déja commencé un code:

Code : Tout sélectionner


Enumeration
  #Window_0
  #String_0
  #String_1
  #String_2
  #Button_0
EndEnumeration


  If OpenWindow(#Window_0, 324, 3, 278, 184, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(#Window_0))
      StringGadget(#String_0, 20, 10, 240, 20, "Nom")
  
      ButtonGadget(#Button_0, 20, 130, 230, 30, "OK")
                       Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow

    EndIf
  EndIf


En fait dans ce code il devrait remplir les données d'un site web sans aller dessus ,exemple :
Un internaute crée un site web pour faire des tests PHP.
L'une de ses pages consiste à écrire ton nom,ton age,ton mail...
Et quand tu valide les données par POST,il inscris ta CDV sur son site.

Donc,comme le topic montré plus haut,j'aimerais pouvoir en remplir les données sans a me taper tout le bla bla.
J'explique :

-Le site demande ton nom,ton age,ton email.
-Avec mon programme on pourrait avoir juste a écrire le nom,les autres infos seraient déja pré-remplis !

Et enfin vu que ce code ne peut pas fonctionner sur des formulaires avec code de confirmation,je sais qu'il ne pourra pas être utilisé a des fins bizares.
Vous me suivez ?

Je vais chercher comment faire,si vous avez une idée n'hésitez pas !

Publié : sam. 03/nov./2007 22:43
par Droopy
Je suis preneur aussi pour cette info :wink:

Publié : sam. 03/nov./2007 23:10
par Ar-S
Idem :D

Publié : sam. 03/nov./2007 23:37
par Droopy
Un exemple pour se connecter au forum Purebasic serait parfait :?:

Publié : dim. 04/nov./2007 2:38
par Dr. Dri

Publié : dim. 04/nov./2007 14:04
par Nombre
Oulalala...
J'ai beau remplacer index.html par mon propre truc,syntax error a toutes les lignes...
Si quelqu'un pourrait compléter mon code,je voudrais bien lui donner 1000€ lol

Publié : lun. 05/nov./2007 23:44
par Droopy
J'ai trouvé sur le forum US un code de Karbon

http://www.purebasic.fr/english/viewtop ... urlencoded

Voici donc comment s'auto-logguer sur le forum :

Code : Tout sélectionner

;/ Author : Karbon

#INTERNET_OPEN_TYPE_DIRECT = 1 
#HTTP_ADDREQ_FLAG_ADD = $20000000 
#HTTP_ADDREQ_FLAG_REPLACE = $80000000 
#INTERNET_FLAG_SECURE = 0 ;/ $800000 si HTTPS
#INTERNET_SERVICE_HTTP = 3 ; Type of connection (could be FTP Gopher etc). HTTPS is done as HTTP too. 
#INTERNET_DEFAULT_HTTP_PORT = 80  ;/ 443 si HTTPS
#HTTP_QUERY_COOKIE = 44 ; ;For httpqueryinfo. 

Procedure.s do_post(username.s, Password.s) 
  
  ; 
  ; Do NOT include http:// or any other protocol indicator here 
  ; 
  host.s = "purebasic.fr" 
  
  ; 
  ; Everything after the hostname of the server 
  ; 
  get_url.s = "/english/login.php" 
  
  ; 
  ; Holds the result from the CGI/page 
  ; 
  result.s = "" 
  
  ; 
  ; All from the wininet DLL 
  ; 
  ; Be sure your Internet Explorer is up to date! 
  ; 
  open_handle = InternetOpen_("User Agent Info Goes Here",#INTERNET_OPEN_TYPE_DIRECT,"","",0) 
  
  connect_handle = InternetConnect_(open_handle,host,#INTERNET_DEFAULT_HTTP_PORT,"","",#INTERNET_SERVICE_HTTP,0,0) 
  
  request_handle = HttpOpenRequest_(connect_handle,"POST",get_url,"","",0,#INTERNET_FLAG_SECURE,0) 
  
  headers.s = "Content-Type: application/x-www-form-urlencoded" +Chr(13)+Chr(10)  
  
  HttpAddRequestHeaders_(request_handle,headers,Len(headers), #HTTP_ADDREQ_FLAG_REPLACE | #HTTP_ADDREQ_FLAG_ADD) 
  
  ;change this when using a login form other than a phpbb one 
  post_data.s = "username="+username+"&password="+Password+"&login=Log%20in"; not sure why the submit button text is needed.... but it seemed to make it work for me :lol: 
  
  post_data_len = Len(post_data) 
  
  send_handle = HttpSendRequest_(request_handle,"",0,post_data,post_data_len) 
  
  Buffer.s = Space(1024) 
  
  bytes_read.l 
  
  total_read.l 
  
  total_read = 0 
  
  ; 
  ; Read until we can't read anymore.. 
  ; The string "result" will hold what ever the server pushed at us. 
  ; 
  Repeat 
    
    InternetReadFile_(request_handle,@Buffer,1024,@bytes_read) 
    
    result + Left(Buffer,bytes_read) 
    
    Buffer = Space(1024) 
    
  Until bytes_read=0 
  
  
  ;- uncomment the following when you want to get the cookie data - not sure if it works or not..... 
  ;buffer.s = Space(#MAX_PATH) 
  ;headernum = 0 
  ;length = Len(buffer) 
  ;HttpQueryInfo_(request_handle, #HTTP_QUERY_COOKIE, @buffer, @length, @headernum) 
  ;Debug buffer 
  
  ProcedureReturn result 
  
EndProcedure 

do_post("login", "password")
OpenWindow(0,0,0,1024,768,"WebGadget",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) 
CreateGadgetList(WindowID(0))
WebGadget(0,10,10,1004,748,"http://www.purebasic.fr/english/index.php")
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow

Publié : lun. 05/nov./2007 23:55
par Ar-S
Houlala je vais étudier ce code de près, merci Droopy :D

Publié : mar. 06/nov./2007 13:55
par Thyphoon
Merci Droopy ! Heu...y a pas moyen de se passer des API ?
Et pour envoyer un fichier en POST on fait comment ? :p

Publié : mar. 06/nov./2007 16:21
par Nombre
Love Droopy !
Mais je pose la même question que Typhoon :?

Publié : mar. 06/nov./2007 18:09
par Dr. Dri
Thyphoon a écrit :Merci Droopy ! Heu...y a pas moyen de se passer des API ?
Et pour envoyer un fichier en POST on fait comment ? :p
j'ai déjà répondu à ça, j'ai même donné un lien...

Dri

Publié : mar. 06/nov./2007 20:15
par Thyphoon
Dr. Dri a écrit :
Thyphoon a écrit :Merci Droopy ! Heu...y a pas moyen de se passer des API ?
Et pour envoyer un fichier en POST on fait comment ? :p
j'ai déjà répondu à ça, j'ai même donné un lien...

Dri
Oui je sais mais honte a moi j'ai jamais réussi :( alors quand j'ai vu le sujet je me suis dit....peut ête y a t'il d'autre idée. :roll:

Publié : sam. 10/nov./2007 15:37
par Nombre
Les ups sont autorisés sur ce forum ?