Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

formulaire : submit = 2 actions avec php ?

12 réponses
Avatar
laurent.D
Bonjour,

j'ai un petit problème...
J'ai un formulaire de commande (bouton "acheter" paypal).
Quand le client clique sur ce bouton, cela appelle une page sécurisée
pour payer chez PayPal.
Je voudrais que cela déclenche en même temps (avec le même click)l'envoi
d'un mail en utilisant la fonction mail php.
Il y a bien des solutions, mais je ne veux pas utiliser de javascript.
Peut on en php faire en sorte qu'il y ai 2 actions simultanées avec le
submit du formulaire ?
En clair :
click bouton acheter = envoi simultané du formulaire paypal et d'un mail
de sécurité (sans javascript)

Merci d'avance (je débute)

10 réponses

1 2
Avatar
Olivier Miakinen

J'ai un formulaire de commande (bouton "acheter" paypal).
Quand le client clique sur ce bouton, cela appelle une page sécurisée
pour payer chez PayPal.
Je voudrais que cela déclenche en même temps (avec le même click)l'envoi
d'un mail en utilisant la fonction mail php.
Il y a bien des solutions, mais je ne veux pas utiliser de javascript.
Peut on en php faire en sorte qu'il y ai 2 actions simultanées avec le
submit du formulaire ?
En clair :
click bouton acheter = envoi simultané du formulaire paypal et d'un mail
de sécurité (sans javascript)


Tout dépend comment est appelée la page sécurisée chez PayPal. Si c'est
un GET, tu peux faire la chose suivante :

1) Le clic appelle un script PHP que tu auras écrit.
2) Le script envoie le mail.
3) Le script retourne comme résultat un header('Location') avec comme
destination de la redirection la page Paypal.

Si au contraire c'est un POST, à moins qu'on puisse faire une
redirection avec une page en POST, ce que je ne crois pas possible,
je ne vois pas comment faire.

Avatar
ryckoort fabien
Bonjour,

Pourquoi ne pas faire une petite fonction en javascript ?.
ce serai plus rapide qu'en php déja et peut être meme plus simple, j'ai pas
le temp de te donner un exemple je m'en vais la ... mais regarde un peu ce
que tu peux faire en JS
bonne chance, a bientot

fabien .
"Olivier Miakinen" <om+ a écrit dans le message de
news:cmrltq$1fn9$

J'ai un formulaire de commande (bouton "acheter" paypal).
Quand le client clique sur ce bouton, cela appelle une page sécurisée
pour payer chez PayPal.
Je voudrais que cela déclenche en même temps (avec le même click)l'envoi
d'un mail en utilisant la fonction mail php.
Il y a bien des solutions, mais je ne veux pas utiliser de javascript.
Peut on en php faire en sorte qu'il y ai 2 actions simultanées avec le
submit du formulaire ?
En clair :
click bouton acheter = envoi simultané du formulaire paypal et d'un mail
de sécurité (sans javascript)


Tout dépend comment est appelée la page sécurisée chez PayPal. Si c'est
un GET, tu peux faire la chose suivante :

1) Le clic appelle un script PHP que tu auras écrit.
2) Le script envoie le mail.
3) Le script retourne comme résultat un header('Location') avec comme
destination de la redirection la page Paypal.

Si au contraire c'est un POST, à moins qu'on puisse faire une
redirection avec une page en POST, ce que je ne crois pas possible,
je ne vois pas comment faire.



Avatar
laurent.D

Si au contraire c'est un POST, à moins qu'on puisse faire une
redirection avec une page en POST, ce que je ne crois pas possible,
je ne vois pas comment faire.


C'est un POST...

N'y a t'il aucun moyen de valider un bouton "submit" autrement que
l'action physique d'un click ? (autre que javascript)

Avatar
Pascal (Collectours)
Olivier Miakinen wrote:

[snip]

Si au contraire c'est un POST, à moins qu'on puisse faire une
redirection avec une page en POST, ce que je ne crois pas possible,
je ne vois pas comment faire.
Bonjour,

c'est possible si curl est intégré à php

$ch = curl_init();
// l'url ou poster ou 'getter'
curl_setopt($ch, CURLOPT_URL , $url);
// le user agent
curl_setopt($ch, CURLOPT_USERAGENT , 'mon user agent');
/ retour du résultat
curl_setopt($ch, CURLOPT_RETURNTRANSFER , 1);
curl_setopt($ch, CURLOPT_HEADER , 0);
// * si on veut suivre les redirections eventuelles du distant
curl_setopt($ch, CURLOPT_FOLLOWLOCATION , 0);
// suivant la méthode originelle
switch($_SERVER['REQUEST_METHOD']) {
case 'POST':
// prepare les params à poster
$post_params = array();
foreach ($_POST AS $k=>$v) {
$post_params[] = $k.'='.urlencode($v);
}
curl_setopt($ch, CURLOPT_POST , 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, implode('&', $post_params));
break;
default:
case 'GET':
curl_setopt($ch, CURLOPT_HTTPGET, 1);
break;
}
$result= curl_exec ($ch) or die("$url not openable");
// ou gestion d'erreur plus adaptée
curl_close ($ch);
/* Le retour de la page est dans result */
On peut ne décider de ne faire l'envoi du mail que sur succès de cette
opération.
Cordialement
Pascal

