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
2023-09-05 17:03:39
<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>
Déplacez
header()
和session_start()
l'appel avant la sortie 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