Bonsoir Dendrite et jreaux62,
Un grand merci pour votre patience et vos conseils.
Après vérification de mes fichiers, je vois 2 problèmes :
- dans mon fichier menu.php (en-tête du site qui est inclus sur chaque page) il y avait en milieu de page, en ligne 20 un <?php session_start(); ?> que j'avais supprimé.
Si je le remets cela créé 2 messages d'erreurs sur la page de connexion "login.php" c'est peut-être un indice ?
Message :
Code:
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /Applications/MAMP/htdocs/metalla/login.php:4) in /Applications/MAMP/htdocs/metalla/include/menu.php on line 20
Je peux malgré tout me connecter à l'Intranet mais toujours avec le message d'erreur ci-dessus en début de chaque page.
Ensuite, lorsque je veux me déconnecter, idem pour le message en haut de page + un autre sous l'en-tête de la page : Warning: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/metalla/login.php:4) in /Applications/MAMP/htdocs/metalla/login.php on line 23. Cette ligne 23 est justement un session_destroy(); Voici le code de la partie concernée :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <?php
if (isset($_SESSION['access'])) :
session_destroy();
header('Location: index.php');
else :
if (isset($_GET['error'])) {
if ($_GET['error'] == 'login') {
echo '<p>Mot de passe ou login erroné</p>';
}
if ($_GET['error'] == 'empty') {
echo '<p>Veuillez remplir tous les champs</p>';
}
}
?> |
J'ai aussi un session_start(); en milieu de page sur un autre fichier checklogin.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
| <?php
require_once("connect.inc.php");
if (isset($_POST['connexion'])) {
if ($_POST['username']!="" and $_POST['password']!="") {
$identifiant = htmlentities($_POST['username']);
$motdepasse = htmlentities($_POST['password']);
$reqID = $base->prepare('Select identifiant from utilisateurs where identifiant = :identifiant and motdepasse = :motdepasse');
$reqRole = $base->prepare('Select statut from utilisateurs where identifiant = :id');
$reqNomPrenom = $base->prepare('Select nom, prenom from utilisateurs where identifiant = :id');
$reqID->execute(array('identifiant'=>$identifiant, 'motdepasse'=>$motdepasse));
$resID = $reqID->fetch();
if (!$resID){
header('Location: ../login.php?error=login');
} else {
session_start();
//
// $_SESSION['test'] = $resID;
$_SESSION['access'] = $resID['identifiant'];
$reqRole->execute(array('id'=>$_SESSION['access']));
$role = $reqRole->fetch();
$_SESSION['role'] = $role['statut'];
$reqNomPrenom->execute(array('id'=>$_SESSION['access']));
$resNomPrenom = $reqNomPrenom->fetch();
$_SESSION['nom'] = $resNomPrenom['nom'];
$_SESSION['prenom'] = $resNomPrenom['prenom'];
header ('Location: ../home.php?test=home');
}
} else {
header('Location: ../login.php?error=empty');
}
}
?> |
J'ai repris ces fichiers d'accès à un intranet d'autres projets où tout fonctionne bien ?
Je pense que vous m'avez mis sur la bonne piste et que mes soucis viennent de là ?
Evelyne31