Rechercher : dans
Par :

Problème session php

Dernière réponse le 14 mar 2008 à 13:21:49 Guyome, le 14 mar 2008 à 09:55:50 
 Signaler ce message aux modérateurs

Bonjour,

J'ai, sur un site que je fais, un souci de session :

Sur la page d'accueil, je fais appel à des include sous la forme :

<?php
include('/include/session.inc.php');
?>


Les include marchent bien, mais les sessions ne démarrent pas. En fait je vais vous montrer mpn code et vous expliquer au fur et à mesure :

J'ai un script qui se connecte à la base de donnée et qui démarre la session, qui est placé tout en haut de mon code !

<?php
$hote= 'xxxxx';
$user = 'xxxxx';
$passe ='xxxxx';
$base= 'xxxxx';
$connexion = mysql_connect($hote, $user,$passe);
mysql_select_db($base,$connexion);


ini_set('arg_separator.output', '&amp;');
ini_set("url_rewriter.tags","a=href,area=href,frame=src,iframe=src,input=src");
session_start();
?>



Ensuite, voilà le script qui permet d'envoyer les données via un formulaire :

<?php
if($_SESSION['pseudo'] == '') {
$message = "<p>Pour vous connecter, merci d'indiquer votre <em>identifiant</em> et votre <em>mot de passe</em></p>"; 
include('/include/identification.inc.php');   }
else {
switch ($_SESSION['categorie']) { 

                            case "1": $lienhorizontal = '<a href="/espacereserve.php">espace réservé</a>';break; 
         
                            case "2": $lienhorizontal = '<a href="/espacereserve.php">espace réservé</a>';break; 
                           }
echo '<p>Bonjour ', $_SESSION['prenom'], '&nbsp;', $_SESSION['nom'],  ' |', $lienhorizontal, '</p>';  

	}
?>


S'il la sesion ne renvoie rien ça renvoie donc à ce formulaire :

<?php echo $message ?>
<form method="post" action="../login.php">
<p><br />
<label for="pseudo">Identifiant : </label><input type="text" name="pseudo" size="15px" id="pseudo" /><br />
<label for="motdepasse">Mot de passe : </label><input type="password" name="motdepasse" size="15px" id="motdepasse" /><br />
<input type="submit" value="connexion" id="connexion" />
</p>
</form>


Et la vérification se fait sur ce script :

<?php
if($_SESSION['pseudo'] == '') {

// on regarde si le formulaire est bon pour voir si le champ pseudo est vide 
if (isset($_POST) && empty($_POST['pseudo']) && !empty($_POST['motdepasse'])) { 

        $message = '<p>Vous avez oublié d\'indiquer votre <i>identifiant</i></p>'; 
        include('/include/identification.inc.php');  
} 


// pour voir si le champ mot de passe est vide 

if (isset($_POST) && !empty($_POST['pseudo']) && empty($_POST['motdepasse'])) { 

        $message = '<p>Vous avez oublié d\'indiquer votre <i>mot de passe</i></p>'; 
        include('/include/identification.inc.php');  
} 


// pour voir si les champs pseudo et mot de passe sont vides 

if(isset($_POST) && empty($_POST['pseudo']) && empty($_POST['motdepasse'])) { 

        $message = '<p>Merci de rentrer votre <i>identifiant</i> et votre <i>mot de passe</i></p>'; 
        include('/include/identification.inc.php');  
} 


// Si les deux sont remplis alors :  

if(isset($_POST) && !empty($_POST['pseudo']) && !empty($_POST['motdepasse'])) { 

        // on extrait les données 
        extract($_POST); 


       // on va chercher les données  pour le pseudo entrée 
        $sql = "SELECT * FROM identification WHERE pseudo='$pseudo'"; 

        $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 


       // on  récupère les entrées comme il faut 
        $data = mysql_fetch_assoc($req); 


       // on compare ce qu'on a entré et le vrai mot de passe 
        if($data['motdepasse'] != $motdepasse) { 

                $message = '<p>Les informations rentrées ne sont pas correctes</p>'; 
                include('/include/identification.inc.php');  

                } 
                else  
               { 
				$_SESSION['logged'] = 1;
                $_SESSION['pseudo'] = $data['pseudo'];
                $_SESSION['nom'] = $data['nom']; 
                $_SESSION['prenom'] = $data['prenom']; 
                $_SESSION['categorie'] = $data['categorie']; 
				
				
				 /* on crée la fonction du lien supplémentaire dans le menu. */ 
                 switch ($data['categorie']) { 

                            case "1": $lienhorizontal = '<a href="/espacereserve.php">espace réservé</a>';break; 
         
                            case "2": $lienhorizontal = '<a href="/espacereserve.php">espace réservé</a>';break; 

                } 
				
				   // on affiche le nom et le prénom 
                 echo '<p>Bonjour ', $data['prenom'], '&nbsp;', $data['nom'], ' | ', $lienhorizontal, '</p>';

              
				
                           } 
						   
             
} 
}
else {
switch ($_SESSION['categorie']) { 

                            case "admin": $lienhorizontal = '<a href="/espacereserve.php">espace réservé</a>';break; 
         
                            case "eleve": $lienhorizontal = '<a href="/espacereserve.php">espace réservé</a>';break; 
                           }
echo '<p>Bonjour ', $_SESSION['prenom'], '&nbsp;', $_SESSION['nom'],  ' |', $lienhorizontal, '</p>';  

	}
