Enregistrement variable $_POST php

cs_rocker Messages postés 23 Date d'inscription mardi 11 octobre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 19 déc. 2011 à 04:55
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 - 21 déc. 2011 à 13:51
Bonjour a tous !

Alors je vous explique mon probleme. Je galere enormement a ce point.

Bref voila je vous explique:

en gros, mon executable vb6 dois pouvoir envoyer le contenu des variables $_POST d'une page php.

Voici ma page php

<?php

$date = $_POST['date']; 
$filename = $_POST['filename'];
$description = $_POST['description'];
$url = $_POST['url'];
$origin = $_POST['origin'];
$nfo = $_POST['nfo'];
$picture = $_POST['picture'];
$user = $_POST['user'];





// connection a la bdd
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=dbhost;dbname=dbname', 'db', 'password', $pdo_options);


//envois de la query

$req = $bdd->prepare('INSERT INTO w_app_windows(Date, File_Name, Description, URL, Origin, NFO, Picture, User, CommentsCount) VALUES(:Date, :File_Name, :Description, :URL, :Origin, :NFO, :Picture, :User, :CommentsCount)');
$req->execute(array(
'Date' => $date,
'File_Name' => $filename,
'Description' => $description,
'URL' => $url,
'Origin' => $origin,
'NFO' => $nfo,
        'Picture' => $picture,
        'User' => $user,
        'CommentsCount' => 0

));

?>$<?php


}
catch (Exception $e)
{
        die('Error contact admin '.$e->getMessage());
}
?>


Donc, comme vous pouvez le voir, je dois envoyer les donnees dans les POST. Sois via formulaire, hidden.

Je ne peux pas utiliser de variable $_GET pour raison du nombre de charactere.

Bref, je sais pas trop par ou commencer.

Je sais pas si je dois partir avec l'idee d'utiliser un winsock ou un inet.

J'ai lu certain truc sur l'envois dans les header dans la variable. Ce qui est logique.

Merci de m'éclairer !

6 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
19 déc. 2011 à 05:35
Salut

Winsock, oui, mais ce sera à toi de gérer tout l'emballage de la requète - c'est long et chiant à faire.
iNet : Il sait gérer un POST ou GET dans sa méthode .Execute
Je pense que ce sera plus simple.
Il doit surement y avoir des exemples parmi les sources

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_rocker Messages postés 23 Date d'inscription mardi 11 octobre 2005 Statut Membre Dernière intervention 21 décembre 2011
19 déc. 2011 à 16:44
Merci pour la réponse.

Sauf petit détail:`

Je retrouve facilement comment envoyer les donnees dans une variable $_get mais pour le $_POST, ca semble plus compliquer.

voici l'example d'un code trouver sur vbfrance:

Private Sub Command1_Click()

Dim strURL As String, strFormData As String

strURL = "192.168.3.2/ìndex.php"             //l'adresse du serveur à la maison

strFormData = "ppp=xxx"

Inet1.Execute strURL, "POST", strFormData

         End Sub



Sauf si je suis le code, la donnees PPP semble envoyer via l'url (Utilisation alors du $_GET).

ce qui donnerais plutot:

192.168.3.22/index.php?ppp=xxx

Je me trompe ?

Merci !
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 30
20 déc. 2011 à 21:56
Salut,

Plutôt étrange. Tu as regardé à l'aide d'un sniffer genre Wireshark ? attention il faut que les données envoyées via le formulaire respectent bien le formulaire web original. Les noms des champs respecent la case ! PPP n'est pas ppp.

Aussi les données envoyées doivent être encodées. Pas de fonction native en vb6 mais peut être une piste ici

Un exemple donc :

Dim Datas As String
Dim ppp As String
ppp = "xxx"
Datas = "ppp=" & urlencode(ppp)


Bien entendu encoder "xxx" ne sert pas à grand chose mais si les données comportent des accents ou caractères spéciaux doivent l'être.

Ne pas encoder la chaine entière mais juste les données. Et bien penser à concaténer les champs et leurs valeurs via le "&"

Dim Datas As String
Dim ppp As String
Dim qqq As String
ppp = "xxx"
qqq = "yyy"
Datas = "ppp=" & urlencode(ppp) & "&qqq=" & urlencode(qqq)


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
cs_rocker Messages postés 23 Date d'inscription mardi 11 octobre 2005 Statut Membre Dernière intervention 21 décembre 2011
21 déc. 2011 à 00:40
tres interessant merci a tous
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
21 déc. 2011 à 12:57
Parmi les outils, il y a aussi <Fiddler> qui est beaucoup plus simple que WireShark et plus adapté aux échanges HTTP.
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 30
21 déc. 2011 à 13:51
Effectivement! Beaucoup plus adapté et très pratique. Je ne connaissais pas.

Merci Jack =)


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0