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 :

[Dates] warning fonction header()


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 57
    Points : 32
    Points
    32
    Par défaut [Dates] warning fonction header()
    Bonjour

    voilà j'ai mis un fonction header() mais elle m'affiche le message d'erreur suivant

    Warning: Cannot modify header information - headers already sent by (output started at /home/picsoun/www/header.php:28) in /home/picsoun/www/galerie2.php on line 29

    qu'est ce que cela signifie?

  2. #2
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut

  3. #3
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 145
    Points : 91
    Points
    91
    Par défaut echo print....
    vérifie qu'il n'y a pas un print ou un echo qui traine avant ton header


    ps:stp peux tu regarder un coup doeil à mon post je désespère

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 57
    Points : 32
    Points
    32
    Par défaut
    Je vois pas le rapport avec un echo


    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
    <? require_once("header.php");
    if (isset($_SESSION['id'])) 
    {
    if ($_SESSION['fan'] == 1) 
    {
    $id_ki_photo = $_GET['id_user'];
    $id_photo 	= $_GET['id'];
    if (is_numeric($id_ki_photo))
    	{
    ?>
    <div align="center">
    	<a href="galerie.php?id=<? echo $id_ki_photo; ?>">Retour galerie</a>
    </div>
    <table align="center" width="70%">
    	<tr>
    <?
    	 //récuperation
    	 $query_photo 	= "SELECT id,id_from,photo FROM photos WHERE id_from='$id_ki_photo' AND id=$id_photo ORDER BY id DESC";
    	 $retour_photo 	= query($query_photo);
    	 // on met tout ca en array 
    	 $donnee_photo = mysql_fetch_array($retour_photo);
    		$id_photo 	= $donnee_photo['id'];
    		$id_from 	= $donnee_photo['id_from'];
    		$photo 		= $donnee_photo['photo'];
    				$_cover		=	"<img border='none' src='big/$photo'>";
     
    ?>
    		<td class="texte" align="center" valign="top">
    			<? header('Location: big/'.$photo.''); ?>
    		</td>			
    	</tr>
    </table>
    <?
    	}
    }
    }
    else 
    {
    echo "<meta http-equiv='refresh' content='0 ; url=./sortie.php'>";
    }
    require_once("footer.php");
    ?>

  5. #5
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par picsoun
    Je vois pas le rapport avec un echo
    tu le verrais si tu lisais la (2e fois)
    Je te mâche le travail : http://php.developpez.com/faq/?page=...s_already_sent

  6. #6
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 145
    Points : 91
    Points
    91
    Par défaut
    Citation Envoyé par picsoun
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    		<td class="texte" align="center" valign="top">
    			<? header('Location: big/'.$photo.''); ?>
    		</td>
    qu'est ce que doit contenir cette case exactement?une image? un texte avec un lien?

  7. #7
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par yanice
    qu'est ce que doit contenir cette case exactement?une image? un texte avec un lien?
    on ne peut pas utiliser un header pour une inclusion.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 57
    Points : 32
    Points
    32
    Par défaut
    J'ai lu mais c'est pas spécialement plus clair

  9. #9
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    en bref : un header sert à faire une redirection. Si un header est envoyé par un script, ce même script ne pourra envoyer AUCUNE AUTRE INFORMATION au client : le client est "parti voir une autre page".

    Condition pour envoyer un header : il faut qu'il n'y ait eu aucune donnée envoyée avant le header. Aucun echo, aucun print, aucun code HTML, aucun espace, aucun saut de ligne en dehors des balises php.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 57
    Points : 32
    Points
    32
    Par défaut
    oui mais si j'enlève tout ce qu'il y a avant ça ne fonctionne pas à cause du require_once(header.php) qui lui inclus du php

    et je ne peux pas l'enlver puisqu'il affiche l'entete, le menu et va chercher toutes les infos utilisateurs

  11. #11
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par picsoun
    oui mais si j'enlève tout ce qu'il y a avant ça ne fonctionne pas à cause du require_once(header.php) qui lui inclus du php

    et je ne peux pas l'enlver puisqu'il affiche l'entete, le menu et va chercher toutes les infos utilisateurs
    "Afficher quelque chose" et "rediriger par un header" sont deux choses incompatibles. Il y a un problème de conception...

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 57
    Points : 32
    Points
    32
    Par défaut
    alors je ne comprends pas comment ce site a pu afficher une image avec comme emplacement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    image.php?uid=52995&snap=52995_1152730505&full=true
    et qu'il y ai malgré tout le design affiché

  13. #13
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par picsoun
    alors je ne comprends pas comment ce site a pu afficher une image avec comme emplacement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    image.php?uid=52995&snap=52995_1152730505&full=true
    et qu'il y ai malgré tout le design affiché
    Le rapport avec le schmilblick ?

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 57
    Points : 32
    Points
    32
    Par défaut
    je cherche a faire afficher une url dans l'emplacement et non l'adresse de l'image

    on m'avait dit de faire ça avec un header() mais apparemment c'est pas compatible...

    je suis un peu perdu là...

  15. #15
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par picsoun
    je suis un peu perdu là...
    Oui moi aussi, je ne saisis pas ce que tu veux faire. Tu veux afficher l'URL de l'image ? Quel est le problème ? Je comprends paaaaas !

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 57
    Points : 32
    Points
    32
    Par défaut
    je vais tout expliquer alors

    Tout d'abord dans mon site il y a des profils avec des galeries pour les membres du fan club il y a une possibilité de zoom des fotos.

    Lorsqu'un membre ajoute une foto à sa galerie, cela se place dans 3 dossiers :
    - orig (foto originale)
    - little (150*200)
    - big (450*600)

    Dans la galerie, l'affichage est little et lorsque l'on zoom on voit l'affichage en big

    Mais avec un système fort simpliste comme celui-là, il suffit de faire Ctrl+U pour voir le code source et remarquer que j'affiche les fotos en little et remplacer celui-ci par big et ne pas etre memebre fan club et malgré tout avoir accès au zoom.

    Bien sûr je pourrais changer le nom des dossiers mais emem qd je fais qqch de tordus y en a tjs un qui trouve

    Donc j'a été voir sur les autres sites du meme genre comment est-ce qu'il faisait cela et j'ai vu que certains arrivait à afficher une url du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    image.php?uid=52995&snap=52995_1152730505&full=true
    alors que moi je fonctionne avec une url du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    little/1150453235-3.jpg
    ce qui révèle les dossiers où se situe les fotos.

    Voilà je ne sais pas si j'ai été clair...

  17. #17
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    OK alors j'ai une solution à te proposer, mais rien à voir avec les headers :
    http://www.developpez.net/forums/sho...61&postcount=8

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 57
    Points : 32
    Points
    32
    Par défaut
    oui je comprends bien mais ce que je ne sais pas faire c'est codé ça

    quoi que le .htaccess je vois pas ce qu'il fait là

  19. #19
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377

  20. #20
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Petit cours de HTTP :

    le client ouvre une url
    il fait un TCP Connect sur le serveur
    il envois au passage tout un tas de headers sous la forme
    Key: valeur
    comme par exemple le User-Agent
    puis il envoie sa demande
    GET l'url
    le serveur reçois cette demande et initialise sa réponse.
    il luis envois luis aussi des headers sous la même forme.
    par exemple il n'a pas trouvé la page il envois
    Date: 20060715:105600
    Status: 404 Page no found
    ou alors il à une réponse il envoie aussi des header genre
    status: 200 Ok
    puis il envois un ligne vide (caractère 10 et 13)
    et enfin le contenus de la page.

    avec php c'est ton script qui détermine la réponse.
    si tu ne fais pas appel à la methode header php garde les headers par défaut à envoyer.
    dès le premier octé dans ton script qui part vers le client il envois d'abord les headers qu'il a en réserve.
    ensuite tout ce que tu envois est transmit.

    dans le protocole tout ce qui suit la ligne blanche après les headers fait partit du contenu
    tu ne peu donc plus envoyer de headers.

    voyons ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    1	<td class="texte" align="center" valign="top">
    2			<? header('Location: big/'.$photo.''); ?>
    3	</td>
    la ligne un commence par le caractère \t
    en supposant qu'il y ait eu aucun caractères envoyé au client à ce moment là.
    php détecte que tu veux envoyer ce caractère.
    il envois tous les headers
    la ligne blanche et
    " <td class="texte" align="center" valign="top">
    " (juste avant le <?)
    à ce moment là tu lui dis que tu veux envoyer un header
    mais le protocole l'interdit. il ne le fait pas mais te fait une notice pour te signaler ton erreur.

    pour pas avoir de problème avec les headers
    il convient de les groper tous avant l'envois du premier octet.

    attention aux includes
    fichier test.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    // ici plein de php et que du php
    ?>
    ficher page.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    include test.php;
    header("time: 10:56");
    // du php 
     
    ?>
    l'ouverture de page.php vas provoquer un notice sur le header.
    la raison est bête. c'est la liste de lignes blanches à la fin du script test.php qui est inclus
    ces lignes étants hors <?php ?> elle sont envoyé au serveur donc les headers sont déjà transmis.

    pour éviter tous les désagréments d'ordre dans lequel il faut envoyer les chose au client.

    je ne fais plus de script qui contiennent du html et du php
    mes scripts php ne contiennent que du php
    jamais de ?><balise html><?php
    jamais de echo

    mes script font font que du traitement et place dans une variable ce qui doit être affiché et dans une autre la liste des header à envoyer.
    absolument rien n'est envoyé au client dans aucun fichier inclus avant la fin du scrip principal.
    à la fin ils envoyent header puis contenus.

    le meilleur moyen pour arriver à ce genre de chose est d'utiliser un systeme de template.

    A+JYT

Discussions similaires

  1. Réponses: 10
    Dernier message: 09/01/2006, 18h39
  2. [Dates] Warning sur filemtime()
    Par xave dans le forum Langage
    Réponses: 28
    Dernier message: 03/01/2006, 14h16
  3. [Dates] Problème avec la fonction header
    Par d.w.d dans le forum Langage
    Réponses: 2
    Dernier message: 06/09/2005, 16h33
  4. Problème de date dans fonction utlisateur
    Par lutin2003 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/04/2005, 16h25
  5. Obtenir des dates en fonction du n° de la semaine
    Par coeur74 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 10/02/2005, 13h42

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