Avatar
P'tit Marcel
Olivier Miakinen wrote:

Tout dépend comment est appelée la page sécurisée chez PayPal. Si c'est
un GET, tu peux faire la chose suivante :

1) Le clic appelle un script PHP que tu auras écrit.
2) Le script envoie le mail.
3) Le script retourne comme résultat un header('Location') avec comme
destination de la redirection la page Paypal.

Si au contraire c'est un POST, à moins qu'on puisse faire une
redirection avec une page en POST, ce que je ne crois pas possible,



Je me demande justement pourquoi Php ne pourrait pas provoquer une
redirection en POST. Sur le plan HTTP, c'est quasiment comme un GET si
ce n'est que l'on a quelques entêtes en plus...

J'ai tenté un script comme ça mais, à cause du content-type, IE comme
Mozilla demande où sauvegarder les données reçues :(

<?php
header("POST /lechemin/lescript.php HTTP/1.1");
header("Host: www.ledomaine.fr");
header("Content-Length: latailledeladernierelignedentete");
header("Content-Type: application/x-www-form-urlencoded");
header(" ");
header("var1=val1&var2=val2&var3=val3&submit=Valider");
?>


Est-ce que quelqu'un a déjà essayé un truc du genre ?

Avatar
laurent.D
Bonjour,

Pourquoi ne pas faire une petite fonction en javascript ?.
ce serai plus rapide qu'en php déja et peut être meme plus simple, j'ai pas
le temp de te donner un exemple je m'en vais la ... mais regarde un peu ce
que tu peux faire en JS
bonne chance, a bientot


Le problème est que javascript s'éxécute coté client, avec les risques
de désactivation. Sur un processus de paiement, c'est un peu limite.
Mais effectivement, si je ne trouve pas d'autre solution...
Merci

Avatar
marc.quinton-PAS-DE-
laurent.D wrote:


N'y a t'il aucun moyen de valider un bouton "submit" autrement que
l'action physique d'un click ? (autre que javascript)


si en javascript ... et tu peux faire du post ou du get
ou transformer du get en post et inversement.

Avatar
Jerome
laurent.D wrote:
Le problème est que javascript s'éxécute coté client, avec les risques
de désactivation. Sur un processus de paiement, c'est un peu limite.


Sur ta page :

<script>
function tafonction() {
window.location('submitautoduform.php');
</script>
<form action="actionpaypal">
...
<input type="submit" OnClick="tafonction;return false;">
</form>


Et sur une page submitautoduform :

<?php
mail(...);
?>
<form action="actionpaypal">
...
</form>
<script>
javascript qui valide auto le formulaire
</script>



Si le javascript est activé, tu passes par la fonction javascript et
donc par ta page qui fera l'envoi du mail et l'auto submit du formulaire.

Si il est désactivé, l'action du form prend le relais et tu auras au
moins le paiement.

--
Jérôme

Avatar
Olivier Miakinen

Je me demande justement pourquoi Php ne pourrait pas provoquer une
redirection en POST.


Parce que ce n'est pas prévu ?

Sur le plan HTTP, c'est quasiment comme un GET si
ce n'est que l'on a quelques entêtes en plus...


Oui, mais le problème c'est que ton script PHP, qui est du côté du
serveur, ne fait pas un GET. Il envoie une réponse qui indique une
redirection à faire par le client.

J'ai tenté un script comme ça mais, à cause du content-type, IE comme
Mozilla demande où sauvegarder les données reçues :(

<?php
header("POST /lechemin/lescript.php HTTP/1.1");
header("Host: www.ledomaine.fr");
header("Content-Length: latailledeladernierelignedentete");
header("Content-Type: application/x-www-form-urlencoded");
header(" ");
header("var1=val1&var2=val2&var3=val3&submit=Valider");
?>


Tu ne serais pas par hasard en train d'envoyer une requête POST du
serveur vers le client, au lieu de faire une réponse ?

Avatar
laurent.D

/* Le retour de la page est dans result */
On peut ne décider de ne faire l'envoi du mail que sur succès de cette
opération.
Cordialement
Pascal


Merci Pascal :)

1 2