Problème session php

Fermé
Guyome - 14 mars 2008 à 09:55
clabman Messages postés 53 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 7 novembre 2011 - 14 mars 2008 à 13:21
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

3 réponses

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
0
clabman Messages postés 53 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 7 novembre 2011 4
14 mars 2008 à 10:14
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...
0
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 !
0
clabman Messages postés 53 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 7 novembre 2011 4
14 mars 2008 à 13:21
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 ?
0