Site francophone non officiel de phpSecurePages

(c) Logo propriété de Paul Kruyt

 

Navigation

Foire aux Questions

Qu'est-ce que phpSecurePages?

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.

phpSP ne se souvient pas de mes informations de connexion et je dois me re-connecter à chaque page

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.
 

Il y a une bogue dans la gestion des sessions en php3 versions 0.23 beta et inférieures. Vérifiez que vous êtes bien en version 0.24 beta ou supérieure pour résoudre ce problème.

Si quelqu'un s'est authentifié, puis-je utiliser les informations pour ma page ?
Oui, c'est possible. Les variables suivantes sont renseignées et donc peuvent être utilisées dans vos pages.

nom de connexion: $login mot de passe: $password niveau d'utilisateur: $userLevel code ID: $ID

J'ai l'erreur : Cannot send session cookie - headers already sent

Exemple:

Parse error: parse error in /user/www/phpSecurePages/session.php on line 1

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

<?PHP include("phpSecurePages/secure.php"); ?>

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.
J'ai l'erreur: Failed opening file for inclusion

Exemple:

Warning: Failed opening '/user/www/phpSecurePages/secure.php' for inclusion in /user/www/index.php on line 2

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";

J'ai l'erreur: Failed to open /tmp/sess_...

Exemple:

Warning: open(/tmp/sess_cd63ba930a0e37a8e4f46d6c04e5akb1, O_RDWR) failed: m (2) in d:/www/phpSecurePages/checklogin.php on line 62

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.

J'ai l'erreur: Warning: Undefined variable: message in phpSecurePages/secure.php

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:

error_reporting = E_ALL & ~E_NOTICE    ;show all errors, except for notices

D'autres bases de données sont-elles supportées?

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

Comment gère-t-on les utilisateurs de la base?

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'.

Comment gérer plusieurs utilisateurs sans base de données?

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] = '';

Est-il possible de renommer l'extension des fichiers en autre chose que .php?

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.

Est-il possible de chiffrer les mots de passe? (FAQ non officielle)
(Information fournie par taz_eat sur http://freshmeat.net/projects/phpsecurepages/)

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 :

<?PHP echo md5('mot de passe'); ?>
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 :
 
$password = md5($password);
Est-il possible de tracer les connexions? (FAQ non officielle)

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