Probleme de session, d'affichage selon session et de déconnexion
Bonsoir! :D J'ai un problème... Je vais essayer d'être le plus précis possible mais ça ne va pas être dur, si quelqu'un est prêt à m'aider plus en détail je suis disponible sur MSN, ICQ ou Skype à la demande.
J'ai une page index.php dans laquelle apparaissent plusieurs liens dont:
- Se connecter -> mène vers un module de connexion
- Inscription -> mène vers un module d'inscription
Ces deux liens n'apparaissent plus quand l'utilisateur est connecté et sont remplacés par les suivants:
- Administration -> mène vers l'interface d'administration de l'utilisateur connecté
- Déconnexion -> mène vers une page de déconnexion
Pour ce faire je mets avant le head de la page index.php le include suivant:
Code:
1 2
| include ('session2.php');
include ('ea.php'); |
session2.php contient ceci:
Code:
1 2 3
| session_start();
if($_SESSION['acces'] != "yes")
{header("location:./index.php");} |
ea.php contient les infos de connexion à la base de données.
Le script d'affichage des liens est le suivant:
Code:
1 2 3 4 5 6 7 8 9 10
| if ($_SESSION['acces'] != 'yes')
{
echo "<a href='enregistrement2.php' target='_parent'>Se connecter</a><br><br>
<a href='inscription.php' target='Menu'>Inscription</a>";
}
else
{
echo "<a href='admin.php'>Administration</a><br><br>
<a href='./logout.php>Déconnexion</a>";
} |
Le script de connexion connexion2.php est:
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
| require_once('./ea.php'); ?>
<?php
session_start(); // début de session
if (isset($_POST['login'])){
$nom = $_POST['login'];
$motdepasse = md5($_POST['motdepasse']);
$verif_query=sprintf("SELECT * FROM regfideles WHERE fidele='$nom' AND motdepasse='$motdepasse'"); // requête sur la base administrateurs
$verif = mysql_query($verif_query, $dbprotect) or die(mysql_error());
$row_verif = mysql_fetch_array($verif);
$utilisateur = mysql_num_rows($verif);
if ($utilisateur > 0) {
// déclaration des variables de session
$_SESSION['fidele'] = $row_verif['fidele'];
$_SESSION['motdepasse'] = $row_verif['motdepasse'];
header("Location:./accueilfidele.php"); // redirection si OK
}
else {
header("Location:./index.php?erreur=nom"); // redirection si utilisateur non reconnu
}
}
// Gestion de la déconnexion
if(isset($_GET['erreur']) && $_GET['erreur'] == 'logout'){ // Test sur les paramètres d'URL qui permettront d'identifier un contexte de déconnexion
$prenom = $_SESSION['fidele']; // On garde le prénom en variable pour dire au revoir (soyons polis :-)
session_unset("authentification");
header("Location:./index.php?erreur=delog&nom=$prenom");
} |
Contenant le formulaire suivant:
Code:
1 2 3 4 5
| <form action='enregistrement2.php' method='post'>
<input name='login' type='text'><br>
<input name='motdepasse' type='password'>
<input type='submit' value='Go!' style='width:30;'></form>
<a href='motdepasse.php' target='Menu'>Mot de passe oublié?</a> |
Qui utilise le script enregistrement2.php suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| session_start();
include('ea.php');
$connection = mysql_connect($host,$user,$password) or die("connexion impossible au serveur");
$db = mysql_select_db($database,$connection) or die("la base de donnée n'a pas pu être ouverte");
$nom = $_POST['login'];
$motdepasse = md5($_POST['motdepasse']);
$requete = "SELECT * FROM regfideles WHERE fidele='$nom' AND motdepasse='$motdepasse'";
$result = mysql_query($requete) or die(mysql_error());
$num=mysql_num_rows($result);
if ($num>0 AND $_POST['login']!="")
{$_SESSION=mysql_fetch_assoc($result);
$_SESSION['acces'] = "yes";
{header("location:accueilfidele.php");}
exit();}
{header("location:index.php");}
exit(); |
Le script de déconnexion logout.php est:
Code:
1 2 3
| session_start();
session_destroy();
unset($_SESSION); |
Les problèmes sont multiples, où alors je n'y comprends rien... :D
Déjà, peut-on faire comme j'ai fait? à savoir que une fois connecté l'affichage de la page d'index change.
Ensuite, je suis obligé actuellement d'enlever le include(session) après m'être connecté pour que l'affichage correct apparaisse. Je sais que ça n'est pas normal mais pourquoi donc?
Enfin, quand on se déconnecte alors mon navigateur me dit que ça n'est pas bon quand on clique sur "Retour" une fois la déconnexion réalisée.
Vous pouvez vous créer un compte pour tester, c'est encore la version alpha du site.
Merci d'avance pour votre aide! :D