où est le problème? Ce simple formulaire HTML/PHP fonctionne correctement lorsqu'il est testé localement mais échoue sur le serveur en direct
P粉060528326
P粉060528326 2023-09-05 17:03:39
0
1
323
<p>Je souhaite ajouter un formulaire « Envoyer un message » à mon site Web existant. J'ai trouvé ce tutoriel : </p> <p>Formulaire de contact PHP</p> <p>J'ai examiné le code du didacticiel, appris son fonctionnement, puis l'ai programmé. Je l'ai fait fonctionner et j'ai tout testé sur mon PC et cela fonctionne parfaitement. </p> <p>Je l'ai ensuite mis sur le serveur dans le cadre d'un site Web existant. mais a échoué. Cliquer sur le bouton Soumettre efface l'écran et le formulaire disparaît. Aucun message d'erreur. Rien du tout. </p> <p>XAMPP et le serveur actuel exécutent PHP version 8.1.12. </p> <p>Il échoue sur cette ligne de code PHP : header('Location: contact.php', true, 303);</p> <p>J'ai passé beaucoup de temps à déboguer ce problème, à en apprendre davantage sur PHP, à suivre les conseils trouvés sur Stack Overflow et à lire la documentation PHP sur la fonction header(). J'ai également suivi deux cours LinkedIn Learning PHP. Mais je n'arrive pas à comprendre où est le problème. </p> <p>J'ai ensuite réduit le problème à ce simple code, en le rendant aussi simple que possible avec juste un formulaire contenant un bouton de soumission. Il présente le même problème que le formulaire complet. </p> <p>Voici mon code de test : </p> <pre class="brush:php;toolbar:false;"><!doctype html> <html lang="fr"> <tête> <!-- Balises méta obligatoires --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, Shrink-to-fit=no"> <titre>Contact</titre> ≪/tête> <?php session_start(); $request_method = strtoupper($_SERVER['REQUEST_METHOD']); si ($request_method === 'GET'){ ?><form action="for_stack_overflow.php" méthode="post"> <type de bouton="soumettre">Envoyer un message</bouton> </formulaire> <?php } elseif ($request_method === 'POST'){ header('Emplacement : for_stack_overflow.php', true, 303); sortie; } ?></html></pre> <p>Ce simple code html/php a le même problème que mon formulaire complet : après avoir cliqué sur le bouton Soumettre, l'écran est effacé, ne laissant qu'un bouton de formulaire. Le formulaire ne fonctionne pas. </p> <p>J'ai intentionnellement supprimé toutes les indentations car j'ai appris qu'un problème courant est que les caractères d'espacement invisibles provoquent l'échec de la fonction PHP header().</p> <p>Ce programme (et mon formulaire complet) chacun : </p> <ol> <li>Fonctionne parfaitement lorsqu'il est testé localement sur mon PC ;</li> <li>Il échoue lors de l'exécution sur mon compte d'hébergement de site Web sur un serveur réel. ≪/li> </ol> <p>J'ai fait de mon mieux pour résoudre ce problème. </p> <p>Qu'est-ce qui n'a pas fonctionné ? Qu'est ce qui pourrait aller mal? Y a-t-il quelque chose que je ne comprends pas ? </p>
P粉060528326
P粉060528326

répondre à tous(1)
P粉055726146

Déplacez header()session_start() l'appel avant la sortie HTML.

<?php session_start();
...
?>
<!doctype html>
...

Référence : https://www.php.net/manual/en/function.header.php

Référence : https://www.php.net/manual/en/function.session-start.php

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!