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 ?

5 réponses


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.

gweared
Auteur

Comme ceci ?

<script>
setTimeout(function(){
    window.location.href = 'XX';
}, 3000);
</script>

Par exemple :)

gweared
Auteur
    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).

  • on écrit dans le header avec la fonction header.
  • on écrit dans le body avec 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 :

  • passer un paramètre GET.
  • Stocker en session l'information.

    J'espère t'avoir aidé !