Double envoie lors d'une validation de formulaire?

Résolu
Monico9385 Messages postés 279 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 6 août 2007 - 10 avril 2006 à 16:07
Monico9385 Messages postés 279 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 6 août 2007 - 11 avril 2006 à 15:36
Bonjour à tous,



j'ai un petit soucis concernant un double envoie lors de la validation d'un formulaire, je m'explique :

j'ai sur un site un formulaire classique (nom, prenom, email...) et il
faut que je récupère ces informations sur 2 sites différents (celui où
est le formulaire, et un autre) . J'ai pensé aux headers, mais je vois
pas trop comment faire, car un location ne suffit pas... Les infos
recueillis sont ensuite envoyés dans une base de données, donc il faut
que j'enregistre mes infos dans la base du site où il y a le
formulaire, avant de faire ma redirection vers mon autre site.



Si quelqu'un à une idée?



Merci d'avance

14 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
11 avril 2006 à 15:07
<?php
$_POST['nom'] = 'Barbier';
$_POST['prenom'] = 'Johan';
$sReq = 'nom='.$_POST['nom'].'&prenom='.$_POST['prenom'].'';


//Tu crées ta requête post via header :
$header = 'POST /index.php HTTP/1.1'."\r\n";
$header .= 'HOST: leaguesoccer1.free.fr'."\r\n";
$header .= 'Content-Type: application/x-www-form-urlencoded'."\r\n";
$header .= 'Content-Length: ' . strlen($sReq)."\r\n\r\n";


//Tu ouvres un stream via fsockopen :
$fp = fsockopen ('leaguesoccer1.free.fr', 80, &$errno, &$errstr, 30);


if (!$fp)
{
// Il y a eu une erreur
echo "Une erreur s'est produite
\n";
echo "Numéro d'erreur : $errno
\n";
echo "Description : $errstr
\n";
} else {
//tu écris ta requête :
fputs ($fp, $header . $sReq);


//Tu récupères la réponse :
while ( !feof ($fp) ){
$sRep= fread($fp,1024);
echo $sRep;
}
}
fclose($fp);


?>
3
nougitch Messages postés 431 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 17 novembre 2008
10 avril 2006 à 16:18
Salut

Dans ton 'header', tu peux envoyer les variables avec la méthode GET.
Du type :
header("location:page.php?var1=$var1&var2=var2&varn=varn");

Je ne sais pas si c'est la meilleure solution mais c'en est une.

Cdt
0
Monico9385 Messages postés 279 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 6 août 2007
10 avril 2006 à 16:25
oui j'y ai pensé, mais le problème c'est qu'il faut pas que les informations soient passées en get mais en post :(
0
nougitch Messages postés 431 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 17 novembre 2008
10 avril 2006 à 16:48
Pourquoi est-ce qu'il te les faut impérativement en POST ?
Tu les récupères après comme tu veux.
0

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

Posez votre question
Monico9385 Messages postés 279 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 6 août 2007
10 avril 2006 à 16:53
bah il faut pas qu'elles soient visible dans l'url du navigateur! question de sécurité !!!
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
10 avril 2006 à 17:55
hello,

tu crées les arguments de ta requête :
$sReq = 'login=xxx&mdp=xxx';

Tu crées ta requête post via header :
$header .= 'POST ton_url HTTP/1.1'."\r\n";
$header .= 'HOST: ton_hote'."\r\n";
$header .= 'Content-Type: application/x-www-form-urlencoded'."\r\n";
$header .= 'Content-Length: ' . strlen($sReq)."\r\n\r\n";

Tu ouvres un stream via fsockopen :
$fp = fsockopen ($ton_serveur, 80, $errno, $errstr, 30);

tu écris ta requête :
fputs ($fp, $header . $sReq);

Tu récupères la réponse :
while ( !feof ($fp) ){
$sRep= fread($fp,1024);
echo $sRep;
}
0
Monico9385 Messages postés 279 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 6 août 2007
11 avril 2006 à 10:29
salut ! merci de ton aide. Apres consultation d'autres sites, il faut faire ca à première vu, mais c'est pas super évident :(

Qu'est ce que tu entends par : ton_url, ton_hote, ton_serveur ? qu'est ce que je dois mettre ?



Et sinon, moi la réponse je veux la récupérer sur un autre fichier, donc je dois redéclarer le $fp sur ce fichier?



Merci en tout cas !
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
11 avril 2006 à 11:35
Non, là tu écris ujne requête POST. DOnc sur le fichier de réception (précisé dans ton_url...) (HOST étant le serveur d'arrivée), tu récupères comme n'importe quel auytre post :
$_POST['login'] par exemple
0
Monico9385 Messages postés 279 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 6 août 2007
11 avril 2006 à 11:42
Ah ok ! tout simplement en effet !



par contre je comprend toujours pas ce qu'il faut mettre à la place de ton_host, ton_url et $ton_serveur ???



Disons que j'ai mon fichier qui contient mon formulaire, qui se situe
ici : http://www.monsite.com/formulaire.php, et j'ai mon 2eme fichier
qui recupere les infos ici : http://www.monsite2.fr/index.php



Ou je dois mettre ces url? si je dois les mettre déja :( ....



Merci
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
11 avril 2006 à 11:49
url = url d'arrivée : www.monsite2.fr/index.php

host = host d'arrivée : www.monsite2.fr (ou l'ip).
je pense, faut tester.
0
Monico9385 Messages postés 279 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 6 août 2007
11 avril 2006 à 13:08
Ah en effet ca marche un peu mieux, mais pas totalement car j'ai une erreur 400 maintenant :



HTTP/1.1 400 Bad Request
Date: Tue, 11 Apr 2006 10:06:00 GMT
Server: Apache/ProXad [Mar 28 2006 05:05:47]
Content-Type: text/html; charset=iso-8859-1





Bad Request


Your browser sent a request that this server could not understand.



Apache/ProXad [Mar 28 2006 05:05:41] Server at leaguesoccer1.free.fr Port 80
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
11 avril 2006 à 13:23
0
Monico9385 Messages postés 279 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 6 août 2007
11 avril 2006 à 14:45
ah je comprend pas d'ou vient l'erreur. J'ai beau lire ce que tu m'as donné, et comparé, je vois pas :(



j'ai fait ca :



$sReq = 'nom='.$_POST['nom'].'&prenom='.$_POST['prenom'].'';



//Tu crées ta requête post via header :

$header .= 'POST leaguesoccer1.free.fr/index.php HTTP/1.1'."\r\n";

$header .= 'HOST: leaguesoccer1.free.fr'."\r\n";

$header .= 'Content-Type: application/x-www-form-urlencoded'."\r\n";

$header .= 'Content-Length: ' . strlen($sReq)."\r\n\r\n";



//Tu ouvres un stream via fsockopen :

$fp = fsockopen ('http://leaguesoccer1.free.fr', 80, &$errno, &$errstr, 30);



if (!$fp)

{

// Il y a eu une erreur

echo "Une erreur s'est produite
\n";

echo "Numéro d'erreur : $errno
\n";

echo "Description : $errstr
\n";

} else {

//tu écris ta requête :

fputs ($fp, $header . $sReq);



//Tu récupères la réponse :

while ( !feof ($fp) ){

$sRep= fread($fp,1024);

echo $sRep;

}

}

fclose($fp);
0
Monico9385 Messages postés 279 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 6 août 2007
11 avril 2006 à 15:36
ah génial, ca marche nikel !!! Merci beaucoup
0
Rejoignez-nous