Pb avec les sessions : variable de session inaccessible

Répondre
chardeneamour
le 13/06/2005 à 11:20
chardeneamour
Bonjour, Je suis nouvelle sur le sit et j'ai enormément beosind evotre aide.
En faiyt je suis novice en php et je souhaiterais que vous les développeurs de ce site me rendent service si possible.
Je suis entraind e mettre en place un site sur les recrutement, il s'avère que pour pouvoir faire la mise à jour des tables relation de ma BD je dois partir du fait que je connaisse l'ID d l'utiliteur qui se connecte.
J'ai utilisé des milliers de codes sur les sesssions, mais en vain. Je suis tombée sur celui présenté sur phpdebutant mais il y'a une erreur qui s'affiche.
Voici le code de la page login3.php, elle fait le traitement de la page Authentification.html.
<?
// connexion à la base
include ("connexion_eurocall.php");
$id = MYSQL_CONNECT($host,$user,$pass);
mysql_select_db("$bdd");

if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) {
extract($_POST);
// on recupère le password de la table qui correspond au login du visiteur
$sql = "select pass from user where login='".$login."'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

$data = mysql_fetch_assoc($req);

if($data['pass'] != $pass) {
echo '<p>Mauvais login / password. Merci de recommencer</p>';
include('sinscrire.html'); // On inclus le formulaire d'identification
exit;
}
else {
session_start();
$_SESSION['login'] = $login;

echo 'Vous etes bien logué';
}
}
else {
echo '<p>Vous avez oublié de remplir un champ.</p>';
include('Authentification.html'); // On inclut le formulaire d'identification
exit;
}
?>

Et voici le message que j'obtiens :
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at c:\program files\easyphp1-8\www\site_recrutemnt\connexion_eurocall.php:8) in c:\program files\easyphp1-8\www\site_recrutemnt\login3.php on line 21

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\program files\easyphp1-8\www\site_recrutemnt\connexion_eurocall.php:8) in c:\program files\easyphp1-8\www\site_recrutemnt\login3.php on line 21
Vous etes bien logué

Ben, je ne sais pas à quoi c'est dû ;si une personne peut m'aider, merci à elle. Car je ne peux pas avancer
jedasy lova
Bzh
le 13/06/2005 à 11:34
Bzh
Salut !!!

Hé hé !!

Le "session_start();" toujours avant un affichage sinon
Warning: session_start(): Cannot send session cookie - headers already sent


Voila pour ta première erreur !!! Si tu n' affiche pourtant rien vérifie que tu ne passe pa de ligne juste avant le "<?php".
<?php ?>
Très mauvais parcontre:
<?php ?>
Correct !!!
chardeneamour
le 13/06/2005 à 12:22
chardeneamour
Donc je devrais mettre session_start() tt au début et enlevé celui qui est après le else?
C'est çà?
jedasy lova
chardeneamour
le 13/06/2005 à 12:29
chardeneamour
Je viens de faire une petite modification et j'ai ce message à la ligne 21:
Voici le code
<? session_start();
include ("connexion_eurocall.php");
$id = MYSQL_CONNECT($host,$user,$pass);
mysql_select_db("$bdd");

if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) {
extract($_POST);
// on recupère le password de la table qui correspond au login du visiteur
$sql = "select pass from user where login='".$login."'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

$data = mysql_fetch_assoc($req);

if($data['pass'] != $pass) {
echo '<p>Mauvais login / password. Merci de recommencer</p>';
include('sinscrire.html'); // On inclus le formulaire d'identification
exit; }
else {
session_start();
$data=mysql_fetch_array(mysql_query(SELECT IDUser FROM user WHERE login='$login'));
$_SESSION['IDUser']=$data['IDuser'];
$_SESSION['login'] = $login;

echo 'Vous etes bien logué';
// echo '<body onload="alert(\'Membre logué avec succès\')">';
// puis on le redirige vers la page d'accueil
// echo '<meta http-equiv="refresh" content="0;URL=info_personne.html">';
// ici vous pouvez afficher un lien pour renvoyer
// vers la page d'accueil de votre espace membres
}
}
else {
echo '<p>Vous avez oublié de remplir un champ.</p>';
include('Authentification.html'); // On inclut le formulaire d'identification
exit;
}
?>


Voici la ligne 21
$data=mysql_fetch_array(mysql_query(SELECT IDUser FROM user WHERE login='$login'));


