Page 1 sur 2

Soumettre requete POST en HTML sans <Form Action> [Resolu]

Publié : mer. 29/juin/2011 13:41
par Kwai chang caine
Bonjour à tous

Je suis tombé sur ce super code de WebServeur de PROGI1984 avec lequel je "joue" depuis hier 8)
http://www.purebasic.fr/english/viewtop ... 10#p131010
Je commence un peu à comprendre des choses, mais j'ai encore un gouffre de connaissances à combler dans le WEB :oops: (Et si y'avait que la :mrgreen:)

J'ai utilisé ce code pour envoyer une requete POST

Code : Tout sélectionner

<form action="http://localhost:800/" enctype="multipart/form-data" method="get" target="_top">
	
	<p>Type some text (if you like):<br>
		<input type="text" name="textline" size="30">
	</p>

	
	<div>
		<input type="submit" value="Send">
	</div>
	
</form>
Ca marche niquel, mais j'ai plusieurs problemes :

1/ Deja IE n'a pas le meme comportement que FF et OPERA
Cet abruti, y veut pas afficher le retour dans la MEME page :?
Pas moyen j'ai essayé de changer la valeur de Target, mais rien n'y fait :(
J'ai cherché dans le "VEBE", mais apparement il est dit que quand on utilise <Form action> ça créé obligatoirement une autre page 8O

2/ Ma seconde question, c'est comment peut on faire, justement pour soummetre une requete en HTML sans passer par un bouton ??
Y'a t'il une balise ???
J'ai entendu parler des entetes HTTP...peut on envoyer la requete la dedans ???

Merci et bonne journée

Re: Soumettre requete POST en HTML sans <Form Action>

Publié : mer. 29/juin/2011 20:03
par Kwai chang caine
Bon vu la foule de reponse, soit :

1/ Plus personne y veut m'aider
2/ J'ai posé une question trop intelligente (Ca srait bien la premiere fois :mrgreen:)
3/ Personne il a compris ce que j'ai baragouiné :oops:
4/ C'est impossible

Et bah je vous le donne "Emile"
C'est apparement impossible d'envoyer une requete POST sans bouton :cry:

Re: Soumettre requete POST en HTML sans <Form Action> [Resol

Publié : mer. 29/juin/2011 20:14
par SPH
En meme temps, tu as mis [RESOLU] :mrgreen:

Re: Soumettre requete POST en HTML sans <Form Action> [Resol

Publié : mer. 29/juin/2011 20:20
par Kwai chang caine
Oui parce que je crois d'apres ce que j'ai lu que c'est impossible.

Mais on sait jamais, peut etre qu'un caid du web passera par la et me sortira un lapin de son chapeau :lol:

Re: Soumettre requete POST en HTML sans <Form Action> [Resol

Publié : mer. 29/juin/2011 21:20
par Atlante
Bonjour,

Voilà une de mes requetes pour les pages php. C'est du fait maison, on peut sans doute améliorer ;)
J'espère que cela va t'aider.
Je me suis inspiré : http://www.commentcamarche.net/contents ... /http.php3

Code : Tout sélectionner

;///// Initialisation librairie /////
If InitNetwork() = 0
MessageRequester("error","Impossible d'initialiser la lib network")
End
EndIf

;////// Declaration variables //////
Global name$ = "siteweb.free.fr";//nom du site
Global Rpost$ = "/Page.php"
Global port = 80 ; 80 par defaut
Global Key.s = ""
Global envoi.s = ""
Global spaces.s = Space(5000)
Global Key.s

;//////////////////////////////////////////
;///// Declaration procedure //////////////
;//////////////////////////////////////////



;//////////// Procedure Send requette http //////////
Procedure sendrequete(name$,port,Rpost$,requete$)
  reset:
  conn = OpenNetworkConnection(name$,port)
  If conn = #Null
  Delay(1000)
  Goto reset:
  EndIf
      ;//la requête
    envoi = "POST " + Rpost$ +" HTTP/1.1" + Chr(10)
    envoi + "Host: " + name$ + Chr(10)
    envoi + "Connection: Close"+ Chr(10)
    envoi + "Content-type: application/x-www-form-urlencoded" + Chr(10);
    envoi + "Content-Length: " + Str(Len(datas$)) + Chr(10) +Chr(10);
    envoi + Key +Chr(10)
    Debug "envoie requete"
    SendNetworkData(conn,@envoi,Len(envoi)+1)
    Debug "requete envoyée"
    Delay(100)
    spaces = Space(5000)
    Debug "attente reception"
    Debug envoi
    
    
    Repeat
    Until  NetworkClientEvent(Conn) = #PB_NetworkEvent_Data
    
    Repeat
        result = ReceiveNetworkData(conn,@spaces,5000)
        Debug result
      Until result = 0
      
    Debug "Reception ok"
    Debug spaces
 EndProcedure
Cordialement.
Atlante

Re: Soumettre requete POST en HTML sans <Form Action> [Resol

Publié : mer. 29/juin/2011 21:27
par Backup
un truc bien sympath c'est d'utiliser #LF$ en lieu et place de chr(10)
Purebasic comprends aussi #CR$ a la place de chr(13) ; c'est plus parlant :)

Re: Soumettre requete POST en HTML sans <Form Action> [Resol

Publié : jeu. 30/juin/2011 8:12
par Kwai chang caine
Merci beaucoup Atlante 8)

Ton code est sensiblement le meme que celui de PROGI1984 :wink:
Je te remercie quoi qu'il en soit de l'avoir posté.

Mais ma question etait tout autre.
C'etait de pouvoir envoyer avec le navigateur une requete POST sans passer par le bouton SUBMIT

Apparement le HTML n'a pas prévu cela, pas de balise, pas de commandes, juste ce bouton submit relié à la balise <Form action>.
On peut aussi envoyer une requete avec un lien, c'est une GET, et quoi qu'il en soit faut aussi cliquer :(

Moi je cherchais a envoyer directement sans actions de clic une requete des la fin de chargement de la page
Apparement c'est pas possible...faut cliquer...sauf en JavaScript avec le DOM, ou l'on peut le faire
Mais j'evite le JavaScript car il est parfois bloqué par les navigateurs :(

Encore merci de ta réponse 8)

Re: Soumettre requete POST en HTML sans <Form Action> [Resol

Publié : jeu. 30/juin/2011 8:25
par TazNormand
Salut KCC,

Envoyer quelque chose dès la fin de chargement n'est possible que par javascript, et via framework (jquery, mootools, dojo...).

point de miracle, désolé.

Néanmoins, le nombre de navigateur où javascript est "bloqué" est quand même infime, n'oublies pas que nombre de site web actuels utulisent Ajax.

Désolé de ne pouvoir t'aider plus :oops:

Re: Soumettre requete POST en HTML sans <Form Action> [Resol

Publié : jeu. 30/juin/2011 8:50
par Kwai chang caine
Merci TAZ
C'est déjà pas mal, au moins ça confirme mes pensées

Ne sois pas désolé, je vais quand meme pas demander d'inventer des fonctions du HTML aux membres de PB :lol:

Re: Soumettre requete POST en HTML sans <Form Action> [Resol

Publié : jeu. 30/juin/2011 9:38
par lepiaf31
On peut également envoyer des requetes HTTP via PHP : http://www.siteduzero.com/tutoriel-3-35 ... -http.html (exemple à la fin du tuto).

Re: Soumettre requete POST en HTML sans <Form Action> [Resol

Publié : jeu. 30/juin/2011 10:02
par Kwai chang caine
Merci LePiaf 8)

Le probleme c'est que j'essaie de me creer mon propre mini PHP si on peut dire.
C'est a dire ne pas utiliser APACHE, PHP, ou les pack EasyPhp et ses freres.

Puisque PB sait faire ce que APACHE sait faire, je me suis dit que pour une petite utilisation on pourrait creer un EXE interrogeable avec un navigateur et qui retournerait dans ce meme navigateur les pages qu'il aurait en stock

La meme chose qu'avec un client/serveur PB, mais le gros avantage c'est que tu n'a juste qu'a donner une adresse a une personne, et sans installation il ouvre son navigateur et se retrouve avec un site, sans avoir a installer un client PB :D
Et en plus...encore mieux que APACHE/PHP, tu passe ton appli a un pelo, il a juste a la démarrer pour se retrouver avec un pseudo serveur et meme avec un site tout pres qui est dans le tirroir :mrgreen:
Cela permet aussi de pouvoir piloter un PC a distance avec un simple navigateur, et converser avec ton appli avec le meme biais 8)

Tout ça c'est bien beau, ça marche mais comme j'suis une brouette, j'ai oublié les images :oops:
Et oui celles ci sont chargées grace seulement a leur lien, et moi je veux envoyer la page avec images via mon appli.

Donc je n'ai apparement pas d'autres choix que de passer par les MIME, c'est ce que j'essaie de faire en ce moment, mais ce bourrin de IE, il m'affiche le texte ASCII sans m'afficher les images :?
Restera un autre probleme, c'est que FF n'a pas le lecteur MIME par defaut, juste la derniere version....j'ai pas fini avec ces images :?

Re: Soumettre requete POST en HTML sans <Form Action> [Resol

Publié : jeu. 30/juin/2011 10:20
par lepiaf31
Jdois pas etre bien reveillé parce que j'ai pas compris ce que tu voulais faire ><

Re: Soumettre requete POST en HTML sans <Form Action> [Resol

Publié : jeu. 30/juin/2011 10:51
par Kwai chang caine
Non non...c'est moi :oops:
Si tu etais le seul a ne pas me comprendre, meme mes chiens ce matin, j'ai eu un mal fou a les faire manger chacun dans leur gamelle :lol:

Alors voila
De retour de mon court stage PHP, je me suis rendu compte de la complexité de tout ce langage, on en a parlé ensemble je crois
Bien souvent on a pas besoin de toute la grosse mecanique APACHE/PHP et tout le toutim pour juste quelques pages
Alors je me suis dit, que si je pouvais avec PB qui sait tout faire, creer un petit serveur ce serait le top

Tout le monde sait que la LIB ClientServeur TCP est la pour ça, mais le bleme c'est que il faut se trimballer un client et a chaque fois le distribuer
De plus certaines machines n'autorisent pas l'installlation avec cette saloperie d'UAC

Alors "J'm'ai" dit, que comme tout le monde il a un navigateur, ce serait le top si je pouvais piloter mon appli sans client PB, mais avec IE, FF, etc..
C'est ce que j'essaye de faire depuis le debut de la semaine, et les resultats sont prometteurs
Grace a Progi1984, je recois la commande du navigateur, et je renvois une page au navigateur
Ces pages je veux qu'elles soit dans le programme, ou peut etre cryptés a l'exterieur, mais je ne veut pas recreer un ATOMIC SERVER avec le Repertoire WWW.
Je veux que mes pages soit pas accessibles, voir meme dans l'exe, je ne sais pas encore.

Quoi qu'il en soit pour faire ça, je suis obligé de les passer via les lignes

Code : Tout sélectionner

header.s = Headerd + Str(clength) + Headerf + Content
  
  *Buffer = AllocateMemory(Len(header)+1)
  PokeS(*Buffer,header)
  SendNetworkData(ClientID, *Buffer, Len(PeekS(*Buffer)))
Et c'est la que j'ai un bleme, quand je veux envoyer des images, car pour ce qui est de code HTML pure ça fonctionne super
Mais des que y'a des images...comment je les envoie, puisque le navigateur est habitué à n'avoir que des liens et pas les images incluses

Alors j'ai pensé aux MIME ou tout est codé Base64 en ASCII si je ne me trompe, comme dans les mails
J'ai enregistré la page en MHT (Mime Html) j'ai bien un texte

Code : Tout sélectionner

From: =?Windows-1252?Q?Enregistr=E9_par_Windows_Internet_Explorer=A07?=
Subject: blonde - Recherche Google
Date: Thu, 30 Jun 2011 10:39:01 +0200
MIME-Version: 1.0
Content-Type: multipart/related;
	type="multipart/alternative";
	boundary="----=_NextPart_000_001B_01CC3711.ED787D10"
X-MimeOLE: Produced By Microsoft MimeOLE V6.0.6001.18000

This is a multi-part message in MIME format.

------=_NextPart_000_001B_01CC3711.ED787D10
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Location: http://www.google.fr/images/srpr/nav_logo73.png

iVBORw0KGgoAAAANSUhEUgAAAKcAAAEgCAYAAADR1GM4AAAABmJLR0QA/wD/AP+gvaeTAAAACXBI
WXMAAArrAAAK6wGCiw1aAACKiklEQVR42u2dBXgURxvHr/rVcSmUAi2lxbW4BHd3d3d3d3cJFiCQ
BAIJEQiQBGIQkgAJEoG4u7v+v3nnssfd5e5yl4Q2bTPP8z57t7vz3t7sb1+Zmd0VoZSUPCaZ2UBs
EuAblgtXnxw4umfB/k0GHD0y8No3AwERWYhPzmH75aGsyJbsvGw4J7hghdd6jHCdjFHPZ2KYwyw0
tuiDuTbrEB4Xgezs7H/UfxKVlgN5E5CLQ0bZGL0jE52WZKLJtEz8Mo4kAw2npqHd/FQMXJ+EuYcT
......
......
......
Mais ce gland de IE il m'affiche le texte et pas les jolies blondes que j'avais en images :oops:
Et pourtant c'est exactement le meme texte entre le code source de ma page et le fichier que j'envoi, j'ai vérifié avec un logiciel de comparaisonImage

Re: Soumettre requete POST en HTML sans <Form Action> [Resol

Publié : jeu. 30/juin/2011 11:05
par lepiaf31
D'accord alors quand le navigateur cherche à charger une image, il envoi (normalement) une requete qui a à peu près cette tête:

Code : Tout sélectionner

GET /french/styles/subsilverPlus/imageset/purebasic_logo.png HTTP/1.1
Host: www.purebasic.fr
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Et là le serveur est censé lui répondre un truc dans ce genre là:

Code : Tout sélectionner

HTTP/1.1 200 OK
Date: Thu, 30 Jun 2011 09:59:56 GMT
Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.17 with Suhosin-Patch
Last-Modified: Sun, 13 Sep 2009 00:30:53 GMT
ETag: "49c1dd-294a-4736aa96c0940"
Accept-Ranges: bytes
Content-Length: 10570
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: image/png

‰PNG

   
IHDR  }   D   m{å€  
CiCCPICC profile  xڝSwX“÷>ß÷eVBØð±—l "#¬ÈY¢’ a„@Å…ˆ
VœHUÄ‚Õ
Hˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j 9R…<:؏OHÄɽ€Hà æËÂgÅ  ðyx~t°?ü¯o  pÕ.$ÇáÿƒºP&W  ‘ à"çR È.TÈ È °S³d
 ”  ly|B" ª
 ìôI> Ø©“Ü Ø¢©  ™(G$@» `UR,À  ¬@".À®€Y¶2G€½ vŽX@` €™B,Ì  8 CÍ L 0Ò¿à©_p…¸H À˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f	ä"œ—›#HçLÎ  ùÑÁþ8?çæäáæfçlïôÅ¢þkðo">!ñßþ¼Œ NÏïÚ_ååÖpǰu¿k©[ ÚV hßù]3Û	 Z
Ðzù‹y8ü@ž¡PÈ<
í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzð qš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý	“w
 ¬†OÀN¶µËlÀ~î‹XÒv @~ó-Œ‘ g42y÷  “¿ù@+ Í—¤ã  ¼è\¨”LÆ  D *°AÁ¬ÀœÁ¼ÀaD@$À<Bä€
¡–ATÀ:ص° šá´Á18
çà\ëp`žÂ¼†	AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9\@úÛÈ 2ŠüмG1”²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut }ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V5cX7vÀžaï$‹€ì^„Âl‚GXLXC¨%ì#´ºW	ƒ„1Â'"“¨O´%zùÄxb:±XF¬&î!!ž%^'_“H$É’äN
!%2IIkHÛH-¤S¤>ÒiœL&ëmÉÞä²€¬ —‘·O’ûÉÃä·:ňâL	¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©
F4ÔÕ¡ÆlFHHȹzèØ–üã51C516ö/'ªªÖÈ9þŠÕ«³ÿ{ÆJ†aÊþüüó“8ðü‰êê‡ÛXvÔ­ÑS¦ô^Ÿô>(+ð€€+“4šý§OZm«lJ3c˜$0oj;
}Š{aU
¢ål¸a BûqŽâÛ& õ·û\=ôec\,ýè‡F u59P›Š‹ëë½VšñJ¡P(
…B¡P(
…B¡Ü	üJ—4Ybqco    IEND®B`‚
[...]
Donc comme tu peux le voir, il faut spécifier dans l'en-tete le "Content-Type" qui indique quel est le type de données que tu envoies (une ptite recherche sur google pour récupérer les content-type les plus courants). Et normalement avec ca ton navigateur devrait etre capable d'afficher correctement l'image.

Re: Soumettre requete POST en HTML sans <Form Action> [Resol

Publié : jeu. 30/juin/2011 11:18
par Kwai chang caine
En voila une bonne nouvelle :D

J'avais posé la question sur le US en meme temps, et INFRATEC m'a donné une procedure pour afficher une image que je depose ici si ça peut servir
Elle marche surper bien

Code : Tout sélectionner

Procedure SendHTTPImage(ClientID, Filename$)
  
  SizeOfFile = FileSize(Filename$)
  
  If SizeOfFile > 0
    
    *Buffer = AllocateMemory(SizeOfFile)
    If *Buffer
      File = ReadFile(#PB_Any, Filename$)
      If File
        ReadData(File, *Buffer, SizeOfFile)
        CloseFile(File)
        
        header$ = "HTTP/1.1 200 OK" + #CRLF$
        header$ + "Date: Tue, 07 Mar 2006 20:00:00 GMT" + #CRLF$
        header$ + "Server: My Web Server 0.2b" + #CRLF$
        header$ + "Content-Type: image/" + GetExtensionPart(Filename$) + #CRLF$
        header$ + "Content-Length: " + Str(SizeOfFile) + #CRLF$
        header$ + "Connection: keep-alive" + #CRLF$
        header$ + #CRLF$
        
        SendNetworkData(ClientID, @header$, Len(header$))
        SendNetworkData(ClientID, *Buffer, SizeOfFile)
      Else
        SizeOfFile = 0
      EndIf
      FreeMemory(*Buffer)
    Else
      SizeOfFile = 0
    EndIf
  EndIf
    
  If SizeOfFile = 0
    html$ = "<html>" + #CRLF$
    html$ + " <title>Error 404</title>" + #CRLF$
    html$ + " <head></head>" + #CRLF$
    html$ + " <body><h1>404 Not found!</body>" + #CRLF$
    html$ + "</html>" + #CRLF$
    
    header$ = "HTTP/1.0 404 Not Found" + #CRLF$
    header$ = "Content-Type: text/html" + #CRLF$
    header$ = "Content-Length: " + Str(Len(html$)) + #CRLF$
    header$ + #CRLF$
    
    header$ + html$
    
    SendNetworkData(ClientID, @header$, Len(header$))
  EndIf
  
EndProcedure
]
Seulement voila..maintenant comme lagaff :"On a la lumiere, on a la sono...chiche on en fait un ..."
Moi j'ai le HTML, j'ai l'image, mais alors pour que je sois en trance, ce qui serait trop de la balle c'est d'avoir les deux mixés comme dans une page HTML

Mais la...je sais pas si c'est possible ???
Alors ce que tu viens de m'expliquer c'est que l'on pourrait afficher l'image, mais pour les deux en meme tempsn, c'est la que j'ai pas compris ce que tu me dit ??