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 25/05/2007, 03h00   #1
Membre à l'essai
 
Inscription : mai 2006
Messages : 158
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 158
Points : 23
Points : 23
Par défaut Problème avec les sessions

mes sessions ne fonctionnent pas ! voici mon code
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
 
function connect()
{
  $connexion = odbc_connect("conference","Mary","") or die;
  return $connexion;
};
 
 
connect();
 
$login = trim($_POST['user']);
$pass = trim($_POST['mdp']);
 
if (!empty($login) && !empty($pass)) 
{
 
 $req2 = " select count(nom) as nbre  from lecteur where nom='".$login."' and mdp='".$pass."'";
 $connexion = connect();
 $result2 = odbc_do($connexion,$req2);
 $ligne = odbc_fetch_array($result2);
 
 
	if ($ligne ['nbre'] == 1) 
	{
	$req = " select id, nom , prenom  from correspondant where nom='".$login."' and mdp='".$pass."'";
	$result = odbc_do($connexion,$req2);
	$tablo = odbc_fetch_array($result);
 
 
	session_start();
     $_SESSION['id'] = $tablo['id'];
     $_SESSION['nom'] = $tablo['nom'];
	 $_SESSION['prenom'] = $tablo['prenom'];
 
 
   require('demarage.php'); //et on vous envoie a la page " principale"
	}
		else 
		{
		require('connexionfaux.php');  
		}
}
else
		{
		require('connexionfaux.php'); 
		};
 odbc_close($connexion);
ça m'ouvre ma page demarage .php:
mais avec ça en haut :

Citation:
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at c:\program files\easyphp1-8\www\conference\senregistrer.php:3) in c:\program files\easyphp1-8\www\conference\senregistrer.php on line 30

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\program files\easyphp1-8\www\conference\senregistrer.php:3) in c:\program files\easyphp1-8\www\conference\senregistrer.php on line 30

Notice: Undefined index: id in c:\program files\easyphp1-8\www\conference\senregistrer.php on line 31

Notice: Undefined index: nom in c:\program files\easyphp1-8\www\conference\senregistrer.php on line 32

Notice: Undefined index: prenom in c:\program files\easyphp1-8\www\conference\senregistrer.php on line 33

Notice: A session had already been started - ignoring session_start() in c:\program files\easyphp1-8\www\conference\demarage.php on line 2


MERCI A TOUS
marie4449 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2007, 05h56   #2
Membre expérimenté
 
Étudiant
Inscription : juillet 2004
Messages : 777
Détails du profil
Informations personnelles :
Âge : 25

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2004
Messages : 777
Points : 527
Points : 527
Eu en generale on met le session_start() tout en haut de la page pour eviter ce genre de soucis...
cerede2000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2007, 08h50   #3
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Citation:
Envoyé par cerede2000
Eu en generale on met le session_start() tout en haut de la page pour eviter ce genre de soucis...
Je dirais même plus : il faut mettre le session_start() avant tout autre code dans la page.
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2007, 11h29   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par Celira
Je dirais même plus : il faut mettre le session_start() avant tout autre code dans la page.
Pour être exact : ce n'est pas une obligation tant que rien n'est envoyé au client et qu'on ne cherche pas à utiliser les sessions avant, nous pouvons n'y faire appel qu'au dernier moment. Je pourrais très bien la démarrer en fin de script. De plus, ce raisonnement n'est pas valable si on place des objets dans la session car leurs déclarations doivent ensuite apparaître avant l'appel à session_start.

Il faut trouver ce qui est envoyé au navigateur avant : un BOM, l'envoi d'un warning, un espace ou un saut de ligne avant les balises PHP, un echo, autres ...

De plus, les clés correspondant à $tablo['id'], $tablo['nom'] et $tablo['prenom'] ne sont pas définies donc vous avez une autre correction à apporter (mais ça se produit après donc ce n'est pas l'origine des warnings liés aux sessions).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2007, 11h34   #5
Membre expérimenté
 
Étudiant
Inscription : juillet 2004
Messages : 777
Détails du profil
Informations personnelles :
Âge : 25

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2004
Messages : 777
Points : 527
Points : 527
D'ou mon "En generale"
Par contre je ne comprend pas ceci:
Citation:
De plus, ce raisonnement n'est pas valable si on place des objets dans la session car leurs déclarations doivent ensuite apparaître avant l'appel à session_start.
Pour placer des objets?
Comme quoi?
cerede2000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2007, 11h45   #6
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par cerede2000
Comme quoi?
Ce qu'on veut

Citation:
Envoyé par cerede2000
Pour placer des objets?
Ben, oui, exemple :
Code utilisateur.class.php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Utilisateur {
    var $identifiant;
    var $login;
 
    function Utilisateur($id, $login) {
        $this->identifiant = $id;
        $this->login = $login;
    }
 
    function getLogin() {
        return $this->login;
    }
 
    function getIdentifiant() {
        return $this->identifiant;
    }
}
Enregistrement dans la session :
Code :
1
2
3
4
session_start();
require_once('utilisateur.class.php'); // Peut être effectué avant comme après session_start()
 
$_SESSION['util'] = new Utilisateur(1, 'toto');
Et, enfin utilisation des données de la session :
Code :
1
2
3
4
5
6
require_once('utilisateur.class.php'); // Déclaration impérativement avant session_start()
session_start();
 
if (isset($_SESSION['util'])) {
    echo 'Bonjour ' . $_SESSION['util']->getLogin();
}
Ai-je répondu à vos questions ?
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h48.


 
 
 
 
Partenaires

Hébergement Web