Merci de m'aidersmiley
jedasy lova
chardeneamour
le 13/06/2005 à 12:34
chardeneamour
et l'erreur est :
Parse error: parse error in c:\program files\easyphp1-8\www\site_recrutemnt\login3.php on line 21
jedasy lova
LA GLOBULE
le 13/06/2005 à 12:47
LA GLOBULE
Oui, mysql_query prend une chaine de caractères en argument.
Il faut que tu mettes une string dedans...
chardeneamour
le 13/06/2005 à 13:43
chardeneamour
Oui j'ai mis la requete entre "" et il m'a affiché un message comme quoi j'étais connecté.

J'aurais de ce pas besoin d' lid de l'utilisateur pour pouvoir circuler dans ttes les pages. Comment je fais alors?
Et merci pour votre aide ! j'ai une partie de mon poids qui est partie
jedasy lova
Bzh
le 13/06/2005 à 15:47
Bzh
Pour utiliser les variables de sessions, il faut utiliser le tableau:

$_SESSION[] !!!

Donc pour enregistrer un id d' un utilisateur par exemple tu fais:

<?php

session_start();

//Création de la variable de session id_utilisateur
$_SESSION['id_utilisateur'] = son_id;

//son_id est l' id de l' utilisateur à enregistrer

?>


Ensuite pour récuperer plus tard son id, sur une autre page par exemple:

<?php

session_start();

//Récupération de la variable de session id_utilisateur
$son_id = $_SESSION['id_utilisateur'];

//$son_id contient maitenant la valeur de l' id de l' utilisateur !!!

?>


Ce n' est pas plus compliqué que cela !!!

Bye...
chardeneamour
le 13/06/2005 à 17:16
chardeneamour
L'id_utilisateur que je vais écrire là c'et le IDUser qui a été crée lors d e sa connexion à la bd ou c'est le numéro de la personne que j'ai attribuer dans ma table et qui est auto incrémental.
Voici la structure de la table user :
Structure de la table `user`
--

CREATE TABLE `user` (
`IDUser` int(11) NOT NULL auto_increment,
`nom` varchar(255) NOT NULL default '',
`prenom` varchar(255) NOT NULL default '',
`login` varchar(20) NOT NULL default '',
`pass` varchar(20) NOT NULL default '',
PRIMARY KEY (`IDUser`),
KEY `IDUser` (`IDUser`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Table d''authentification des utilisateurs' AUTO_INCREMENT=3 ;

--
-- Contenu de la table `user`
--

INSERT INTO `user` VALUES (1, 'Ngami', 'Chardène Jedasy', 'dasy', 'jess');
INSERT INTO `user` VALUES (2, 'Loukouamou', 'Jeanne Esther', 'jeanne', 'chardene');

Et la structure de la table personne ets :
Structure de la table `personne`
--

CREATE TABLE `personne` (
`n_pers` tinyint(11) NOT NULL auto_increment,
`code_pays` int(11) NOT NULL default '0',
`code_sexe` int(11) NOT NULL default '0',
`nom` varchar(255) NOT NULL default '',
`prenom` varchar(255) NOT NULL default '',
`nom_JF` varchar(255) NOT NULL default '',
`date_naiss` varchar(255) NOT NULL default '',
`lieu_naiss` varchar(255) NOT NULL default '',
`adr` varchar(255) NOT NULL default '',
`gsm` int(15) NOT NULL default '0',
`tel` int(15) NOT NULL default '0',
`email` varchar(255) NOT NULL default '',
`sit_fam` varchar(255) NOT NULL default '',
PRIMARY KEY (`n_pers`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PACK_KEYS=0 COMMENT='Table personne' AUTO_INCREMENT=4 ;


Merci de me préciser, pcq j'ai déjà eu à faire les 2 cas et il me mettait trjs le même message comme quoi il ne reconnaissait pas la variable en dessous de session_start();

Ame charitable merci de m'aider smiley
jedasy lova
moogli
le 13/06/2005 à 17:24
moogli
Salut,

je comprend pas ton problème !

tu récupère les varaibles passées en Session ?
si non : a tu bien mis un session_start() sur les pages utilisant les sessions ?

peut expliquer clairement ton problème avec mysql ?

smiley
Il en faut peu pour être heureux !!!!!
Répondre
LoadingChargement en cours