Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/04/2006, 13h09   #1
Invité de passage
 
Inscription : avril 2006
Messages : 13
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 13
Points : 4
Points : 4
Par défaut [Cookies] cookies et 'headers already sent'

bonjour
je suis musicien et je bosse actuellement sur mon nouveau site:
http://wellwellsound.free.fr/
j'y ai mis un livre d'or et je l'ai modifié pour qu'il corresponde au design du site mais j'ai un probleme
lorsque l'on clique sur consulter tout va bien, ça s'ouvre dans la mainframe avec les bonnes couleurs. par contre lorsque que l'on clique sur envoyer (ou soumettre), cela fonctionne mais ça m'affiche ce message d'erreur: Warning: Cannot modify header information - headers already sent by (output started at /var/www/sdb/e/8/wellwellsound/message.php:1) in /var/www/sdb/e/8/wellwellsound/message.php on line 20
je n'ai pourtant fait que copier le code en question du fichier consultezlo.phpdans le fichier message.php
voici le code de message.php:

Code :
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<style type="text/css">
<!--
body {
    background-color: #003300;
}
body,td,th {
    font-size: small;
    color: #FFCC00;
}
hr {
   color: #002200;
background-color: #002200;
 height: 2px;
 border: 0;
}
-->
</style>
<?php
// Pour éviter qu'une unique personne poste 50 fois dans le livre d'or, on va insérer un cookie
setcookie("ip",$_SERVER['REMOTE_ADDR'],time()+.3600*60*90);
 
// Si le cookie est égale à l'ip du client alors on le stop
if(isset($_COOKIE['ip']) && $_COOKIE['ip']==$_SERVER['REMOTE_ADDR'])
{
        echo "<h1>Vous ne pouvez émettre qu'un seul avis et vous l'avez déjà donné !</h1>";
 
        // On stop le script
        exit;
}
// Mettons le (future) fichier dans une variable
$commentaires="messages.txt";
 
// assignons nos 2 variables du formulaire et on en profite pour les protégers des balises HTML
$pseudo=htmlentities($_POST['pseudo']);
$message=htmlentities($_POST['message']);
 
// Pensons au retour à la ligne et au stripslashes pour la variable $message
$message=stripslashes(nl2br($message));
 
// On met en place quelques conditions pour les cellules (nom et message)
// On vérifie avant tout si le fichier existe si ce n'est pas le cas on le crée
if(!is_file($commentaires))
{
        $verif=@fopen($commentaires,"w+");
}
 
// On vérifie que le login ou le message ne soient pas vide
elseif (trim($message)=="" || trim($pseudo)=="")
{
        echo "Vous devez remplir tous les champs !";
 
        // On sort du script !
        exit;
}
 
// Après ces quelques vérification d'usage on passe  à l'exécution de ce formulaire
 
 
        // Si ok on ouvre en écirture-enregistrement du fichier message.txt
        $verif=@fopen($commentaires,"r+");
 
        // On analyse les anciennes données et on les stocks
        $stock=@fread($verif,filesize($commentaires));
 
        // On met la date dans une varialbe
        $date=date ("d/m/Y à H:i");
 
        // On paramère le tout dans la variable $opinion
        $opinion="<b>".$pseudo."</b> a écrit le : ".$date."<br />\n".$message."<br />\n<hr />";
 
        // On remet le curseur du fichier en début de ligne
        rewind($verif);
 
        // On insère le nouveau commentaire
        fputs($verif,$opinion." \n".$stock);
 
        // On clore le fichier
        fclose($verif);
 
        // On affiche le tout
        readfile($commentaires);
?>
merci d'avance pour vos reponses
wellser est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2006, 13h16   #2
Membre confirmé
 
Inscription : août 2003
Messages : 225
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2003
Messages : 225
Points : 225
Points : 225
Envoyer un message via MSN à Steph82
Salut,

il faut que tu sois sûr qu'il n'y a pas de code avant
Code :
 setcookie("ip",$_SERVER['REMOTE_ADDR'],time()+.3600*60*90);
Essaie ça:

Code :
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
 
<?php
// Pour éviter qu'une unique personne poste 50 fois dans le livre d'or, on va insérer un cookie
setcookie("ip",$_SERVER['REMOTE_ADDR'],time()+.3600*60*90);
?>
 
<style type="text/css">
<!--
body {
    background-color: #003300;
}
body,td,th {
    font-size: small;
    color: #FFCC00;
}
hr {
   color: #002200;
background-color: #002200;
 height: 2px;
 border: 0;
}
-->
</style>
 
<?php
// Si le cookie est égale à l'ip du client alors on le stop
if(isset($_COOKIE['ip']) && $_COOKIE['ip']==$_SERVER['REMOTE_ADDR'])
{
        echo "<h1>Vous ne pouvez émettre qu'un seul avis et vous l'avez déjà donné !</h1>";
 
        // On stop le script
        exit;
}
// Mettons le (future) fichier dans une variable
$commentaires="messages.txt";
 
