Redirection et envoi de données via POST en PHP
En PHP, vous pouvez rencontrer une situation où vous devez rediriger un utilisateur vers un serveur externe site Web et transmettre des données à ce site Web via POST. Contrairement aux formulaires HTML, PHP ne prend pas en charge ce comportement de manière native.
GET vs. POST
Dans le développement Web, il existe deux méthodes principales pour envoyer des données à partir d'une source. vers une destination :
PHP fournit une méthode simple pour envoyer des données via GET à l'aide de la fonction d'en-tête. Par exemple :
<code class="php">header('Location: http://www.provider.com/process.jsp?id=12345&name=John');</code>
POST avec PHP
Cependant, PHP ne peut pas envoyer directement des données via POST sans s'appuyer sur des bibliothèques externes ou des manipulations du navigateur. Une approche possible consiste à utiliser la bibliothèque cURL pour effectuer des requêtes POST. Cependant, cela nécessite que le code PHP agisse en tant que client, ce qui n'est pas toujours souhaitable.
Une solution alternative consiste à générer dynamiquement un formulaire HTML à l'aide de PHP, à le remplir avec les données requises et à le soumettre via JavaScript. Cette approche vous permet d'exploiter POST sans gérer directement la requête en PHP. Le code suivant illustre ce concept :
<code class="php">// Generate HTML form with hidden fields $html = '<form action="http://www.provider.com/process.jsp" method="post">'; $html .= '<input type="hidden" name="id" value="12345">'; $html .= '<input type="hidden" name="name" value="John">'; $html .= '<script>document.onload = function() { document.forms[0].submit(); }</script>';</code>
Ce code crée un formulaire HTML qui se soumettra automatiquement à l'URL spécifiée lors du chargement de la page. Bien que cette méthode repose sur la prise en charge du navigateur, elle permet la transmission de données POST depuis PHP.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!