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', '&');
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