// assignons nos 2 variables du formulaire et on en profite pour les protégers des balises HTML
$pseudo=htmlentities($_POST['pseudo']);
$message=htmlentities($_POST['message']);
 
// Pensons au retour à la ligne et au stripslashes pour la variable $message
$message=stripslashes(nl2br($message));
 
// On met en place quelques conditions pour les cellules (nom et message)
// On vérifie avant tout si le fichier existe si ce n'est pas le cas on le crée
if(!is_file($commentaires))
{
        $verif=@fopen($commentaires,"w+");
}
 
// On vérifie que le login ou le message ne soient pas vide
elseif (trim($message)=="" || trim($pseudo)=="")
{
        echo "Vous devez remplir tous les champs !";
 
        // On sort du script !
        exit;
}
 
// Après ces quelques vérification d'usage on passe  à l'exécution de ce formulaire
 
 
        // Si ok on ouvre en écirture-enregistrement du fichier message.txt
        $verif=@fopen($commentaires,"r+");
 
        // On analyse les anciennes données et on les stocks
        $stock=@fread($verif,filesize($commentaires));
 
        // On met la date dans une varialbe
        $date=date ("d/m/Y à H:i");
 
        // On paramère le tout dans la variable $opinion
        $opinion="<b>".$pseudo."</b> a écrit le : ".$date."<br />\n".$message."<br />\n<hr />";
 
        // On remet le curseur du fichier en début de ligne
        rewind($verif);
 
        // On insère le nouveau commentaire
        fputs($verif,$opinion." \n".$stock);
 
        // On clore le fichier
        fclose($verif);
 
        // On affiche le tout
        readfile($commentaires);
 
 
?>
Steph82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2006, 13h19   #3
Responsable Portail
 
Avatar de khayyam90
 
Homme
Ingénieur développement logiciels
Inscription : janvier 2004
Messages : 7 411
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2004
Messages : 7 411
Points : 10 549
Points : 10 549
bien le bonjour,

as-tu consulté la faq ?
http://php.developpez.com/faq/?page=...s_already_sent

ça vient du code

<style type="text/css">[...]</style>
qui est envoyé trop tôt
__________________
Responsable du Portail Developpez. A la recherche d'un poste sur Strasbourg.
Mes tutoriels Algo, Web, C++, PHP - Mon CV
khayyam90 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2006, 13h19   #4
Rédacteur
 
Avatar de wamania
 
Développeur Web
Inscription : juillet 2003
Messages : 676
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2003
Messages : 676
Points : 678
Points : 678
Code :
1
2
3
4
5
6
7
8
9
10
11
 // Pour éviter qu'une unique personne poste 50 fois dans le livre d'or, on va insérer un cookie
setcookie("ip",$_SERVER['REMOTE_ADDR'],time()+.3600*60*90);
 
// Si le cookie est égale à l'ip du client alors on le stop
if(isset($_COOKIE['ip']) && $_COOKIE['ip']==$_SERVER['REMOTE_ADDR'])
{
        echo "<h1>Vous ne pouvez émettre qu'un seul avis et vous l'avez déjà donné !</h1>";
 
        // On stop le script
        exit;
}
doit etre au TOUT DEBUT du fichier.
Ne rien envoyer avant d'envoyer un cookie
__________________
Articles sur developpez.com
- Gestion des exceptions avec PHP5
- Chiffrement et hash en PHP contre l'attaque Man in the middle
- Aedituus - Espace membre sécurisé en PHP5

Lithium : ORM ActiveRecord PHP5 extrêmement léger
wamania est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2006, 13h33   #5
Invité de passage
 
Inscription : avril 2006
Messages : 13
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 13
Points : 4
Points : 4
merci beaucoup à vous tous
j'ai copié collé le code de steph82 et ça marche!
vu que je ne suis pas doué pour le html et encore moins pour le php,
je suis un peu perdu dans les faq
encore merci et bravo pour la vitesse de vos réponses
wellser est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2006, 13h37   #6
Responsable Portail
 
Avatar de khayyam90
 
Homme
Ingénieur développement logiciels
Inscription : janvier 2004
Messages : 7 411
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2004
Messages : 7 411
Points : 10 549
Points : 10 549
dans ce cas, si ton problème est résolu, mets le tag [résolu]

va dans outils de la discussion > mettre résolu
__________________
Responsable du Portail Developpez. A la recherche d'un poste sur Strasbourg.
Mes tutoriels Algo, Web, C++, PHP - Mon CV
khayyam90 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h44.


 
 
 
 
Partenaires

Hébergement Web