IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[PHP-JS] Redirection sans passer par les headers


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut [PHP-JS] Redirection sans passer par les headers
    Bonsoir à tous
    est il possible de changer de page sans passer par les headers?
    Je voudrais savoir car j'effectue un traitement et lorsqu'il réussi je voudrait automatiquement rediriger vers une autre page
    le probleme est que je fais déjà afficher quelque chose dans ma page lors du traitement, donc je ne peux effectuer la redirection

    Est-ce possible ou encore y a t il une petite astuce a envisager?

    merci beaucoup
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    SAlut,

    il faut que tu utilises les fonctions de "temporisations de sorties", cf http://www.php.net/manual/fr/ref.outcontrol.php

    Quand ton script commence tu lances la bufferisation ainsi :
    Quand vient la fin du script, tu executes :
    Ce qui provoquera l'envoi du buffer au navigateur.

    Entre ces deux moment aucune données ne sera envoyé au client.
    Ce qui te permets d'utiliser :
    Pour vider le buffer, puis lancer un header.

    Comme il est possible d'avoir plusieurs profondeurs de tampons(buffer), il existe la fonciton suivante :
    A l'usage je m'en sert comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
     
    //Debut du script
    ob_start();
    	function effacerContenuGenere()
    	{
    		for( $i=0; $i<ob_get_level(); $i++ )
    			ob_end_clean();
    	}
     
     
    	function recharger( $url_de_destination )
    	{
    		effacerContenuGenere();
    		header("Location: ".$url_de_destination);
    		die();
    	}
     
    echo "toto";
     
    recharger( "http://www.developpez.net" );
     
    echo "ceci ne sera jamais affiché. tout comme l'echo précédent puisqu'effacé du buffer....";
     
    // Fin du script
    ob_flush(); // Optionnel

    voila,

    bye

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    en mettant le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if( condition ) 
    		{ 
    		echo '<meta http-equiv="refresh" content="0;URL=mapage.php">';
    		exit(); 
    		}
    en théorie, et pour être valide, une telle balise meta doit se mettre dans le head

    mais j'ai essayé en la mettant au milieu de mon body, et cela fonctionne sous ie, netscape et mozilla

  4. #4
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2006
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2006
    Messages : 215
    Points : 256
    Points
    256
    Par défaut
    Salut,

    pour compléter tu peux utiliser sinon javascript

    sahid

  5. #5
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    ok merci pour vos réponses
    j'ai fait avec le méta et ca fonctionne
    mais merci encore pour toute les idées
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 14/05/2008, 18h31
  2. Réponses: 3
    Dernier message: 28/09/2007, 11h44
  3. Réponses: 16
    Dernier message: 06/06/2007, 12h42
  4. Réponses: 10
    Dernier message: 24/02/2004, 12h28
  5. Afficher une image sans passer par les textures
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/05/2003, 19h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo