Site francophone non officiel de phpSecurePages
(c)
Logo propriété de Paul Kruyt
phpSecurePages est un module PHP qui a pour but de sécuriser vos pages avec un nom de connexion et un mot de passe. Il prend en charge plusieurs groupes d'utilisateurs (chacun avec ses propres droits), le stockage des informations dans une base de données ou un fichier de configuration, et peut-être utilisé pour identifier les visiteurs de votre site web. Il est multi langues et permet l'utilisation de sessions pour PHP3 ou PHP4.
Cela n'est bien sûr pas le comportement souhaité puisque phpSecurePages
devrait se souvenir de votre connexion tant que votre navigateur est ouvert. Si
vous devez vous authentifier à chaque page c'est probablement qu'il y a une
erreur quelque part sur votre serveur. Vérifiez que la gestion des sessions
fonctionne correctement, si vous avez correctement créé la base de données comme
spécifiée dans la documentation et si votre navigateur accepte les cookies.
nom de connexion: $login mot de passe: $password niveau d'utilisateur: $userLevel code ID: $ID
Exemple:
Warning: Cannot send session cookie - headers already sent by (output started at /user/www/phpSecurePages/session.php:1) in /user/www/phpSecurePages/logout.php on line 1
Si vous avez une erreur de ce genre, cela signifie que la ligne d'appel du script (voir ci-dessous) n'est pas placée en toute première ligne de votre page. Corrigez l'erreur en la plaçant en tête de votre document.I
Plus techniquement, aucun code générant de l'affichage ne doit être placé au dessus de cette ligne, telles que les commandes 'echo', 'print' ou des informations d'entête.<?PHP include("phpSecurePages/secure.php"); ?>
Exemple:
Tout d'abord vérifiez si la variable $cfgProgDir est renseignée correctement.
Si c'est bien le cas, vous faites partie des personnes malchanceuses dont le
serveur ne sait pas gérer correctement les variables d'environnement. La
variable HTTP_HOST ne pointe pas au bon endroit, et dans ce cas phpSecurePages
ne sait pas trouver les fichiers d'inclusion dont il a besoin.
Il n'y a pas de solution pour forcer cette variable. Mais vous pouvez contourner
le problème manuellement en modifiant le fichier secure.php. Modifiez la
variable $cfgProgDir en line 105 (dernière ligne visible ci-dessous) pour
renseigner le bon endroit (celui où les fichiers de phpSecurepages sont
stockés).
Dans le fichier 'secure.php':
/**********************************************************/ /* End of phpSecurePages Configuration */ /**********************************************************/ // https support if (getenv("HTTPS") == 'on') { $cfgUrl = 'https://'; } else { $cfgUrl = 'http://'; } // getting other login variables $cfgHtmlDir = $cfgUrl . getenv("HTTP_HOST") . $cfgProgDir; $cfgProgDir = "MyLocation of the Directory with the Files";
Exemple:
C'est un problème de configuration de votre version de php. Editez votre fichier php.ini pour positionner correctement le répertoire temporaire utilisé pour les fichiers de sessions.
C'est un problème de configuration de votre serveur PHP. Assurez vous que la variable 'error_reporting' de votre fichier de configuration php.ini n'inclut pas E_NOTICE.
Un positionnement correct pourrait être:
Pas à l'heure actuelle, seule la connexion à MySQL est implémentée.J'ai cependant eu le code pour plusieurs classes de base de données, quand ce code sera intégré l'application, l'utilisation d'autres bases de données sera possibles. Pour le moment, je ne peux pas dire encore, quand cela sera fait.
[Note du traducteur : sur le forum
http://freshmeat.net/projects/phpsecurepages/
, Igor
Lulic dit avoir implémenté l'utilisation de
PostGreSQL 7.1, 7.3]
Cependant la version fournie sur ce site permet d'utiliser, avec PHP 4,
les bases de données MySQL, PostGreSQL, Oracle et MS-SQLServer, ainsi qu'un annuaire LDAP
A l'heure actuelle il n'y a aucun outils d'administration disponible dans
phpSecurePages pour la base de données.
J'ai cependant fait en sorte qu'il soit facile d'ajouter du code dans le
programme. Ainsi vous pouvez développer le code nécessaire à l'ajout des
utilisateurs dans votre base de données, ou utiliser des outils de gestion de
base disponibles. Je vous suggère d'utiliser par exemple
phpMyAdmin.
Vous pouvez aussi bien sûr ajouter manuellement les utilisateurs dans le fichier
'secure.php'.
Q: Je voudrais savoir s'il est possible de d'ajouter d'autres
utilisateurs (sans base de données).
En fait je voudrais 12 utilisateurs avec des noms et des mots de passe
différents avec tous un accès de niveau 1.Puis-je rajouter plus d'un utilisateur
à secure.php ou suis-je obligé d'avoir une base de données pour cela ?
R: Bien sûr qu'il est possible d'avoir plusieurs utilisateurs différents avec le même niveau d'accès sans base de données. Il suffit de créer plus d'éléments de tableaux.
Exemple d'ajout d'éléments de tableaux:
... $cfgLogin[11] = 'Nom de connexion'; $cfgPassword[11] = 'Mot de passe'; $cfgUserLevel[11] = '1'; $cfgUserID[11] = ''; $cfgLogin[12] = 'Nom de connexion'; $cfgPassword[12] = 'Mot de passe'; $cfgUserLevel[12] = '1'; $cfgUserID[12] = '';
Oui, mais vous devez également vous assurer que toute référence à ces
fichiers dans le code a aussi été modifiée.
De plus, vous devez vous assurer que ces pages seront interprétée par le
"moteur" PHP. Attention: cela n'est pas le cas pour les pages .html dans la
configuration par défaut du serveur. Il faut vous assurer que le serveur
traitera ces fichiers comme des fichiers php.
Q:Est-il possible de chiffrer les mots de passe pour accroître la sécurité dans le cas pas exemple où plusieurs personnes peuvent accéder à la base de données ?
R: Oui il est possible d'encrypter les mots de passe en MD5.
1. Modifiez le fichier secure.php en positionnant la variable $passwordEncryptedWithMD5 à 'true' (en supprimant les doubles slashs de commentaire également).
2. Convertissez vos mots de passe en codage MD5. Créez un fichier .php a un endroit où il sera interprété par votre serveur et tapez ceci :
Ensuite ouvrez la page avec votre navigateur et vous obtiendrez le mot de passe chiffré 3. Ajoutez le à votre base de données (avec phpMyAdmin par exemple) en recopiant le mot de passe fourni à l'étape 2. Si vous avez développé un script de création des utilisateurs dans la base alors il vous suffit juste avant de fournir le mot de passe à MySQL d'ajouter une ligne du genre de celle ci-après pour encrypter le mot de passe :<?PHP echo md5('mot de passe'); ?>
$password = md5($password);
Oui, avec la version fournie sur ce site. Pour cela il vous faut
positionner le paramètre $noLogs à false dans le fichier de configuration secure.php.
Un fichier de trace sera généré par mois dans le sous-répertoire logs/ de phpSecurePages.
Les informations stockées sont décrites
dans le fichier lisezmoiHM.txt