Bonjour,
J'ai actuellement un questionnaire avec différentes questions et quand toutes les questions ont été posées, je fais un
header('Refresh: 3; URL =XX');
pour revenir à la page d'accueil.
En local, tout marchait correctement mais une fois passé sur le serveur, celui-ci ne marche plus. Serais-ce possible que le serveur est un impact sur le code ou pas ?
Parfois les server n'ont pas la réécriture d'url d'activé. Ca peut venir de là.
Sinon ca peut venir de la fonction php en elle même qui est mal interprété.
Essaie une redirection en JS.
Comme ceci ?
<script>
setTimeout(function(){
window.location.href = 'XX';
}, 3000);
</script>
if ($nb_sondage == 0) {
session_destroy();
echo '<h2>Merci de votre participation.</h2>';
echo '</br>';
//header('Refresh: 3; URL = ./index.php?id=0');
header('Refresh: 3; URL = XXX');
exit();
}
J'ai vu que le fait de mettre des echo avant pouvait empecher le bon fonctionnement du header. Pourtant en local sa marche très bien.
Je comprend donc pas pourquoi une fois en ligne cela ne marche pas..
C'est une très mauvaise façon de faire, tu devrais plutôt utiliser une redirection 302 http://www.redirection-web.net/redirection-302.php
ensuite pour comprendre ton précédent problème, il faut comprendre comment fonctionne une requête HTTP dans ces basiques, tu as une partie header (pour entête ou meta donnée) et une partie body (le corp de ta requête, les informations en sommes).
header
.echo
, printf
, print_r
, var_dump
...dans ces méchaniques par défaut (PHP4 ?), php est incapable de réécrire les header une fois que tu as commencé à ecrire dans le body.
Enfin, tu dois surement te demander "mais comment passer des données à cette nouvelle page affiché après la redirection 302 ?", tu as deux solutions :
Stocker en session l'information.
J'espère t'avoir aidé !