Tuto Créer un Espace Membre

Répondre
Peacock
le 20/10/2006 à 11:32
Peacock
Bonjour à tous,

Question à propos du Tuto nom_du_lien Créer un espace membre

LOrsque je tente de me connecter via la page index.php ou de m'inscrire via la page inscription.php j'obtiens ce message :

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /mnt/134/sdb/6/6/monsite/includes/monsite-sql.php:8) in /mnt/134/sdb/6/6/monsite/connexion/inscription.php on line 32

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mnt/134/sdb/6/6/monsite/includes/monsite-sql.php:8) in /mnt/134/sdb/6/6/monsite/connexion/inscription.php on line 32

Warning: Cannot modify header information - headers already sent by (output started at /mnt/134/sdb/6/6/monsite/includes/monsite-sql.php:8) in /mnt/134/sdb/6/6/monsite/connexion/inscription.php on line 34



monsite-sql.php est le fichier contenant les paramètres de connexion à la base.
De plus, la table membre est bien mise à jour lors de l'inscription.
Le dossier "sessions" est crée à la racine du serveur et des sessions y sont stockées.

Merci pour votre aide.
Peacock
le 20/10/2006 à 11:44
Peacock
La ligne 32 :
session_start();


Est-ce dû au fait que ça renvoie les paramètres de connexion via include
(../includes/monsite-sql.php)
Peacock
le 20/10/2006 à 12:00
Peacock
Zebden,

En essayant de suivre ton tuto sur les headers, j'ai mis le session_start(); en tout début de page,
mais lorsque je tente de me logger, ça renvoie :

Warning: Cannot modify header information - headers already sent by (output started at /mnt/134/sdb/6/6/monsite/includes/monsite-sql.php:8) in /mnt/134/sdb/6/6/monsite/connexion/inscription.php on line 35


Les lignes 34 et 35 :
$_SESSION['login'] = $_POST['login'];
header('Location: membre.php');
zebden
le 20/10/2006 à 13:08
zebden
de même pour header et l'envoi de cookie, aucune sortie HTML ou autre avant l'emploie de ces fonctions.
zebdinou pour les intimes / Blog : http://www.zebden.fr
moogli
le 20/10/2006 à 13:08
moogli
salut,

comme te l'indique le message d'erreur depuis le début : (output started at /mnt/134/sdb/6/6/monsite/includes/monsite-sql.php:8)

en clair tu affiche quelque chose à la ligne 8 de la page monsite-sql.php !!!!

le header renvoie une panne car comme session_start() il ne faut rien afficher avant cette fonction.

smiley
Il en faut peu pour être heureux !!!!!
Peacock
le 20/10/2006 à 14:45
Peacock
Bien vu,
un retour ligne à la fin du code dans monsite-sql.php
une fois enlevé, no more pb...
Mais je crois que sujet n'est pas encore clôt...
;)
abkm
le 27/05/2010 à 13:15
abkm
Dit moi comment ta fait concretement pour régler ce problème d'erreur.
dark_nemo
le 29/05/2010 à 11:37
dark_nemo
En php tu ne dois RIEN afficher avant d'envoyer les entêtes (cookie, session , header...). Dont lorsqu'il y a cette erreur c'est que tu affiches quelque chose avant d'envoyer les entêtes (un espace est parfois la cause)
par exemple

Fichier a.php :
<?php mon code ?> ici un espace oublié en fin de fichier


Fichier b.php :
<?php session_start(); ?>


<?php
include('a.php');
include('b.php');
?>

va produire une erreur car il y a un espace qui traine dans le fichier a.php après la fermeture de la balise
LupusMic
le 01/06/2010 à 08:03
LupusMic
Ce n'est pas vraiment une question de PHP. C'est un problème lié à HTTP. Nous utilisons des scripts PHP pour générer des requêtes HTTP. Ces requêtes sont composées d'un en-tête et d'un corps.

Si le code produit du code à destination du corps de la requête HTTP, PHP commence par envoyer les en-têtes.

Les sessions sont généralement basées sur l'échange d'un cookie entre le serveur et le client HTTP, et que le cookie se trouve dans les en-têtes.

PHP n'attend pas la fin d'exécution du script pour commencer à envoyer des données. Il le fait dès que possible.

Tout ces éléments font que l'usage des fonctions header et session_start vont logiquement échouer si les en-têtes sont déjà envoyés.

Bref, il y a quelques bonnes pratiques qui permettent d'éviter le problème :
- l'usage des fonction de contrôle du buffer de sortie (ob_start)
- ne jamais utiliser echo, printf, etc endehors d'un contexte approprié.
- commencer tout fichier PHP inclus par <?php et ne jamais le fermer, à l'exception des fichiers templates.
- utiliser un éditeur de texte qui ne rajoute pas de saut de ligne à la fin des fichiers (comme cette merde d'Eclipse en son temps)
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre
LoadingChargement en cours