Conservation superglobale $_SESSION
Bonjour,
je me suis fait un petit programme d'authentification en m'inspirant (+++) d'un exemple, mais malgrès cela, je sèche...:(
Je crains que j'écrase mes variables, mais bon...si vous avez la gentillesse de regarder mon code...
Mon code est composé de 4 fichiers :
- index.php : première page d'accueil
- verif.php : vérifie le login dans une bdd
- secure.php : fichier à inclure (include) dans chaque page protégée
- session.php : formulaire de session
J'arrive bien à lire dans la bdd et à vérifier l'identifiant enregistré.
Lorsque je suis sur verif.php, j'arrive à atteindre $_SESSION['nom'].
Mais lorsque, je clique sur mon lien pour revenir à index.php, je suis de nouveau rediriger (directive header) vers la page session.php. Cela, comme si j'avais écrasé ma variable $_SESSION['nom']...
Auriez-vous des idées ?
(j'utilise la bdd fournie par neuf/sfr avec mon compte)
index.php
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
<?php
session_start();
include('secure.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>
<meta http-equiv="Content-Language" content="fr" />
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>mon titre</title>
<link rel="stylesheet" type="text/css" href="style.css"> </link>
</head>
<body>
<center><a href="un.php"><img src="images/Accueil2.png"></a></center>
</body>
</html> |
verif.php
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
<?php
session_start();
if (isset($_POST['id'])){
$nom=$_POST['id'];
if(verification($nom)){
session_regenerate_id();
$_SESSION['nom']=$nom;
$message='Vous êtes correctement identifié'." $nom"."<a href=\"index.php\"> Rendez-vous à l\'accueil </a>";
}else {
$message='Mauvais identifiant';
$message .=' <a href="session.php">Retour</a>';
}
}else {
$messagees='L\'identifiant est incorrect';
$message .=' <a href="session.php">Retour</a>';
}
?>
<?php
function verification($nom){
$PARAM_hote='bases.sql'; // le chemin vers le serveur
$PARAM_port='3306';
$PARAM_nom_bd='julie-application'; // le nom de votre base de données
$PARAM_utilisateur='julie'; // nom d'utilisateur pour se connecter
$PARAM_mot_passe='xxx'; // mot de passe de l'utilisateur pour se connecter
try
{
$connexion = new PDO('mysql:host='.$PARAM_hote.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
}
catch(Exception $e)
{
echo 'Erreur : '.$e->getMessage().'<br />';
echo 'N° : '.$e->getCode();
}
$nom_sql=$connexion->quote($nom);
$sql="SELECT count(*) as nbres FROM utilisateurs " . " WHERE persoid=$nom_sql";
$result=$connexion->query($sql);
$row=$result->fetch();
$result=null;
if($row['nbres']==1){
return TRUE;
}else{
return false;
}
}
?>
<html>
<head><title>Identification</title></title>
<body>
<p>
<?php
echo "$message ";
?>
</body>
</html> |
secure.php
Code:
1 2 3 4 5 6 7
|
<?php
if(!isset($_SESSION['$nom'])){
header('Location: session.php');
exit();
}
?> |
session.php
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
<?php session_start() ?>
<!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>
<meta http-equiv="Content-Language" content="fr" />
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>titre</title>
<link rel="stylesheet" type="text/css" href="style.css"> </link>
</head>
<body>
<p> <img src="images/Accueil.png" alt="Mot de passe" /></p>
<form method="post" action="verif.php" >
<label for="nom"> Identifiant PERSOID : </label>
<input type="text" name="id" >
<p><input type="submit" value="s'identifier"></p>
</body>
</html> |