PhpBB-Power Communauté francophone de support et de mods pour phpBB
|
| Voir le sujet précédent :: Voir le sujet suivant |
| Auteur |
Message |
Gernouille Esprit servant
Inscrit le: 28 Déc 2004 Messages: 156
|
Posté le: Lun 07 Mar 2005 à 20:30 Sujet du message: Probleme de session je croit |
|
|
Bonjour,voila j'ai un message d'erreur qui est affichez sur tout mes pages:
| Code: | Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/**/login.php:9) in /home/**/em-connexion.php on line 2
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/**/login.php:9) in /home/**/em-connexion.php on line 2
|
Certainement a cause de sa:
Voila en faite j'ai une page en php et pour me simplifiez la vie dans l'endroit ou je veut affichez ma page j'y fait appel avec un include:
Ma page php:
| Code: | mon code en php du site
<?
include('em-connexion.php');
?>
fin du code du site
|
et voila la page em-connexion (sortie du mod EspacemembrephpBBv.0.5.0)
| Code: | <?
session_start();
include('em-config.php');
// Vérification de la connexion
if (isset($_SESSION['username']))
{
// Si l'utilisateur est connécté, on le redirige vers l'index
header("Location: "."index_co.php");
}
if (isset($_COOKIE['userid']))
{
if($_COOKIE['userid'] != "0")
{
$userid = $_COOKIE['userid'];
// Connexion à la bdd
mysql_connect($dbhost, $dbuser, $dbpasswd);
mysql_select_db($dbname);
// Requete vérifiant l'utilisateur et le mot de passe
$sqlverif = "SELECT * FROM `" . $table_prefix . "users` WHERE `user_id`='" . $userid . "'";
$queryverif = mysql_query($sqlverif);
echo mysql_error();
// On créer les variables de session ( je ne sais pas l'utilité de la boucle, mais sans, ca ne marche pas...)
$membre = mysql_fetch_array($queryverif);
// Création des sessions
$_SESSION['user_id'] = $userid;
$_SESSION['username'] = $membre['username'];
$_SESSION['user_password'] = $membre['user_password'];
$_SESSION['user_level'] = $membre['user_level'];
$_SESSION['user_lang'] = $membre['user_lang'];
$_SESSION['user_email'] = $membre['user_email'];
$_SESSION['user_aim'] = $membre['user_aim'];
$_SESSION['user_icq'] = $membre['user_icq'];
$_SESSION['user_msnm'] = $membre['user_msnm'];
$_SESSION['user_yim'] = $membre['user_yim'];
$_SESSION['user_website'] = $membre['user_website'];
$_SESSION['user_from'] = $membre['user_from'];
$_SESSION['user_occ'] = $membre['user_occ'];
$_SESSION['user_interests'] = $membre['user_interests'];
$_SESSION['user_avatar'] = $membre['user_avatar'];
// On le redirige vers l'index
header("Location: "."index_co.php");
}
}
/* Requete vérifiant l'utilisateur
$sqlverif = "SELECT * FROM `" . $table_prefix . "users` WHERE `username`=" . $username . "";
$queryverif = mysql_query($sqlverif);
echo mysql_error();
// On créer les variables de session ( je ne sais pas l'utilité de la boucle, mais sans, ca ne marche pas...)
$membre = mysql_fetch_array($queryverif);
// Création des sessions
$_SESSION['user_id'] = $membre['user_id'];
$_SESSION['username'] = $membre['username'];
$_SESSION['user_password'] = $membre['user_password'];
$_SESSION['user_level'] = $membre['user_level'];
$_SESSION['user_lang'] = $membre['user_lang'];
$_SESSION['user_email'] = $membre['user_email'];
$_SESSION['user_aim'] = $membre['user_aim'];
$_SESSION['user_icq'] = $membre['user_icq'];
$_SESSION['user_msnm'] = $membre['user_msnm'];
$_SESSION['user_yim'] = $membre['user_yim'];
$_SESSION['user_website'] = $membre['user_website'];
$_SESSION['user_from'] = $membre['user_from'];
$_SESSION['user_occ'] = $membre['user_occ'];
$_SESSION['user_interests'] = $membre['user_interests'];
$_SESSION['user_avatar'] = $membre['user_avatar'];*/
// Vérification du formulaire
if (isset($_POST['password']) )
{
// Connexion à la bdd
mysql_connect($dbhost, $dbuser, $dbpasswd);
mysql_select_db($dbname);
// Récupération des variables
$username = htmlentities($_POST['username']);
$pass = htmlentities($_POST['password']);
// Cryptage du mot de passe
$user_pass_crypt = md5($pass);
// Requete vérifiant l'utilisateur et le mot de passe
$sqlverif = "SELECT * FROM `" . $table_prefix . "users` WHERE `username`='" . $username . "' AND `user_password`='" . $user_pass_crypt . "'";
$queryverif = mysql_query($sqlverif);
$rowsverif = mysql_num_rows($queryverif);
// S'il n'y a pas d'erreurs
if ( $rowsverif != 0 )
{
// On créer les variables de session ( je ne sais pas l'utilité de la boucle, mais sans, ca ne marche pas...)
while( $membre = mysql_fetch_array($queryverif) )
{
// Création des sessions
$_SESSION['user_id'] = $membre['user_id'];
$_SESSION['username'] = $membre['username'];
$_SESSION['user_password'] = $membre['user_password'];
$_SESSION['user_level'] = $membre['user_level'];
$_SESSION['user_lang'] = $membre['user_lang'];
$_SESSION['user_email'] = $membre['user_email'];
$_SESSION['user_aim'] = $membre['user_aim'];
$_SESSION['user_icq'] = $membre['user_icq'];
$_SESSION['user_msnm'] = $membre['user_msnm'];
$_SESSION['user_yim'] = $membre['user_yim'];
$_SESSION['user_website'] = $membre['user_website'];
$_SESSION['user_from'] = $membre['user_from'];
$_SESSION['user_occ'] = $membre['user_occ'];
$_SESSION['user_interests'] = $membre['user_interests'];
$_SESSION['user_avatar'] = $membre['user_avatar'];
$expir = 31*24*3600; // Pendant un an
$user_id = $_SESSION['user_id'];
setcookie("userid","$user_id",time()+$expir); // Création du cookie
}
// Si l'utilisateur à entré un bon pseudo et un bon mdp, on le redirige vers l'index
header("Location: "."index_co.php");
}
else // en cas d'erreur
{
echo $langconnectfall;
echo $langreconnect;
}
// On coupe la connexion à la bdd
mysql_close();
}
// Si le formulaire n'a pas été validé, on l'affiche
else
{
?>
<form action="em-connexion.php" method="post">
<p align="left"><font size="4"><? echo $langconnect ?></font></p>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">
<tr>
<td width="13%">
<p align="left"><span class="Style1"><font size="2"><? echo $langusername ?> :</font></span><font size="2"> </font>
</td>
<td width="87%">
<input name="username" type="text" size="15" maxlength="50">
</td>
</tr>
<tr>
<td width="13%">
<p align="left"><span class="Style1"><font size="2"><? echo $langpassword ?> :</font> </span>
</td>
<td width="87%">
<input name="password" type="password" size="15" maxlength="50"></td>
</tr>
</table>
<p align="center">
<input type=submit value=<? echo $langconnectbouton ?> name=login style="float: left">
</p>
</form>
<br /><a href="em-inscription.php"><? echo $langregister ?></a>
<?
}
?> |
Que faire?Merci
Note:(je trouve pas ) |
|
| Revenir en haut de page |
|
 |
