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 :

Redirection avec la fonction header [Fait]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 36
    Points : 23
    Points
    23
    Par défaut Redirection avec la fonction header
    Bonjour à tous,

    Voila mon probleme :

    Je dispose d'un formulaire d'identification sur mon "index.php". Ce formulaire envoie les informations a une page "verifLogin.php". Je veux que lorsque l'utilisateur s'identifie correctement, il soit redirigé vers une autre page s'appelant "FormModifPubli.php". J'ai donc inséré header("Location:FormModifPubli.php"); a la fin de mon script de verification. J'ai lu qu'il fallait que ce header soit situé avant TOUT CODE HTML, sinon on obtient une erreur qui dit que les entêtes HTTP ont déja été envoyés. Cependant, ma page "verifLogin.php" contient EXCLUSIVEMENT du code php et pas la moindre balise html, et j'obtient quand meme l'erreur suivante :

    Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\joomcnrs\moteurpublis\Constantes.php:8) in c:\program files\easyphp1-8\www\joomcnrs\moteurpublis\veriflogin.php on line 41

    Voici le code de ma page "verifLogin.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
    <?php
    // On démarre la session
    session_start();
    require("Constantes.php");
     
    $loginOK = false;  /* On part de l'idée que le login ne fonctionne pas en initialisant une variable à false. 
                      Et c'est seulement lorsque le login est confirmé qu'on modifie cette variable à true */
     
     
    $db = mysql_connect(SERVEUR,NOM,PASSE);           //connexion
    mysql_select_db("Publis",$db);                    //sélection de la base
     
    // On n'effectue les traitements qu'à la condition que
    // les informations aient été effectivement postées
    if ( isset($_POST) && (!empty($_POST['mail'])) && (!empty($_POST['pass'])) ) {
     
      extract($_POST);  // crée des variables pour chaque donnée récupérée
     
      // On va chercher le mot de passe correspondant au login
      $sql = "SELECT iduser, mailuser, nomuser, passuser, statutuser FROM Utilisateurs WHERE mailuser = '".$mail."'";
      $req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);
     
      // On vérifie que l'utilisateur existe bien
      if (mysql_num_rows($req) > 0) {
         $data = mysql_fetch_assoc($req);
     
        // On vérifie que son mot de passe est correct
        if ($pass == $data['passuser']) {
          $loginOK = true;
        }
      }
    }
     
    // Si le login a été validé on met les données en sessions
    if ($loginOK) {
      $_SESSION['mailuser'] = $data['mailuser'];
      $_SESSION['nomuser'] = $data['nomuser'];
      $_SESSION['passuser'] = $data['passuser'];
      $_SESSION['statutuser'] = $data['statutuser'];
     
      header("Location:FormModifPubli.php");
     
      }
    else {
      echo '<br><br>Adresse mail ou mot de passe invalide. Réessayez.';
    }
    ?>
    J'aimerais comprendre la nature de cette erreur et pouvoir rediriger les users sans faire de lien intermediaire.

    Merci d'avance.

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Dans ton fichier inclus il n'y a pas ne serait-ce qu'un espace ou un saut de ligne avant ou apres les balises ?> ou <?php ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 36
    Points : 23
    Points
    23
    Par défaut
    et non j'ai également vérifié paski me dit ke l'erreur vient de constantes.php mais c que du php aussi. Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
      // Fichier contenant la definition des constantes
      define ("NOM","root");
      define ("PASSE", "");
      define ("SERVEUR", "localhost");
      define ("BASE", "Publis");
     
    ?>

  4. #4
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Je sais pas si c'est normal mais dans ton copier/coller tu sembles avoir des sauts de lignes (lignes vides donc) apres le ?> dans ton fichier de constantes

  5. #5
    Membre régulier Avatar de carelha
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 168
    Points : 109
    Points
    109
    Par défaut
    peut être que ma signature peut t'aider avec l'alternative au header.

    caroline
    En essayant continuellement on finit par réussir. Donc : plus ca rate, plus on a des chances que ca marche. Shadocks.

    un seul header par page, et pour les autres redirections : echo "<script language='javascript'>window.location.href='XXX.php'</script>";

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 36
    Points : 23
    Points
    23
    Par défaut
    Merci koopajah j'avais effectivement pas vu le saut de ligne a la fin de constantes.php...

    ça fonctionne maintenant

    Merci de vos réponses.

  7. #7
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 305
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 305
    Points : 15 633
    Points
    15 633
    Par défaut
    tu as peut-être des espace à la fin du fichier "constantes.php"

    regarde ce qui est expliqué là pour résoudre le problème :
    http://php.developpez.com/faq/?page=...s_already_sent

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

Discussions similaires

  1. Redirection avec la fonction "header"
    Par jpguiche dans le forum Langage
    Réponses: 8
    Dernier message: 30/04/2010, 12h28
  2. Redirection avec la fonction "header"
    Par Melaus dans le forum Langage
    Réponses: 9
    Dernier message: 07/10/2008, 15h36
  3. Redirection avec la fonction header
    Par bit_o dans le forum Langage
    Réponses: 3
    Dernier message: 09/02/2008, 00h56
  4. php5: difficulté avec la fonction header
    Par koueletbak dans le forum Langage
    Réponses: 2
    Dernier message: 02/05/2006, 19h44
  5. [Dates] Problème avec la fonction header
    Par d.w.d dans le forum Langage
    Réponses: 2
    Dernier message: 06/09/2005, 16h33

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