IONOS et header('Refresh...
Résolu
emrh
Messages postés
427
Date d'inscription
Statut
Membre
Dernière intervention
-
Pitet Messages postés 2826 Date d'inscription Statut Membre Dernière intervention -
Pitet Messages postés 2826 Date d'inscription Statut Membre Dernière intervention -
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 !
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:
- Gpt header corruption has been detected please check sata mode
- Mode avion - Guide
- Mode sécurisé samsung - Guide
- God mode - Guide
- Mode d'emploi - Guide
- Mode suivi des modifications - Guide
2 réponses
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...
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...
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)
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)