Problème session php
Guyome
-
clabman Messages postés 58 Statut Membre -
clabman Messages postés 58 Statut Membre -
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 :
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 !
Ensuite, voilà le script qui permet d'envoyer les données via un formulaire :
S'il la sesion ne renvoie rien ça renvoie donc à ce formulaire :
Et la vérification se fait sur ce script :
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
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', '&');
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'], ' ', $_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'], ' ', $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'], ' ', $_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
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 -
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...-
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 !
-
-
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 ?