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 :

Utilisation de la fonction "header"


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 67
    Par défaut Utilisation de la fonction "header"
    bonjour,

    dans mon code j'utilise la fonction header('locatioin.php') pour me rediriger vers une nouvelle page, mais voila j'ai lu cet avertisement sur la documentation de php

    N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichages PHP. Une erreur très classique est de lire un fichier avec include() ou require(), et de laisser des espaces ou des lignes vides, qui produiront un affichage avant que la fonction header() ne soit appelée. Le même problème existe avec les fichiers PHP/HTML standards.
    personnellement je n'ai eu aucun problème même qu'elle soit au milieu du code, j'utilise des variables de session et tout. donc est ce que quelqu'un peut m'expliquer quel sont les risques d'une telle utilisation ?

    sinon y'a t'il un moyen pour rediriger vers une nouvelle page ?

    merci.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    quelqu'un peut m'expliquer quel sont les risques d'une telle utilisation ?
    Il n'y a pas de risques.
    Si tu te trouves dans le cas mentionné dans la doc, ton header() ne pourra pas être traité, c'est tout.

    exemples qui ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    un_espace<?php header('Location: index.php'); ?>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
    if ($_SESSION['user'] == 0) {
        echo 'vous allez être redirigé';
        header('Location: index.php');
    }
    ?>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 67
    Par défaut
    Bonjour,

    voila j'ai utilisé la solution proposée ,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    if ($_SESSION['user'] == 0) {
        echo 'vous allez être redirigé';
        header('Location: index.php');
    }
    ?>

    la redirection se fait normalement si la session n'existe pas, donc je redirige l'utilisateur vers une page d'authentification. le problème qui se pose c'est que le formulaire d'authentification n'envois plus les informations ( lorsque je clique sur valider, je retombe sur la même page d'authentification ! )

    le formulaire d'authentification fonctionne correctement ailleurs bien sur.

    donc c'est le header qui me crée ce problème.est ce que quelqu'un a une idée ?

    autre question , est ce que vous pouvez m'expliquer c'est quoi exactement un entête HTTP.

    merci

  4. #4
    mon_nom_est_personne
    Invité(e)
    Par défaut
    en gros faut comprendre comment marche http pour comprendre ce probleme.
    http c'est un systeme de question/reponse. Le client envoie une requete au serveur, et le serveur lui repond. Ce que fait header est de creer une second requete http. Donc si tu as du contenue avant la directive header, ton client a deja recut une reponse et le serveur ne peut donc plus effectuer la second requete.

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 67
    Par défaut
    euh ouai j'ai du contenue mais je suis obligé d'en avoir !! car je ne redirige pas le client comme ça sans rien, je vérifie la session toujours , et pour la verifier il faut du code php .. alors est ce qu'il y a une autre alternative SVP ??

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2009
    Messages : 4
    Par défaut
    ben je comprends pas trop ton problème.

    Si tu fais quelque chose du style ça doit marcher:

    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
     
    <?php
    session_start();
     
    //users autorisés
    $ok = array ('moi', 'toi', 'lui');
     
    if(in_array($_POST['username'], $ok));
        $_SESSION['username'] = $_POST['username'];
     
    //et tu peux remplacer ça par une requête sql par exemple
     
    if(!isset($_SESSION['username']))
        header("Location: http://example.com/login.php?error=true");
    else {
     
    echo "mon super texte pour ceux qui sont connectés";
    echo "Et toi tu t'appèles ".$_SESSION['username'];
     
    }
     
    ?>

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 676
    Par défaut
    Citation Envoyé par yesil08 Voir le message
    euh ouai j'ai du contenue mais je suis obligé d'en avoir !! car je ne redirige pas le client comme ça sans rien, je vérifie la session toujours , et pour la verifier il faut du code php .. alors est ce qu'il y a une autre alternative SVP ??
    tu peux exécuter du code PHP, il faut juste ne rien afficher :
    http://php.developpez.com/faq/?page=...s_already_sent

Discussions similaires

  1. Erreur à l'utilisation de la fonction header
    Par paradeofphp dans le forum Langage
    Réponses: 5
    Dernier message: 01/11/2006, 14h50

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