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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225
| <?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_totor = "00.000.00.00";///ip ou adresse serveur MySQL qui contient votre base de donnée
$database_totor = "nombasedonnées";/// nom de la base de donnée
$username_totor = "loginbase";////login de connexion à la base de données
$password_totor = "passebase";////mot de passe de connexion à la base de données
$totor = mysql_pconnect($hostname_totor, $username_totor, $password_totor) or trigger_error(mysql_error(),E_USER_ERROR);
?>
page qui contient le formulaire de connexion
code:
<?php require_once('Connexions/totor.php');/// créer un fichier avec les variable d'accès à la base de donnée ?>
<?php
// *** ouverture de la session
session_start();
$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($accesscheck)) {
$GLOBALS['PrevUrl'] = $accesscheck;
session_register('PrevUrl');
}
if (isset($_POST['user'])) {
$loginUsername=$_POST['user'];
$password=$_POST['passe'];
$MM_fldUserAuthorization = "droit";//// nom du champ de la table qui donne les niveau d'accès si pas de doit suprimer simplement la valeur entre les "" et les laisser vide $MM_fldUserAuthorization = " "
$MM_redirectLoginSuccess = "page.php";//// page de destination si la connexion est validée
$MM_redirectLoginFailed = "conexion.php";///// page de destination si la connexion echout (dans notre cas elle même) mais cela peut être un fichier avec un message il suffit de remplacer le lien.
$MM_redirecttoReferrer = true;
mysql_select_db($database_totor, $totor); //// seclection de la table utilisateur suivant les données reprise dans le fichier connection de la première ligne
$LoginRS__query=sprintf("SELECT champ_login, champ_passe, champ_droit FROM nom_de_la_table WHERE login='%s' AND passe='%s'", /// ligne qui faut modifier pour la requette MySQL sur la table
get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password));
$LoginRS = mysql_query($LoginRS__query, $totor) or die(mysql_error());//// seclection de la table utilisateur suivant les données
$loginFoundUser = mysql_num_rows($LoginRS);
if ($loginFoundUser) {
$loginStrGroup = mysql_result($LoginRS,0,'droit');
//déclaration et assignation des variables de sessions
$GLOBALS['MM_Username'] = $loginUsername;
$GLOBALS['MM_UserGroup'] = $loginStrGroup;
//register les variable de sessions
session_register("MM_Username");
session_register("MM_UserGroup");
$_SESSION["MM_Username"] = $loginUsername;
$_SESSION["MM_UserGroup"] = $loginStrGroup;
if (isset($_SESSION['PrevUrl']) && true) {
$MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
}
header("Location: " . $MM_redirectLoginSuccess ); /// redirection si OK
}
else {
header("Location: ". $MM_redirectLoginFailed ); //// redirection si pas OK
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>
<body>
<p>Ecran de connexion</p>
<form name="form1" id="form1" method="POST" action="<?php echo $loginFormAction; ?>">
Votre user :
<input name="user" type="text" id="user" size="20" />
<br/><br/>
Votre user :
<input name="passe" type="password" id="passe" size="20" />
<br/><br/>
<input type="submit" name="Submit" value="connexion" />
</form>
<p> </p>
</body>
</html>
et enfin pour finir la page de reception qui est protégée par mot de passe et par niveau d'utilisateur (ce qui donne plus de possibilité pour éventuellement ce faire une partie admin)
la page.php contient le code qu'il faut mettre sur chaque page que l'on veut protéger (toute la partie en php qui est avant la balise <!DOCTYPE
code:
<?php
session_start(); //// demarage de la session
$MM_authorizedUsers = "admin";//// valeures des niveau d'accès si plusieur mettre $MM_authorizedUsers = "admin,util,toto";
$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;
}
$MM_restrictGoTo = "conexion.php";//// par de renvoie si l'accès à la page n'a pas été fait depuis l'ecran de connexion et validé par la table USER
if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {
$MM_qsChar = "?";
$MM_referrer = $_SERVER['PHP_SELF'];
if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
if (isset($QUERY_STRING) && strlen($QUERY_STRING) > 0)
$MM_referrer .= "?" . $QUERY_STRING;
$MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
header("Location: ". $MM_restrictGoTo);
exit;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>
<body>
voila une page protéger par variable de session et niveau d'accès
</body>
</html>
Pour que le code tel qu'il est ci-dessus fonctionne avec des droits il faut 4 champ minimum dans la table des user " id_user", "user_name", "user_passe", "user_droit".
Attention ce ne sont que des exemples de nom pour les champs mais ils peuvent avoir ceux que vous voulez il faut simplement adapter la page du formulaire suivant ceux-ci à votre cas, voir les notes dans les script. Et les codes que je vous donnes ci-dessus fonctionne telquel avec adaptation pour un site qui travail en "_blank" et "_self",
si vous travaillez avec des includes cela est tout a fait possible je l'ai fait mais cela nécessite d'importante modification et il ne faut pas forcément les codes complet sur chaque page.
Voila si ce petit bout de code peut rendre service servez-vous il est testé sur "Infomaniac" "amen" "tiscali en perso" "free en hébergement perso" (il faut juste pensé à créer un répertoire "sessions"....
Voila je pense que vous avez de quoi vous amuser.
complement une page de deconexion pour detruire toutes les variables de session, il suffit dans chaque page de faire un lien vers cette page pour fermer la session et detruire les variable de session dans leurs globalitée.
fermeture_session.php
code:
<?php
// On démarre la session
session_start ();
// On détruit les variables de notre session
session_unset ();
// On détruit notre session
session_destroy ();
// On redirige le visiteur vers la page d'accueil
header ('location: page_de_retour.php');//// mettre le lien vers la page de retour
?>
et bonus, si vous avez des variable de session à promener sur votre site il suffit de les rajouter dans votre fichier totor.php saprès la dernière ligne et de les faire reprendre
dans le formulaire de connexion pour que celles-ci ne soient mise session que si la connexion a été validé suivant le principe ci-dessous:
dans le totor.php
code sous la dernière ligne avent fermeture du php:
<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_totor = "00.000.00.00";///ip ou adresse serveur MySQL qui contient votre base de donnée
$database_totor = "nombasedonnées";/// nom de la base de donnée
$username_totor = "loginbase";////login de connexion à la base de données
$password_totor = "passebase";////mot de passe de connexion à la base de données
$totor = mysql_pconnect($hostname_totor, $username_totor, $password_totor) or trigger_error(mysql_error(),E_USER_ERROR);
$propre_table_user="non";
$chemin_script="xxxxxxxxxxxxx";
$table_user="yyyyyyyy";
?>
et dans la page du formulaire de connexion ce rajout:
if (isset($_POST['login'])) {
$loginUsername=$_POST['login'];
$password=$_POST['passe'];
$session_script=$chemin_script;
$session_table_user=$table_user;
//////////////////////////////////
//////////////////////////////////
//declare two session variables and assign them
$GLOBALS['MM_Username'] = $loginUsername;
$GLOBALS['MM_UserGroup'] = $loginStrGroup;
$GLOBALS['MM_session_script'] = $session_script;
$GLOBALS['MM_session_table_user'] = $session_table_user;
//register the session variables
session_register("MM_Username");
session_register("MM_UserGroup");
session_register("MM_session_script");
session_register("MM_session_table_user");
$_SESSION["MM_Username"] = $loginUsername;
$_SESSION["MM_UserGroup"] = $loginStrGroup;
$_SESSION["MM_session_script"] = $session_script;
$_SESSION["MM_session_table_user"] = $session_table_user; |