Projet

Général

Profil

Proto page » Historique » Version 1

Pascal Fautrero, 01/07/2010 21:46

1 1 Pascal Fautrero
h1. Page type (programmation old_style)
2
3
<pre><code>
4
<?php
5
6
/**
7
 *
8
 * exemple de page GEPI pour montrer les fonctionnalités disponibles et les précautions à prendre. (protections contre les attaques classiques)
9
 * @version $Id: prototype_page_gepi.php $
10
 *
11
 * Copyright 2001, 2010 LesNomsDesDeveloppeurs
12
 *
13
 * This file is part of GEPI.
14
 *
15
 * GEPI is free software; you can redistribute it and/or modify
16
 * it under the terms of the GNU General Public License as published by
17
 * the Free Software Foundation; either version 2 of the License, or
18
 * (at your option) any later version.
19
 *
20
 * GEPI is distributed in the hope that it will be useful,
21
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
22
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23
 * GNU General Public License for more details.
24
 *
25
 * You should have received a copy of the GNU General Public License
26
 * along with GEPI; if not, write to the Free Software
27
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
28
 */
29
30
 // ********************************************************************************************
31
//
32
// 							TITRE DE LA PAGE
33
//
34
// ********************************************************************************************
35
36
$titre_page = "Le titre qui apparaitra en haut de la page";
37
38
// ********************************************************************************************
39
//
40
// Si $affiche_connexion est définie, on voit apparaitre la dernière connexion dans l'entête
41
//
42
// ********************************************************************************************
43
$affiche_connexion = 'yes';
44
45
// ********************************************************************************************
46
//
47
// Position du script dans l'arborescence GEPI : (indispensable)
48
// à la racine 						-> $niveau_arbo = 0
49
// dans un sous-dossier 			-> $niveau_arbo = 1
50
// dans un sous-sous-dossier 		-> $niveau_arbo = 2
51
// dans un sous-sous-sous-dossier 	-> $niveau_arbo = 3 (valeur maxi)
52
//
53
// ********************************************************************************************
54
$niveau_arbo = 1;
55
56
// ********************************************************************************************
57
//
58
// 				Initialisations files 
59
//
60
// ********************************************************************************************
61
62
// initialisations (indispensables)
63
// 
64
// 1. Filtrage de $_GET, $_POST, $_SERVER, $COOKIE contre injections SQL
65
// 2. Filtrage de $_GET et $_POST contre injections XSS
66
// 3. Filtrage de $_FILES pour interdire certaines extensions
67
68
// on peut définir la liste des fichiers autorisés au téléchargement - filtrage de $_FILES (optionnel)
69
$AllowedFilesExtensions = array("txt", "png");
70
71
require_once("../lib/initialisations.inc.php");
72
73
// initialisation pour pouvoir utiliser Propel (optionnel)
74
include("../lib/initialisationsPropel.inc.php");
75
76
// ********************************************************************************************
77
//
78
// 				inclusions personnelles (optionnel)
79
//
80
// ********************************************************************************************
81
82
require_once("./mesfonctions.php");
83
84
// ********************************************************************************************
85
//
86
// 				Vérification de l'authentification - (indispensable)
87
//
88
// ********************************************************************************************
89
90
$resultat_session = $session_gepi->security_check();
91
if ($resultat_session == 'c') {
92
   header("Location:utilisateurs/mon_compte.php?change_mdp=yes&retour=accueil#changemdp");
93
   die();
94
} else if ($resultat_session == '0') {
95
    header("Location: ../logout.php?auto=1");
96
    die();
97
}
98
99
// ********************************************************************************************
100
//
101
// Sécurité  - (indispensable)
102
// ajout d'une ligne du style suivant dans 'sql/data_gepi.sql' et 'utilitaires/updates/access_rights.inc.php'
103
// INSERT INTO droits VALUES ('/edt_organisation/verifier_edt.php', 'V', 'F', 'F', 'F', 'F', 'F', 'F', 'vérifier la table edt_cours', '');
104
//
105
// ********************************************************************************************
106
107
if (!checkAccess()) {
108
    header("Location: ../logout.php?auto=2");
109
    die();
110
}
111
112
// ********************************************************************************************
113
//
114
// 						Initialisation des variables
115
//
116
// ********************************************************************************************
117
118
// Toutes les variables $_GET et $_POST sont traitées par InputFilter ou HTMLPurifier (permet de se prémunir des injections XSS)
119
// Le choix du filtre se fait par l'intermédiaire du champ 'filtrage_html' dans la table 'setting' - à ajouter ou modifier directement dans la table pour le personnaliser
120
// valeurs prises par 'filtrage_html' : 'input_filter', 'htmlpurifier' ou 'pas_de_filtrage_html'.
121
// par défaut, on utilise le filtre 'htmlpurifier'
122
123
$MyLogin = isset($_GET["MyLogin"]) ? $_GET["MyLogin"] : (isset($_POST["MyLogin"]) ? $_POST["MyLogin"] : NULL);
124
$MyMessage = "";
125
$MyMessage2 = "";
126
127
// ********************************************************************************************
128
//
129
// 						Traitement des données - mise en forme
130
//
131
// ********************************************************************************************
132
133
// Exemple d'une requête SQL traditionnelle
134
$sql = "SELECT nom FROM utilisateurs WHERE login='".$MyLogin."' ";
135
$req = mysql_query($sql);
136
if ($req) {
137
	$rep = mysql_fetch_array($req);
138
	if ($rep) {
139
		$MyMessage = "<p>Hello ".$rep['nom']."</p>\n";
140
	}
141
	else {
142
		$MyMessage = "<p>Mais qui êtes-vous ?</p>\n";
143
	}
144
}
145
else {
146
	$MyMessage = "<p>Une erreur SQL est survenue</p>\n";
147
}
148
149
// Exemple d'une requête Propel
150
$req = New Criteria();
151
$req->add(UtilisateurProfessionnelPeer::LOGIN, $MyLogin);
152
$user = UtilisateurProfessionnelPeer::doSelectOne($req);
153
if ($user) {
154
	$MyMessage2 = "<p>Hello ".$user->getNom()."</p>\n";
155
}
156
else {
157
	$MyMessage2 = "<p>Mais qui êtes-vous ?</p>\n";
158
}
159
// ********************************************************************************************
160
//
161
// 						CSS et js particulier (chargés par le header)
162
//
163
// ********************************************************************************************
164
165
$javascript_specifique[0] = "path/filename_js_1";
166
$javascript_specifique[1] = "path/filename_js_2";
167
$style_specifique[0] = "path/filename_css_1";
168
$style_specifique[1] = "path/filename_css_2";
169
170
// ======================= Pour utiliser 'scriptaculous' (basé sur prototype)
171
$utilisation_scriptaculous = 'ok';	
172
$scriptaculous_effet = 'effects,dragdrop';
173
174
// ======================= Pour utiliser 'prototype window' (basé sur prototype)
175
$utilisation_win = 'oui';
176
177
178
// ********************************************************************************************
179
//
180
// 						Affichage de la page
181
//
182
// ********************************************************************************************
183
184
// inclusion du header
185
require_once("../lib/header.inc");
186
187
// le corps de la page ici
188
echo $MyMessage;
189
echo $MyMessage2;
190
191
// inclusion du footer
192
require("../lib/footer.inc.php");
193
?>
194
195
</code></pre>