web-dev-qa-db-fra.com

POST données vers un autre formulaire avec php

Je veux créer un formulaire sur ma page pour obtenir des informations, cela se fait facilement et le problème.

Je veux 'poster' des informations sur ma propre page php, en créant un nouvel identifiant et en les sauvegardant dans ma base de données. Et puis cette page devrait rediriger vers la page externe via "POST" avec id, prix et ainsi de suite.

La page externe est une page à payer, le client doit donc obtenir ce site externe et pouvoir l'utiliser comme une page normale (peut-être target = "_ blank").

En bref:

  1. Le client fournit des informations telles que l'article à acheter, le montant de l'achat, l'adresse de livraison, etc.

  2. Les informations seront enregistrées dans la base de données et devront générer un nouvel identifiant client.

  3. Page redirige vers la page de paiement externe, identifiant d'envoi, prix, informations de paiement via 'POST'.

Mon problème est, comment rediriger vers la page externe mais en envoyant des informations personnalisées via 'POST'.

1
robin591

Vous pouvez réellement envoyer n'importe quel formulaire via POST vers n'importe quelle page (même s'il réside sur un serveur distant). Donc tant que vous spécifiez l'URL de la page CGI (PHP, Perl, Python), cela devrait fonctionner.

En PHP, vous pouvez envoyer des informations d’en-tête (et donc des redirections) à n’importe quelle page du serveur local ou distant, et ce, après la soumission du formulaire.

Bien sûr, dans l'exemple ci-dessous, les choses sont généralisées. Vous voudriez ajouter des qualificatifs pour "si le formulaire a une erreur" ou "s'il est impossible de soumettre des données", alors n'envoyez pas d'utilisateur à la nouvelle page. Mais j'espère que les concepts s'avéreront utiles.

<?php
$target = 'path-to-post-processor.php'; //leave blank to submit to self
if(isset($_POST['submit']))
{
    header('Location: http://example.com/other/page.html');
}
?>
<!--submit form via POST-->
<form action="<?php echo $target;?>" method="post">
<input name="something" type="text" maxlength="12" />
<input name="submit" type="submit" />
</form>

Je suppose également que la base de données est déjà configurée. Si vous rencontrez toujours des problèmes, ajoutez plus de détails à votre question (qu'avez-vous essayé, quelles sont les erreurs) et nous pourrons ensuite partir de là.

1
ionFish

Vous pouvez choisir d'utiliser une méthode de cookie, car s'ils actualisent la page, ils risquent de perdre les données de publication.

Par exemple:

  1. Le client remplit les informations d'adresse et autres détails qui sont ensuite sauvegardés dans la base de données MySQL et se voient attribuer un ID client unique. Cet identifiant est ensuite enregistré en tant que cookie sur la machine du client. Une fois le cookie enregistré, vous le transmettez à la page suivante, à savoir la page de paiement.

  2. Sur la page de paiement, vous récupérez ensuite les données SQL en fonction de l'ID client détenu dans Cookie.

Une autre solution consiste à ne pas rediriger et à utiliser une solution Ajax.

0
Simon Hayter