Aramiil Membres actifs
Inscrit le: 30 Nov 2004 Messages: 368 Localisation: Dans les limbes de mon imagination
|
Posté le: Lun 07 Mar 2005 à 21:05 Sujet du message: |
|
|
Le problème que tu à est très simple: les sessions en PHP doivent être démarrées avant tout envoi d'header au navigateur.
En d'autres termes, il faut que tu execute session_start() avant toute autre choses. Donc plutot que
| Code: | code html
<? include(...) ?>
fin du code |
Tu dois obligatoirement faire:
| Code: | <? session_start() ?>
code html
<?include(...) ?>
fin du code |
Et bien sur, inutile de redemarrer la session dans ton fichier inclu. Mais les sessions doivent toujours êtres ouvertes en premier car elles utilisent les informations transmises dans le header (en-tête) de la page, et donc ne peuvent être démarrées si ce header est déjà parti (en d'autres termes, si tu à déjà fait afficher quelque chose à ta page).
Note: C'est également le cas des cookies. Tu ne peut normalement pas utiliser avec succès la fonction setcookie si tu à déjà fait afficher quelque chose. _________________
Jeu en ligne .:. Mon blog |
|
| Revenir en haut de page |
|
 |
Gernouille Esprit servant
Inscrit le: 28 Déc 2004 Messages: 156
|
Posté le: Lun 07 Mar 2005 à 21:35 Sujet du message: |
|
|
Oui merci
Sa marche impec |
|
| Revenir en haut de page |
|
 |
|
|
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum Vous ne pouvez pas joindre des fichiers Vous ne pouvez pas télécharger des fichiers
|
|