Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/03/2007, 18h39   #1
Invité de passage
 
Inscription : mars 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 2
Points : 1
Points : 1
Par défaut projet en php/mysql

Bonjour,

je suis nouvelle en php et egalement sur ce site je viens de m'y inscrire d'ailleurs

bon je travaille actuellement sur un site marchand que je suis censee deposer dans 10 jours je suis plantee au niveau panier et malhereusement je "collabore" avec un ingenieur qui ne s'y connait pas du tout et developpe d'une maniere un peu "bizzare" ,voila la deadline approche et nous avons toujours pas implemente ni l'authentification ni le panier s'il ya qqn parmi vous qui pourra me guider dans la realisation de ces deux etapes j'en serai vraiment reconnaissante .
je suis ouverte a toute proposition a voir meme des cours sur ligne que je connais pas ou des codes existants que je pourrai adapter a mes besoins.....
sans oublier la contrainte de temps que jai

merci d"avance
laila83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2007, 19h03   #2
Nouveau Membre du Club
 
Inscription : mars 2005
Messages : 65
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 65
Points : 27
Points : 27
Bonsoir,

Voila ci dessous le script d'un espace protégé que j'utilise, mais un peut simple pour un site marchand avec je pense du paiement par carte et autre, mais bon cela peut te donner au moins le départ pour l'espace d'enregistrement des membres avec une sécurisation par base de donnée dans l'exemple ci dessous (éventuellement essai de modifier les variable qui sont données pour plus de sécurité). et si tu arrives a bien analyser le code pour le mot de passe rajoute la fonction md5() au minimum par contre la dessus il te faut encore le formulaire d'enregistrement des clients et la gestion. Je ne veux pas être pessimiste, mais le délais de 10 jour me semble court pour tout programmer et tout tester car la il te faut encore faire la liaison entre les identifiant et le panier. Si tu as besoin de conseil par rapport à mon code tu peut me joindre en postant ici j'active le suivi.


voila un script tout fait pour faire une sécurisation assez optimum des page web via une connexion qui est sécurisé par la base de donnée.

à la racine du site ou autre position il faudra simplement faire pointer sur ce fichier la page qui contient le formulaire de connexion (c'est d'ailleur ce que je conseille il faut juste être vigilant sur les liens)
et il devra contenir le fichier qui reçois les données et qui dans mon script s'appel "totor.php"

Connexions

fichier totor.php
code:
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
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>&nbsp;</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;
et cela n'est qu'un exemple, vous pouvez en mettre autant que vous voulez.....

Voila maintenant je pense que je suis complet c'est vraiment à vous de jouer.....

Pour voir un exemple qui est fait sur ce principe (mais avec des includes) <lien>http://www.ggcsauer-moder.net</lien>
e-m.guillaume est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2007, 19h30   #3
Invité de passage
 
Inscription : mars 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 2
Points : 1
Points : 1
c'est tres gentil a toi "c'etait rapide quand meme"
je veillerai un peu cette nuit pour essayer ce code et je te dirai demain ce qu'il en ai.
et en + tu n'es pas vraiment pessimiste car moi non plus je ne sais comment remedier a cette contrainte de temps .

merci.
laila83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h05.


 
 
 
 
Partenaires

Hébergement Web