Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1714 connectés 

 


Dernière réponse
Sujet : [PHP]Passage de fichier en paramétres
revo C vrai que c le bordel  :D  
Mais je vais en parler a celui qui c'occupe du C++
Merci!

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
revo C vrai que c le bordel  :D  
Mais je vais en parler a celui qui c'occupe du C++
Merci!
youdontcare j'avais galéré tel le dingue pour faire du post en php (sur nexen). en plus, pas des masses de docs là dessus :(, et un bug chelou. au cas où, voici une proc qui marche pour une requête post de nexen -> altern (c'est du php, facilement convertible en c)
 
host = une adresse ip ou un nom de domaine
postfile = le chemin sur le serveur cible (/myDir/myPost.php)
varname = le nom de la variable
vardata = son contenu
 
ça ne gère donc qu'une seule variable, je galérais déjà bien assez comme ça :D même si j'en passe plusieurs, que je récupère à coups d'explode() sur le serveur cible.
 
 

Code :
  1. //
  2. // Send a request and return its response
  3. //
  4. function HTTPRequest($targethost, $request)
  5. {
  6. global $socket;
  7. // If targethost is a dns string, get its IP  
  8. if (!ereg("[0-255].[0-255].[0-255].[0-255]", $targethost)) $address = gethostbyname ($targethost);
  9. else              $address = $targethost;
  10. // Get the port for the WWW service
  11. $service_port = getservbyname ('www', 'tcp');
  12. // Create a TCP/IP socket
  13. $socket = socket (AF_INET, SOCK_STREAM, 0);
  14. if ($socket < 0)     echo "socket() failed: reason: " . strerror ($socket) . "<br>";
  15. // Connect
  16. $result = connect ($socket, $address, $service_port);
  17. if ($result < 0)  echo "connect() failed.\nReason: ($result) " . strerror($result) . "<br>";
  18. // Send request
  19. write ($socket, $request, strlen ($request));
  20. // Grab result
  21. $outresult = "";
  22. while (read ($socket, $out, 2048) >= 0) {
  23.  $outresult .= $out;
  24. }
  25. // Close socket
  26. close ($socket);
  27. return $outresult;
  28. }
  29. //
  30. // Send an HTTP POST request
  31. //
  32. function HTTPPOST($host, $postfile, $varname, $vardata)
  33. {
  34. $boundary = "----boundary----";
  35. // Build POST data
  36. $postheader = "$boundary\r\n";
  37. $postheader .= "Content-Disposition: form-data; name=\"$varname\"\r\n\r\n";
  38. $postheader .= "$vardata\r\n\r\n";    // FIX ! there's only one return in ie data, but data gets truncated here without two.
  39. $postheader .= "$boundary\r\n\r\n";
  40. $postlen = strlen($postheader);
  41. // Build POST header
  42. $header = "POST $postfile HTTP/1.0\r\n";
  43. $header .= "Host: $host\r\n";
  44. $header .= "Content-Type: multipart/form-data; boundary=$boundary\r\n";
  45. $header .= "Content-Length: $postlen\r\n\r\n";
  46. $header .= $postheader;
  47. return HTTPRequest($host, $header);
  48. }

revo Je vous rassure mon fihcier est pas tres gros et fait moins d'1 koctet.
Mais je pense avoir trouver une autre solution: le prog c++ me donne le contenu du programme (qui est du text) , me le donne en parametre et je créer un fichier avec ce param.
Mara's dad Largo, si j'ai bien compris, Revo n'utilise pas un navigateur pour envoyer son fichier. Il écrit sa propre appli en c++.
 
Cela dit, tu as raison, en HTTP GET, l'url est limitée. Il faut utiliser POST pour envoyer un fichier...
Largo tu veux passer le *contenu* du fichier en  URL ??
parce que les url sont limitées en taille (genre 1024 car.) et c'est pas ultime comme solution. d'autant plus que tu ne peux pas récuperer le contenu d'un fichier a partir d'un formulaire sans passer par <input type=file>
Mara's dad OK, OK !
 
Une piste là : http://www.isi.edu/in-notes/rfc1867.txt
revo Pour max_file_size je connais (mais ca peut marcher sans)
Je sais que c le navigateur qu'ill'envi mais à mon avis en encodant le fichier à la maniére du navigateur on peut l'envoyer en paramétres, mais la question est comment l'encoder avec vc++6 par exemple ?
Mara's dad 1- Pour savoir ce que contient userfile, t'as qu'à faire un upload normal, et dans uploadvf.php3 tu affiche $userfile !
 
2- Mais, faut savoir ce que tu veux. Si tu veut recevoir le fichier, il te faut absolument un INPUT TYPE=file ! C'est le navigateur qui envoie le fichier vers le serveur quand il rencontre un INPUT TYPE=file. C'est pas le serveur qui va le chercher sur le PC du client avec son nom ?
 
3-si tu fait uploadvf.php3?userfile=c:\autoexec.bat, tout ce que uploadvf.php3 va recevoir, c'est une variable $userfile qui contiendra une chaîne "c:\autoexec.bat" !
 
4-SINON, pour un upload en PHP, il manque le champ MAX_FILE_SIZE dans le formulaire :

Code :
  1. <FORM ENCTYPE="multipart/form-data" ACTION="_URL_" METHOD=POST>
  2.    <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000">
  3.    Send this file: <INPUT NAME="userfile" TYPE="file">
  4.    <INPUT TYPE="submit" VALUE="Send File">
  5. </FORM>


 
DOC : http://php.net/manual/en/features.file-upload.php
ou : http://php.net/manual/fr/features.file-upload.php

revo Pour l'upload on utilise d'habitude:
<form method="post" name="up" enctype="multipart/form-data" action="uploadvf.php3">
  Votre wu :  
  <INPUT TYPE="file" NAME="userfile">
  <BR>
  <INPUT TYPE="submit" VALUE="envoyer">
</p>
</form>
 
Mais je veux le passer en paramétres style uploadvf.php3?userfile=jesaispas...
Mais je sais pas quoi mettre a la place de jesaispas
?

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)