Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/07/2007, 18h07   #1
Invité de passage
 
Inscription : mai 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 22
Points : 3
Points : 3
Par défaut [Résolu] Passage de données en POST sans formulaire

Bonjour,

Vous trouvez peut-être cet intitulé ridicule, mais je ne vois pas d'autres solutions....

J'ai un formulaire qui doit executer un script php qui est en local et un autre qui est sur un autre serveur.

Comment puis-je faire pour que la validation de ce formulaire exécute mes deux scripts, sachant que je n'ai pas la main sur le formulaire présent sur l'autre serveur et que celui-ci attend des données en POST ?

Merci d'avance pour vos solutions...
juliotte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2007, 18h50   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
cURL, si allow_url_fopen est à On : file_get_contents (ou fopen) en redéfinissant le contexte (3e paramètre), les sockets (fonction fsockopen par exemple)
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2007, 19h09   #3
Invité de passage
 
Inscription : mai 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 22
Points : 3
Points : 3
Alors pour être très honnête avec toi, tu ne me parles pas en chinois mais presque...

Aurais-tu un exemple pour que je comprenne plus facilement ?

Merci,
juliotte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2007, 19h42   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Cela correspond bien à ce que vous vouliez ?

Des exemples, vous devriez trouver ce qu'il vous faut dans les liens ci-dessus Auriez-vous une préférence parmi les solutions citées, sachant que toutes ne sont pas possibles puisque dépendantes de la configuration de votre serveur (consulter la sortie de phpinfo) :
  • cURL : requiert l'extension éponyme
  • file_get_contents/fopen : requiert que le paramètre allow_url_fopen soit à On (vous permet d'utiliser des URL en plus des fichiers locaux)
  • fsockopen ne doit pas avoir été désactivée (disable_functions)

Auriez-vous un exemple de formulaire et les données correspondantes à transmettre ?
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2007, 10h54   #5
Invité de passage
 
Inscription : mai 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 22
Points : 3
Points : 3
Merci beaucoup d'apporter des réponses à mes questions

J'ai fait un phpinfo() sur mon serveur et j'ai pu voir que cURL est enable et allow_url_fopen est à on.
Je ne sais pas maintenant quelle solution est la plus simple...

Voici le type de formulaire que j'ai... tout ce qui est de plus simple...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Mon formulaire</title>
</head>
<script>
 
function validForm(){
	if(document.form1.getElementById('nom').value==''){
		alert('Saisir un nom');
	}
	else if(document.form1.getElementById('prenom').value==''){
		alert('Saisir un prenom');
	}
	else if(document.form1.getElementById('email').value==''){
		alert('Saisir un email');
	}
	else {
		document.form1.submit();
	}
}
 
</script>
<body>
 
<form id="form1" action="form_traitement.php" method="post">
Nom : <input type="text" id="nom" size="20" /><br />
Prénom : <input type="text" id="prenom" size="20" /><br />
e-mail : <input type="text" id="email" size="20" /><br /><br />
<input type="button" onclick="validForm();" value="Envoyer" /><br />
</form>
 
</body>
</html>
Donc, je souhaite que ce formulaire execute mon script "form_traitement.php" qui est sur mon serveur, mais aussi un script "http://www.site.fr/form_traitement.php" qui est sur un autre serveur. Sachant que "http://www.site.fr/form_traitement.php" attend des données en POST.

Voilà, j'espère avoir été claire...

Merci
juliotte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2007, 13h30   #6
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Dans ce cas il suffirait de renvoyer les variables POST de votre form_traitement.php à http://www.site.fr/form_traitement.php :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if (!empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['email'])) {
    # Traiter pour vous les données
    # ...
    # Réémettre la requête
    $ch = curl_init('http://www.site.fr/form_traitement.php ');
    curl_setopt($ch, CURLOPT_POST, TRUE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($_POST)); # http_build_query requiert PHP 5
    curl_setopt($ch, CURLOPT_NOBODY, TRUE);
    $ret = curl_exec($ch);
    if (!$ret) {
       echo curl_error($ch);
    }
    curl_close($ch);
}
Non ?
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2007, 11h58   #7
Invité de passage
 
Inscription : mai 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 22
Points : 3
Points : 3
Désolée de ne reprendre le sujet que maintenant, mais je ne me suis pas mise sur ce cas depuis quelque temps...

J'essaie depuis plusieurs jours de faire fonctionner ce script. Il fonctionne si j'appelle un script php qui ne fais que récupérer les variables POST. Mais si j'appelle la page qui m'intéresse, je n'ai aucun résultat... je me dis que la page attend peut-être des informations que je ne lui passe pas. Comme puis-je savoir d'où vient le problème ?

Peut-être faut-il des infos dans le header...
Je suis perdue... merci de votre aide.
juliotte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2007, 13h18   #8
Invité de passage
 
Inscription : mai 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 22
Points : 3
Points : 3
J'ai trouvé !

Je n'encodais pas mon tableau $_POST au format URL comme me l'avait précisé julp :
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($_POST));

Merci encore pour votre aide !
juliotte est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h09.


 
 
 
 
Partenaires

Hébergement Web