?>


Le souci est le suivant :

Seul le formulaire s'affiche, n'affichant pas le $message. Je ne vois pas du tout ça peut venir !!! Si vous pouviez m'aiguiller.

Merci
Configuration: Windows Vista
Opera 9.25

Meilleures réponses pour « Problème session php » dans :

1

Guyome, le 14 mar 2008 à 10:04:26

En plus, j'ai l'impression qu'il ne renvoie rien du tout, car le verification.php ne traite aucune info !

Pour info, ça marchait jusqu'à la migration du site !

Pourtant tous les liens de raccourcis vers les include sont bons !

merci

Répondre à Guyome

2

clabman, le 14 mar 2008 à 10:14:20

Est ce que tout le code que tu as posté est sur la même page ou sur des pages différentes ???

Sinon tu dois démarrer tes sessions sur chaque page...

Répondre à clabman

3

Guyome, le 14 mar 2008 à 10:19:06
  • +1

Oui, en fait je te mets une page type pour te montrer :


<?php
include('/include/session.inc.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
isions avocat" />
<link rel="StyleSheet" /styleindex.css" type="text/css" />
<script type="text/javascript">
<!--
window.onload=montre;
function montre(id) {
var d = document.getElementById(id);
	for (var i = 1; i<=10; i++) {
		if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
	}
if (d) {d.style.display='block';}
}
//-->
</script>
</head>
<body>
<div class="conteneur">
<div class="entetegauche">
</div>
<div class="entetedroite">
<?php
include('/include/identifiant.inc.php');
// sur la page login.php, ici j'aurai verification.php
?>
</div>
<div class="bandeau">
</div>
<div class="menuhorizontal">
<?php
include('/include/menuhorizontal.inc.php');
?>
</div>
<div class="menuvertical">
<?php
include('/include/menuverticalgeneral.inc.php');
?>
</div>
<div class="contenu">
<?php
include('/include/affichage5infos.inc.php');
?>
</div>
<div class="colonnedroite">
<?php
include('/include/colonnedroitegeneral.inc.php');
?>
</div>
<div class="pied">
<?php
include('/include/pied.inc.php');
?>
</div>
</div>
</body>
</html>


En fait il semble qu'il ne prenne pas en compte le démarrage de la session et la connexion à la base de donnée. Pourquoi ? je ne sais pas !

Répondre à Guyome

4

 clabman, le 14 mar 2008 à 13:21:49

Bon ba essai de démarrer tes sessions avant tout code, mais le en premiére ligne.
Sinon regarde si ton register_globals est bien à 0 dans ton php.ini

Voilà sinon je ne vois pas trop opurquoi ?

Répondre à clabman