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] Pb avec le header et meta


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 130
    Par défaut [PHP-JS] Pb avec le header et meta
    salut !

    je solicite votre aide pour un pb un peu bisard que je rencontre en ce moment avec mes redirections...

    J'explik vite fait: j'ai une page de recherche ds laquelle il y a un formulaire, au Submit le formulaire fait appel a la page recherche.php.
    Cette page là verifie si o moins un champs du formulaire est rempli.
    Si OUI je effectue la recherche ( ca marche nikel)
    si NON je redirige vers la page contenant le formulaire.

    Le pb est que la syntaxe que j'utilise pour la redirection ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    if(($nom == "") && ($prenom == "") && ($fonction == "") && ($ville == ""))
      {
        // alors rien n'a ete rempli ds le formulaire donc on retourne a l'accueil.
        header("Location: ./intra_v1.php?p=Accueil");
      }
    l'erreur retourner est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Warning: Cannot modify header information - headers already sent by
    Apres ca je me suis dis qu'en utilisant le méta ca marcherai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    echo '<meta http-equiv="refresh" content="0; url=intra_v1.php?page=Accueil>';
    Mais le résultat est pas bon car cela m'affiche la ligne de code sans faire de redirection !

    Puis sans vraiment m'en rendre compte j'ai utilisé les deux syntaxe a la fois et la par miracle sa marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    if(($nom == "") && ($prenom == "") && ($fonction == "") && ($ville == ""))
      {
        // alors rien n'a ete rempli ds le formulaire donc on retourne a l'accueil.
        echo '<meta http-equiv="refresh" content="0; url=intra_v1.php?page=Accueil>';
        echo 'header("Location: ./intra_v1.php?p=Accueil")';
      }

    Donc je souhaiterai savoir s'il y a une explication a ca ??? et surtout s'il n'y a pas une syntaxe plus simple et moins "Bricolé" ???

    Merci d'avance ...

  2. #2
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    C'est bizarre tout ça, dans ta version meta je penses que tu as un souci avec tes guillemets...
    Pour le header il faut rien mettre avant pas de code HTML ou d'espace
    http://php.developpez.com/faq/?page=...s_already_sent

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 130
    Par défaut
    Merci bien !

    effectivment un guillemet oublié !

    Si je comprend bien ! dans mon cas c'est impossible d'utiliser le Header .
    Je trouve bisard car pourtant pour les pages php il faut utiliser cette fonction ;.. bref

    encore merci !

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    Il n'est pas impossible d'utilise header mais il faut le faire correctement. Rien ne doit être envoyé au navigateur avant d'appeler cette fonction : pas d'espace, pas de passage à la ligne, rien.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 130
    Par défaut
    voici le debut de la page Recherche.php

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
     
     
    <?
    //-----------------------------------------
    // FICHIER QUI VA ENREGISTRER LES DONNEES TRANSMISSENT PAR LE FORMULAIRE
    //------------------------------------------------------------------------
     
    //récupération de $limite
        if(isset($_GET['limite']))
        {
          $limite=$_GET['limite'];
        }
        else   $limite=0;
     
    function verifLimite($limite,$total,$nombre) {
        // je verifie si limite est un nombre.
        if(is_numeric($limite)) {
     
    // si $limite est entre 0 et $total, $limite est ok
            // sinon $limite n'est pas valide.
            if(($limite >=0) && ($limite <= $total) && (($limite%$nombre)==0)) {
                // j'assigne 1 à $valide si $limite est entre 0 et $max
                $valide = 1;
            }    
            else {
                // sinon j'assigne 0 à $valide
                $valide = 0;
            }
        }
        else {
                // si $limite n'est pas numérique j'assigne 0 à $valide
                $valide = 0;
        }
    // je renvois $valide
    return $valide;
    }
     
    $tab_criteres[0] = ""; // tableau recapitulatif des criteres de recherche
     
    //---------------
    // RECUPERATION DES DONNEES.
    //----------------------------
    if(isset($_POST['rechercher']))
    {
      // on remplit le tableua de criteres de recherche
      $tab_criteres[0] = $nom = $_POST['nom'];
      $tab_criteres[1] = $prenom = $_POST['prenom'];
      $tab_criteres[2] = $fonction = $_POST['fonction'];
      $tab_criteres[3] = $ville = $_POST['ville'];
     
      if(($nom == "") && ($prenom == "") && ($fonction == "") && ($ville == ""))
      {
        // alors rien n'a ete rempli ds le formulaire donc on retourne a l'accueil.
        echo '<meta http-equiv="refresh" content="0; url=intra_v1.php?page=Accueil">';
        //echo 'header("Location: ./intra_v1.php?p=Accueil")';
      }
      else...
    si vous trouvez une soluce !

  6. #6
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    C'est évident, et la réponse se trouve dans la FAQ :
    http://php.developpez.com/faq/?page=...s_already_sent

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 130
    Par défaut
    d'accord ! mais si rien ne doit etre envoyé comment faire des test ou mettre en place des conditions pour la redirection

    car si je ne met rien avance il y aura redirection sans avoir pu traiter les infos poster ....???

    je trouve po logique ...

  8. #8
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 869
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 869
    Par défaut
    Ton fichier php doit commencer par <?php sans espace avant ni aucun texte. Dans l'exemple que tu as donné, il y a des retours à la ligne avant.

  9. #9
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 869
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 869
    Par défaut
    Salut,

    Ta solution première ( utiliser la fonction header avec Location ) est la meilleure.

    Il faut juste t'arranger pour ne faire aucun affichage ( ton fichier php doit commencer par <?php sans espace avant ni aucun texte ) avant l'utilisation de la fonction header.

    Si tu places des cookies aussi ça peut poser un problème, car ceci implique l'envoie d'un header.

    Peux-tu poster la totalité de ta page PHP ? On pourra alors t'aider plus précisément si tu ne trouves pas l'endroit où tu fais un affichage.

    A+

  10. #10
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 869
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 869
    Par défaut
    PS : dans ta deuxième solution, tu as oublié un double quote :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<meta http-equiv="refresh" content="0; url=intra_v1.php?page=Accueil">';

Discussions similaires

  1. Réponses: 12
    Dernier message: 05/11/2008, 20h43
  2. [PHP-JS] Probleme avec le header
    Par kev484 dans le forum Langage
    Réponses: 18
    Dernier message: 14/12/2007, 17h20
  3. [PHP-JS] Comment créer une boucle avec des headers
    Par djinnwatcher dans le forum Langage
    Réponses: 10
    Dernier message: 17/07/2006, 15h48
  4. Réponses: 5
    Dernier message: 11/04/2006, 18h12
  5. Réponses: 3
    Dernier message: 11/04/2006, 10h00

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