Maison  >  Questions et réponses  >  le corps du texte

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>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粉060528326P粉060528326410 Il y a quelques jours486

répondre à tous(1)je répondrai

  • P粉055726146

    P粉0557261462023-09-06 13:54:44

    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

    répondre
    0
  • Annulerrépondre