Authentification session php avec souspage(s)
Dbl35
Messages postés
71
Date d'inscription
Statut
Membre
Dernière intervention
-
Dbl35 Messages postés 71 Date d'inscription Statut Membre Dernière intervention -
Dbl35 Messages postés 71 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai protégé l'accès à une page comme cela ( codes forum(s)):
La page à ouvrir après authentification => pageorigine.php
<?php
// poursuite session
session_start();
// teste existence variable de session existe + valeur
if(empty($_SESSION['login']))
{
// Si inexistante ou nulle, redirection vers le formulaire d'authentification
header('Location: http://www.monsite.eu/checkauthentification.php');
exit();
}
?>
Le checkauthentification
<?php
// Definition constantes & variables
define('LOGIN','momo');
define('PASSWORD','mama');
$errorMessage = '';
// Test envoi formulaire
if(!empty($_POST))
{
// Contrôle envoi identifiant ?
if(!empty($_POST['login']) && !empty($_POST['password']))
{
// comparaison constantes ?
if($_POST['login'] !== LOGIN)
{
$errorMessage = 'Erreur login !';
}
elseif($_POST['password'] !== PASSWORD)
{
$errorMessage = 'Erreur password !';
}
else
{
// ouverture session
session_start();
// enregistrement le login en session
$_SESSION['login'] = LOGIN;
// redirection vers le fichier vers pageorigine.php si OK
header('Location: http://www.monsite.eu/pageorigine.php.php');
exit();
}
}
else
{
$errorMessage = 'Merci de réinscrire vos identifiants';
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>Formulaire d'authentification</title>
</head>
<body>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
<fieldset>
<legend>Merci de vous authentifier</legend>
<p>
<label for="login">Login :</label>
<input type="text" name="login" id="login" value="" />
</p>
<p>
<label for="password">Password :</label>
<input type="password" name="password" id="password" value="" />
<input type="submit" name="submit" value="Se connecter en session sécurisée" />
</p>
</fieldset>
</form>
</body>
</html>
Tout cela fonctionne correctement, mais voila, j'ai des "souspages" dans mon IHM d'origine
pageorigine.php
- souspage1.php
- souspage2.php
-....
si je place le même code (cidessous) aux souspages.php, je dois à chaque fois retaper le code d'authentification, comment je peux éviter cela, sachant que les souspage ne doivent pas être accessible en URL directe , auquel cas il faut repasser par le checkauthentification
<?php
session_start();
if(empty($_SESSION['login']))
{
header('Location: http://www.monsite/checkauthentification.php');
exit();
}
?>
j'ai essayé plusieurs codes mais je n'y arrive pas, quelqu'un peut il m'aider ?
Si vous remarquez quelque chose dans le code, n'hésitez pas à m'en faire part.
MERCI D'AVANCE
Daniel
J'ai protégé l'accès à une page comme cela ( codes forum(s)):
La page à ouvrir après authentification => pageorigine.php
<?php
// poursuite session
session_start();
// teste existence variable de session existe + valeur
if(empty($_SESSION['login']))
{
// Si inexistante ou nulle, redirection vers le formulaire d'authentification
header('Location: http://www.monsite.eu/checkauthentification.php');
exit();
}
?>
Le checkauthentification
<?php
// Definition constantes & variables
define('LOGIN','momo');
define('PASSWORD','mama');
$errorMessage = '';
// Test envoi formulaire
if(!empty($_POST))
{
// Contrôle envoi identifiant ?
if(!empty($_POST['login']) && !empty($_POST['password']))
{
// comparaison constantes ?
if($_POST['login'] !== LOGIN)
{
$errorMessage = 'Erreur login !';
}
elseif($_POST['password'] !== PASSWORD)
{
$errorMessage = 'Erreur password !';
}
else
{
// ouverture session
session_start();
// enregistrement le login en session
$_SESSION['login'] = LOGIN;
// redirection vers le fichier vers pageorigine.php si OK
header('Location: http://www.monsite.eu/pageorigine.php.php');
exit();
}
}
else
{
$errorMessage = 'Merci de réinscrire vos identifiants';
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>Formulaire d'authentification</title>
</head>
<body>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
<fieldset>
<legend>Merci de vous authentifier</legend>
<p>
<label for="login">Login :</label>
<input type="text" name="login" id="login" value="" />
</p>
<p>
<label for="password">Password :</label>
<input type="password" name="password" id="password" value="" />
<input type="submit" name="submit" value="Se connecter en session sécurisée" />
</p>
</fieldset>
</form>
</body>
</html>
Tout cela fonctionne correctement, mais voila, j'ai des "souspages" dans mon IHM d'origine
pageorigine.php
- souspage1.php
- souspage2.php
-....
si je place le même code (cidessous) aux souspages.php, je dois à chaque fois retaper le code d'authentification, comment je peux éviter cela, sachant que les souspage ne doivent pas être accessible en URL directe , auquel cas il faut repasser par le checkauthentification
<?php
session_start();
if(empty($_SESSION['login']))
{
header('Location: http://www.monsite/checkauthentification.php');
exit();
}
?>
j'ai essayé plusieurs codes mais je n'y arrive pas, quelqu'un peut il m'aider ?
Si vous remarquez quelque chose dans le code, n'hésitez pas à m'en faire part.
MERCI D'AVANCE
Daniel
A voir également:
- Authentification session php avec souspage(s)
- Double authentification google - Guide
- Easy php - Télécharger - Divers Web & Internet
- Session invalide ou obsolète - Forum Consommation & Internet
- Www.yahoomail.com ouverture de session ✓ - Forum Yahoo mail
- Teamviewer code de session expiré ✓ - Forum Logiciels
6 réponses
Comme tu as plus d'une page à protéger, je te conseille cette hiérarchie de fichiers :
authentication.php => elle contiendra ton formulaire d'authentification
check_authentication.php => à inclure en haut de tes pages à protéger (elle validera la session
check_authentication.php :
Une sous-page :
authentication.php :
authentication.php => elle contiendra ton formulaire d'authentification
check_authentication.php => à inclure en haut de tes pages à protéger (elle validera la session
check_authentication.php :
<?php session_start(); if(!isset($_SESSION['login'])) //Ou encore empty si tu le souhaites { header("Location: authentication.php"); exit; }
Une sous-page :
<?php include_once("check_authentication.php"); /* Le reste de ta page protégée */
authentication.php :
<?php session_start(); define('LOGIN','momo'); define('PASSWORD','mama'); if(isset($_POST['login'], $_POST['password'])) { if($_POST['login'] === LOGIN && $_POST['password'] === PASSWORD) { $_SESSION['login'] = true; header("Location: pageorigine.php"); exit; } } ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> <head> <title>Formulaire d'authentification</title> </head> <body> <form action="authentication.php" method="post"> <fieldset> <legend>Merci de vous authentifier</legend> <p> <label for="login">Login :</label> <input type="text" name="login" id="login" value="" /> </p> <p> <label for="password">Password :</label> <input type="password" name="password" id="password" value="" /> <input type="submit" name="submit" value="Se connecter en session sécurisée" /> </p> </fieldset> </form> </body> </html>
(re)
j'essaie d'appliquer la hiérarchie que tu m'indiques, mais je dois faire une erreur.
Tout est Ok sauf que je peux ouvrir une souspage.php directement par son URL sans alors repasser en authentification.
Je ne suis pas sûr d'avoir tout compris ou peut être que je me suis aussi mal expliqué ?
Voilà,
J'ai un fichier "origine.php" qui contient un fichier index.php, ce qui m'amène sur l'ihm "origine" via l'index.php qu'il contient.
Dans ce fichier index.php j'ai implanté un ensemble de lien vers des "souspages" qui sont contenues dans ce même fichier comme cidessous
Chaque sous page ouvre une nouvelle IHM sécurisée
Fichier origine.php qui contient :
- index.php ( avec les liens qui pointent vers les fichiers "souspages.php" ci dessous
- "souspage1.php"
- "souspage2.php"
- ..
Donc après avoir placé mon fichier "authentication.php" ( que j'ai transformé en authentification.php)
je dois bien ensuite mettre le code ci dessous dans mon fichier index.php
<?php
session_start();
if(!isset($_SESSION['login'])) //Ou encore empty si tu le souhaites
{
header("Location: authentication.php");
exit;
}
puis encore ensuite le code suivant dans les "souspages.php"
<?php
include_once("check_authentication.php");
?>
<html .....</html>
peux me dire ou est mon erreur.
merci encore de ton aide, je suis pas un pro php, que je trouve par ailleurs pas mal
daniel
j'essaie d'appliquer la hiérarchie que tu m'indiques, mais je dois faire une erreur.
Tout est Ok sauf que je peux ouvrir une souspage.php directement par son URL sans alors repasser en authentification.
Je ne suis pas sûr d'avoir tout compris ou peut être que je me suis aussi mal expliqué ?
Voilà,
J'ai un fichier "origine.php" qui contient un fichier index.php, ce qui m'amène sur l'ihm "origine" via l'index.php qu'il contient.
Dans ce fichier index.php j'ai implanté un ensemble de lien vers des "souspages" qui sont contenues dans ce même fichier comme cidessous
Chaque sous page ouvre une nouvelle IHM sécurisée
Fichier origine.php qui contient :
- index.php ( avec les liens qui pointent vers les fichiers "souspages.php" ci dessous
- "souspage1.php"
- "souspage2.php"
- ..
Donc après avoir placé mon fichier "authentication.php" ( que j'ai transformé en authentification.php)
je dois bien ensuite mettre le code ci dessous dans mon fichier index.php
<?php
session_start();
if(!isset($_SESSION['login'])) //Ou encore empty si tu le souhaites
{
header("Location: authentication.php");
exit;
}
puis encore ensuite le code suivant dans les "souspages.php"
<?php
include_once("check_authentication.php");
?>
<html .....</html>
peux me dire ou est mon erreur.
merci encore de ton aide, je suis pas un pro php, que je trouve par ailleurs pas mal
daniel
Salut,
Tes souspages sont elles dans le même dossier que le fichier check_authentification.php ?
Si ce n'est pas le cas, le chemin vers ce fichier dans l'instruction include_once n'est pas correct, donc l'authentification n'est pas effectuée.
Bonne journée
Tes souspages sont elles dans le même dossier que le fichier check_authentification.php ?
Si ce n'est pas le cas, le chemin vers ce fichier dans l'instruction include_once n'est pas correct, donc l'authentification n'est pas effectuée.
Bonne journée
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonjour, merci d'intervenir,
J'ai suivi et tout implanté les .php dans le même dossier :
IhmWebPlatform.php
- index.php
- authentification.php
- souspage1.php
- souspage2.php
- ..............
si je tape directement l'URL pour se connecter en privé (IhmWebPlatform.php), l'authentification.php demande le code, si code Ok, je suis logué , sinon ça passe pas. donc tout est oK jusque là.
Une fois logué sur IhmWebPlatform.php, si je clique sur le lien souspage.php, pas de problème, je suis également bien redirigé , la session étant ouverte.
Jusque là, tout va bien.
Là ou ça ne va pas, si je tape directement l'URL d'une souspage.php, elle s'ouvre sans passer par authentification.php ?? ( Cache navigateur nettoyé), c'est pas normal.
Donc le problème devrait venir du code souspage.php puisque maintenant tout les .php sont dans le même dossier IhmWebPlatform.php.
Le code "souspage.php"
<?php
include_once('check_authentification.php');
?>
<html >.....</html>
Le code authentification.php
<?php
session_start();
define('LOGIN','momo');
define('PASSWORD','mama');
if(isset($_POST['login'], $_POST['password']))
{
if($_POST['login'] === LOGIN && $_POST['password'] === PASSWORD)
{
$_SESSION['login'] = true;
header("Location: http://www...../IhmWebPlatform.php");
exit;
}
}
?>
et mon code sur index.php // de "IhmWebPlatform.php"
<?php
session_start();
if(!isset($_SESSION['login']))
{
header("Location: http://www...../IhmWebPlatform.php"/authentification.php");
exit;
}
?>
et ça marche pas avec les souspages, je ne vois plus ce qui ne vas pas ... tout me paraît normal ..
Ou est mon erreur ?
merci du coup de main
J'ai suivi et tout implanté les .php dans le même dossier :
IhmWebPlatform.php
- index.php
- authentification.php
- souspage1.php
- souspage2.php
- ..............
si je tape directement l'URL pour se connecter en privé (IhmWebPlatform.php), l'authentification.php demande le code, si code Ok, je suis logué , sinon ça passe pas. donc tout est oK jusque là.
Une fois logué sur IhmWebPlatform.php, si je clique sur le lien souspage.php, pas de problème, je suis également bien redirigé , la session étant ouverte.
Jusque là, tout va bien.
Là ou ça ne va pas, si je tape directement l'URL d'une souspage.php, elle s'ouvre sans passer par authentification.php ?? ( Cache navigateur nettoyé), c'est pas normal.
Donc le problème devrait venir du code souspage.php puisque maintenant tout les .php sont dans le même dossier IhmWebPlatform.php.
Le code "souspage.php"
<?php
include_once('check_authentification.php');
?>
<html >.....</html>
Le code authentification.php
<?php
session_start();
define('LOGIN','momo');
define('PASSWORD','mama');
if(isset($_POST['login'], $_POST['password']))
{
if($_POST['login'] === LOGIN && $_POST['password'] === PASSWORD)
{
$_SESSION['login'] = true;
header("Location: http://www...../IhmWebPlatform.php");
exit;
}
}
?>
et mon code sur index.php // de "IhmWebPlatform.php"
<?php
session_start();
if(!isset($_SESSION['login']))
{
header("Location: http://www...../IhmWebPlatform.php"/authentification.php");
exit;
}
?>
et ça marche pas avec les souspages, je ne vois plus ce qui ne vas pas ... tout me paraît normal ..
Ou est mon erreur ?
merci du coup de main
bonjour, je n'arrive toujours pas à réaliser la protection de mes pages .. J'ai positionné tout mes .php dans ce même dossier, je comprends pas..
pour mémoire revoila le code
FORMULAIRE ==> authentication.php
<?php
session_start();
define('LOGIN','momo');
define('PASSWORD','mama');
if(isset($_POST['login'], $_POST['password']))
{
if($_POST['login'] === LOGIN && $_POST['password'] === PASSWORD)
{
$_SESSION['login'] = true;
header("Location: index.php");
exit;
}
}
?>
CODE index.php du DOSSIER
<?php
session_start();
if(!isset($_SESSION['login']))
{
header("Location: authentication.php");
exit;
}
?>
Code sur les autres pages du dossier.php
<?php
include_once("check_authentication.php");
?>
merci de m'éclairer
dan
pour mémoire revoila le code
FORMULAIRE ==> authentication.php
<?php
session_start();
define('LOGIN','momo');
define('PASSWORD','mama');
if(isset($_POST['login'], $_POST['password']))
{
if($_POST['login'] === LOGIN && $_POST['password'] === PASSWORD)
{
$_SESSION['login'] = true;
header("Location: index.php");
exit;
}
}
?>
CODE index.php du DOSSIER
<?php
session_start();
if(!isset($_SESSION['login']))
{
header("Location: authentication.php");
exit;
}
?>
Code sur les autres pages du dossier.php
<?php
include_once("check_authentication.php");
?>
merci de m'éclairer
dan