Bonjour
J’utilise Dreamveaver pour réaliser un site sur lequel les accès sont gérés par un nom d’utilisateur, un mot de passe et un groupe d’utilisateur. En fonction du groupe, le site ouvre la page appropriée.
Le nom et le mot de passe sont saisis sur une page d’accès et le groupe d’utilisateur est gérer par l’administrateur sur une table « personnels ».
Le code généré par Dreamveaver fonctionne très bien
Page d’accès
Lorsque le nom d’utilisateur et le mot de passe sont bons, la Page avec restriction d’accès s’ouvre et vérifie si la page est accessible au groupe, sinon, elle se ferme et envoie sur une autre page
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <?php // *** Validate request to login to this site. if (!isset($_SESSION)) { session_start(); } $loginFormAction = $_SERVER['PHP_SELF']; if (isset($_GET['accesscheck'])) { $_SESSION['PrevUrl'] = $_GET['accesscheck']; } if (isset($_POST['select'])) { $loginUsername=$_POST['select']; $password=$_POST['textfield2']; $MM_fldUserAuthorization = "groupe"; $MM_redirectLoginSuccess = "acces_prive.php?nomuti=$loginUsername"; $MM_redirectLoginFailed = " acces_prive2.php?nomuti=$loginUsername"; $MM_redirecttoReferrer = false; mysql_select_db($database_zez, $lpu); $LoginRS__query=sprintf("SELECT nomuti, motpass, groupe FROM personnels WHERE nomuti=%s AND motpass=%s", GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); $LoginRS = mysql_query($LoginRS__query, $lyc) or die(mysql_error()); $loginFoundUser = mysql_num_rows($LoginRS); if ($loginFoundUser) { $loginStrGroup = mysql_result($LoginRS,0,$MM_fldUserAuthorization); if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();} //declare two session variables and assign them $_SESSION['MM_Username'] = $loginUsername; $_SESSION['MM_UserGroup'] = $loginStrGroup; if (isset($_SESSION['PrevUrl']) && false) { $MM_redirectLoginSuccess = $_SESSION['PrevUrl']; } header("Location: " . $MM_redirectLoginSuccess ); } else { header("Location: ". $MM_redirectLoginFailed ); } }
Dreamweaver, quel que soit sa version, utilise des requêtes MUSQL. J’ai fait passé l’ensemble du site en MYQSLI à l’aide de « Convert vers mysqli ».
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <?php if (!isset($_SESSION)) { session_start(); } $MM_authorizedUsers = "Oui"; $MM_donotCheckaccess = "false"; // *** Restrict Access To Page: Grant or deny access to this page function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) { // For security, start by assuming the visitor is NOT authorized. $isValid = False; // When a visitor has logged into this site, the Session variable MM_Username set equal to their username. // Therefore, we know that a user is NOT logged in if that Session variable is blank. if (!empty($UserName)) { // Besides being logged in, you may restrict access to only certain users based on an ID established when they login. // Parse the strings into arrays. $arrUsers = Explode(",", $strUsers); $arrGroups = Explode(",", $strGroups); if (in_array($UserName, $arrUsers)) { $isValid = true; } // Or, you may restrict access to only certain users based on their username. if (in_array($UserGroup, $arrGroups)) { $isValid = true; } if (($strUsers == "") && false) { $isValid = true; } } return $isValid; }?>
Tout ce passe bien pour l’ensemble des pages, je n’ai repris que quelques lignes de codes.
Par contre le contrôle d’accès me pose problème. Si je demande un nom d’utilisateur et un mot de passe, sans tenir compte de groupe, tout ce passe bien, mais dès que je veux demander à Dreamweaver de tenir compte du groupe auquel appartient la personne qui se connecte afin de l’envoyer sur la bonne page, cela ne fonctionne pas. Je reste sur la page de connexion.
Quelqu’un peut–il m’aider.
Merci
Partager