IONOS et header('Refresh...

Résolu/Fermé
emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 - Modifié le 20 nov. 2021 à 14:54
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 20 nov. 2021 à 16:48
Bonjour à tous,

Je voudrais éviter d'utiliser du JavaScript pour revenir à la page précédente après la validation
d'un formulaire, ou en cas d'oubli d'un champ. J'utilise donc cette syntaxe PHP :
header('Refresh: 3; URL= contrat-ajout1.php');

Alors que cette commande fonctionne parfaitement bien en local, je constate qu'une fois la page sur le serveur d'IONOS il ne se passe plus rien !
J'ai fait quelques recherche et essayé l'ajout d'une page php.ini avec cette commande output_buffering = on, mais rien n'y fait. L'assistance IONOS ne peut/veut pas m'aider et avant de me résigner à un window.setTimeout('history.back();', 4000); en JavaScript, je voulais m'assurer qu'il n'y avait pas d'autre solution...

(Je précise que mon formulaire possède tous les champs obligatoires à required, seules des prestations en $chaine en Javascript échappent aux contrôles avt l'envoi du formulaire ainsi que les input de type number qui ne doivent pas être à 0 au moment de l'INSERT)

Merci d'avance pour vos suggestions !
A voir également:

2 réponses

emrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 20
20 nov. 2021 à 15:03
Je viens de trouver à l'instant que l'ajout de
ob_start();
en tête de page concernée par
header('Refresh: 3; URL= contrat-ajout1.php');
réglait le problème...

Je laisse mon post au cas où cela servirait à quelqu'un...
1
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
20 nov. 2021 à 16:48
Bonjour,

Il s'agit surement de l'erreur très commune "headers already sent".
A lire sur la documentation php :
N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichages PHP.
https://www.php.net/manual/fr/function.header.php

L'activation de la temporisation de sortie (output_buffering), qui doit être activée sur ton environnement local, permet effectivement de cacher l'erreur. L'idéal serait plutôt de la corriger.

Tu peux consulter le journal d'erreur (error log) de ton serveur, ou activer l'affichage des erreurs juste le temps corriger (un site en ligne ne doit pas afficher les erreurs php en temps normal).
Il doit y avoir une erreur php indiquant le fichier et la ligne où du contenu est envoyé au client avant l'utilisation de la fonction header() :
headers already sent by (output started at /chemin/exemple.php:17)
1