source: trunk/admin/admin.php@ 119

Last change on this file since 119 was 80, checked in by roby, 15 years ago

client - correzione per consultazione predefinita
admin - eliminati altri notice, modificata la funzione di visualizzazione della barra di elenco delle sezioni, aggiunti help per Scarica liste e Importa liste, corrette alcune incompatibilità con xhtml

File size: 17.1 KB
Line 
1<?php
2
3/************************************************************************/
4/* Eleonline - Raccolta e diffusione dei dati elettorali */
5/* by Roberto Gigli & Luciano Apolito */
6/* http://www.eleonline.it */
7/* info@eleonline.it luciano@aniene.net rgigli@libero.it */
8/************************************************************************/
9/* Admin */
10/* Amministrazione */
11/************************************************************************/
12
13/* Descrizione file admin.php =
14effettua il login o il rilancio alla gestione */
15
16define('ADMIN_FILE', true);
17#$LIMITE=3; //fascia di separazione del maggioritario (15.000 abitanti)
18# tempo di sessione: ini_set('session.gc_maxlifetime','3600');
19
20// Adattamento variabili superglobal
21// Versione di php
22$phpver = phpversion();
23
24// converte superglobal se php e' < 4.1.0
25
26if ($phpver < '4.1.0') {
27 $_GET = $HTTP_GET_VARS;
28 $_POST = $HTTP_POST_VARS;
29 $_SERVER = $HTTP_SERVER_VARS;
30 $_FILES = $HTTP_POST_FILES;
31 $_ENV = $HTTP_ENV_VARS;
32 if($_SERVER['REQUEST_METHOD'] == "POST") {
33 $_REQUEST = $_POST;
34 } elseif($_SERVER['REQUEST_METHOD'] == "GET") {
35 $_REQUEST = $_GET;
36 }
37 if(isset($HTTP_COOKIE_VARS)) {
38 $_COOKIE = $HTTP_COOKIE_VARS;
39 }
40 if(isset($HTTP_SESSION_VARS)) {
41 $_SESSION = $HTTP_SESSION_VARS;
42 }
43}
44
45$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
46if (isset($param['aid'])) get_magic_quotes_gpc() ? $aid=$param['aid']:$aid=addslashes($param['aid']);
47if (isset($param['pwd'])) get_magic_quotes_gpc() ? $pwd2=$param['pwd']:$pwd2=addslashes($param['pwd']);
48// Additional security (Union, CLike, XSS)
49
50// We want to use the function stripos,
51// but thats only available since PHP5.
52// So we cloned the function...
53if(!function_exists('stripos')) {
54 function stripos_clone($haystack, $needle, $offset=0) {
55 return strpos(strtoupper($haystack), strtoupper($needle), $offset);
56 }
57} else {
58// But when this is PHP5, we use the original function
59 function stripos_clone($haystack, $needle, $offset=0) {
60 return stripos($haystack, $needle, $offset=0);
61 }
62}
63
64 if(isset($_SERVER['QUERY_STRING']) && (!stripos_clone($_SERVER['QUERY_STRING'], "ad_click") || !stripos_clone($_SERVER['QUERY_STRING'], "url"))) {
65 $queryString = $_SERVER['QUERY_STRING'];
66 if (stripos_clone($queryString,'%20union%20') OR stripos_clone($queryString,'/*') OR stripos_clone($queryString,'*/union/*') OR stripos_clone($queryString,'c2nyaxb0') OR stripos_clone($queryString,'+union+') OR stripos_clone($queryString,'http://') OR (stripos_clone($queryString,'cmd=') AND !stripos_clone($queryString,'&cmd')) OR (stripos_clone($queryString,'exec') AND !stripos_clone($queryString,'execu')) OR stripos_clone($queryString,'concat')) {
67 die('Operazione non consentita');
68 }
69 }
70
71
72foreach ($_GET as $sec_key => $secvalue) {
73 if ((preg_match("/<[^>]*script*\"?[^>]*>/i",$secvalue)) ||
74 (preg_match("/<[^>]*object*\"?[^>]*>/i", $secvalue)) ||
75 (preg_match("/<[^>]*iframe*\"?[^>]*>/i", $secvalue)) ||
76 (preg_match("/<[^>]*applet*\"?[^>]*>/i", $secvalue)) ||
77 (preg_match("/<[^>]*meta*\"?[^>]*>/i", $secvalue)) ||
78 (preg_match("/<[^>]*style*\"?[^>]*>/i", $secvalue)) ||
79 (preg_match("/<[^>]*form*\"?[^>]*>/i", $secvalue)) ||
80 (preg_match("/<[^>]*img*\"?[^>]*>/i", $secvalue)) ||
81 (preg_match("/<[^>]*onmouseover*\"?[^>]*>/i", $secvalue)) ||
82 (preg_match("/<[^>]*body*\"?[^>]*>/i", $secvalue)) ||
83 (preg_match("/\([^>]*\"?[^)]*\)/", $secvalue)) ||
84 (preg_match("/\"/", $secvalue)) ||
85 (preg_match("/inside_mod/i", $sec_key))) {
86 die ("Operazione non consentita");
87 }
88 }
89
90 foreach ($_POST as $secvalue) {
91 if ((preg_match("/<[^>]*onmouseover*\"?[^>]*>/i", $secvalue)) || (preg_match("/<[^>]script*\"?[^>]*>/i", $secvalue)) || (preg_match("/<[^>]*body*\"?[^>]*>/i", $secvalue)) || (preg_match("/<[^>]style*\"?[^>]*>/i", $secvalue))) {
92 die ('Operazione non consentita');
93 }
94 }
95
96// Posting from other servers in not allowed
97// Fix by Quake
98// Bug found by PeNdEjO
99
100if ($_SERVER['REQUEST_METHOD'] == "POST") {
101 if (isset($_SERVER['HTTP_REFERER'])) {
102 if (!stripos_clone($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST'])) {
103 die('Posting da un altro server non consentito!');
104 }
105 } else {
106# die('<b>Attenzione:</b> il tuo browser non puo inviare gli header HTTP_REFERER al website.<br>'.$_SERVER['HTTP_REFERER']);
107 }
108}
109
110
111
112
113
114
115
116//===================================================================
117session_name('sesadmin');
118session_start();//MODIFICHE PER GESTIONE SESSIONI
119 // gestione sessione
120
121
122
123include("config.php");
124 $dbi=mysql_connect($dbhost, $dbuname, $dbpass) or die("Connessione non riuscita: " . mysql_error());
125 mysql_select_db($dbname)or die("Connessione non riuscita:" . mysql_error());
126 mysql_query("SET NAMES 'utf8'", $dbi);
127//---10/05/2009 gestione consultazione predefinita
128 $res_config = mysql_query("select * from ".$prefix."_config ",$dbi);
129 list ($sitename,$siteurl,$site_logo,$slogan,$startdate,$adminmail,$tema,$foot,$language,$blocco
130,$testata,$logo,$fileout,$copyright,$versione,$patch,$id_comune,$multicomune,$flash,$displayerrors,$editor,$tema_on,$ed_user) = mysql_fetch_row($res_config);
131 $siteistat=$id_comune;
132if (!isset($_SESSION['id_comune'])){
133 $_SESSION['sitename']=$sitename;
134 $_SESSION['siteurl']=$siteurl;
135 $_SESSION['site_logo']=$site_logo;
136 $_SESSION['slogan']=$slogan;
137 $_SESSION['startdate']=$startdate;
138 $_SESSION['adminmail']=$adminmail;
139 if ($tema=='facebook')
140 $_SESSION['tema']=$tema;
141 else $_SESSION['tema']='default';
142 $_SESSION['foot']=$foot;
143 $_SESSION['lang']=$language;
144 $_SESSION['blocco']=$blocco;
145 $_SESSION['testata']=$testata;
146 $_SESSION['logo']=$logo;
147 $_SESSION['fileout']=$fileout;
148 $_SESSION['copyright']=$copyright;
149 $_SESSION['versione']=$versione;
150 $_SESSION['patch']=$patch;
151 $_SESSION['id_comune']=$id_comune;
152 $_SESSION['multicomune']=$multicomune;
153 $_SESSION['flash']=$flash;
154 $_SESSION['displayerrors']=$displayerrors;
155 $_SESSION['editor']=$editor;
156 $_SESSION['tema_on']=$tema_on;
157 $_SESSION['ed_user']=$ed_user;
158}
159//fine
160if (isset($param['aid'])) {
161 if (strlen($aid)>25 ) { die ("Nome utente troppo lungo: $aid"); }
162 if (!isset($param['id_ses']) or $param['id_ses'] != session_id()) logout();
163 if (strstr( $aid," ")) { die ("Gli spazi non sono ammessi nel nome utente: $aid"); }
164 if (isset($_SESSION['aid'])){
165 logout();//se hai gia' una sessione aperta non puoi postare 'aid'
166 }else{
167
168
169 // $pwd2=$param['pwd'];
170 $mpwd=md5($pwd2);
171
172 // se superUserAdmin
173########
174 $res_comune = mysql_query("select adminsuper from ".$prefix."_authors where aid='$aid' and pwd='$mpwd'",$dbi);
175 list ($adminsuper) = mysql_fetch_row($res_comune);
176 if ($adminsuper==1) $id_comune='0';
177 elseif (is_numeric($param['id_comune']) and intval($param['id_comune'])>0) $id_comune=intval($param['id_comune']);
178 $res= mysql_query("select counter,admlanguage from ".$prefix."_authors where aid='$aid' and pwd='$mpwd' and id_comune='$id_comune'", $dbi);
179
180 if ($res){
181 $esiste=mysql_num_rows($res);
182
183
184 list ($counter,$tmplang) = mysql_fetch_row($res);
185 $counter+=1;
186 if(strlen($tmplang)==2) $language=$tmplang;
187 $resup=mysql_query("update ".$prefix."_authors set counter=$counter where aid='$aid' and pwd='$mpwd' and id_comune='$id_comune'", $dbi);
188 if ($esiste==1) {
189 $_SESSION['dbi']=$dbi;
190 $_SESSION['aid']="$aid";
191 $_SESSION['pwd']="$mpwd";
192 $_SESSION['lang']="$language";
193 $_SESSION['id_comune']="$id_comune";
194 $_SESSION['prefix']="soraldo";
195 $_SESSION['remote']=$_SERVER['REMOTE_ADDR'];
196 $_SESSION['bgcolor1']='#ffffff';
197 $_SESSION['bgcolor2']='#c5c5c5';
198 session_regenerate_id();
199 }
200 }
201 }
202}else{
203$_SESSION['dbi']=$dbi;
204
205}
206if (! isset($_SESSION['lang'])) $_SESSION['lang']=$language;
207$currentlang=strlen($_SESSION['lang'])==2 ? $_SESSION['lang']: $language;
208#if (isset($_SESSION['lang'])) $currentlang=$_SESSION['lang']; else $currentlang='it';
209if (isset($_SESSION['aid']))
210{
211//lettura sessione
212$aid=$_SESSION['aid'];
213$dbi=$_SESSION['dbi'];
214$prefix=$_SESSION['prefix'];
215$id_comune=$_SESSION['id_comune'];
216if (isset($_GET['id_cons_gen'])) $id_cons_gen=intval($_GET['id_cons_gen']);
217else {
218//10/05/2009 gestione consultazione predefinita
219 $result = mysql_query("select id_cons_gen from ".$prefix."_ele_cons_comune where preferita='1' and (id_comune='$id_comune' or id_comune=0)", $dbi);
220list($id_cons_gen) = mysql_fetch_row($result);
221//---fine $id_cons_gen='';
222}
223$currentlang=$_SESSION['lang'];
224$bgcolor1=$_SESSION['bgcolor1'];
225$bgcolor2=$_SESSION['bgcolor2'];
226$bgcolor1='#e7e7e7';
227$session=$_SESSION['remote'];
228
229$perms=ChiSei($id_cons_gen);
230}
231
232
233/*********************************************************/
234/* Login Function */
235/*********************************************************/
236function ChiSei($id_cons_gen){
237
238//$server=$_SERVER['REMOTE_ADDR'];
239//$session=$_SESSION['remote'];
240//if ($session!=$server) { die ("Problema di sessione"); };
241$aid=$_SESSION['aid'];
242$dbi=$_SESSION['dbi'];
243$prefix=$_SESSION['prefix'];
244$pwd=$_SESSION['pwd'];
245$id_comune=$_SESSION['id_comune'];
246
247
248$perms=0;
249$result = mysql_query("select adminsuper, admincomune, adminop from ".$prefix."_authors where aid='$aid' and pwd='$pwd' and (id_comune='$id_comune' or id_comune=0)", $dbi);
250list($adminsuper,$admincomune,$adminop) = mysql_fetch_row($result);
251//exit;
252if (($adminsuper==1 || $admincomune==1 || $adminop==1)) {
253 if ($adminsuper==1)
254 return 256;
255// $ressup = mysql_query("select permessi from ".$prefix."_ele_operatori where id_cons='0' and aid='$aid' and id_comune='0'",$dbi);
256 elseif ($adminop==1)
257 $ressup = mysql_query("select permessi from ".$prefix."_ele_operatori where id_cons='0' and aid='$aid' and id_comune='$id_comune'",$dbi);
258 elseif ($admincomune==1) {
259 $res=mysql_query("select id_cons from ".$prefix."_ele_cons_comune where id_comune='$id_comune' and id_cons_gen='$id_cons_gen'",$dbi);
260 list ($id_cons)=mysql_fetch_row($res);
261 $ressup = mysql_query("select permessi from ".$prefix."_ele_operatori where id_cons='$id_cons' and aid='$aid' and id_comune='$id_comune'",$dbi);
262 }
263 if (mysql_num_rows($ressup)==1) list($perms)=mysql_fetch_row($ressup); else $perms=0;
264 return $perms;
265} else return 0;
266}
267
268function OpenTable(){
269echo "<table width=\"100%\" cellpadding=\"0\" cellspacing=\"2\" BORDER=\"0\">";
270}
271
272function CloseTable(){
273echo "</table>";
274}
275
276function login() {
277 global $param,$prefix,$dbi,$multicomune,$siteistat,$language,$tema;
278 $lang=strlen($_SESSION['lang'])==2 ? $_SESSION['lang']: $language;
279 if (isset($param['id_comune'])) $id_comune=intval($param['id_comune']);
280 if (!isset($id_comune)) $id_comune=0;
281 session_regenerate_id();
282 $id_ses=session_id();
283#die("test:$tema");
284 //include("modules/Elezioni/language/lang-$lang.php");
285 include ("header.php");
286 echo "<div align=\"middle\"><font class=\"title\"><b>"._GESTIONE."</b></font></center>";
287 echo "<br>"; # method=\"post\"
288 echo "<form name=\"login\" method=\"post\" action=\"admin.php\">"
289 ."<table class=\"table-menu\">"
290 ."<tr><td>"._ADMINID."</td>"
291 ."<td><input type=\"text\" NAME=\"aid\" SIZE=\"20\" MAXLENGTH=\"25\"></td></tr>"
292 ."<tr><td>"._PASSWORD."</td>"
293 ."<td><input type=\"password\" NAME=\"pwd\" SIZE=\"20\" MAXLENGTH=\"18\"></td></tr>"
294 ."<tr><td>";
295 // scelta comune
296 if($multicomune=='1'){
297 echo ""._COMUNE."</td><td>";
298 $sqlcomu="select id_comune,descrizione from ".$prefix."_ele_comuni order by descrizione asc";
299 $rescomu= mysql_query("$sqlcomu",$dbi);
300
301 echo "<select name=\"id_comune\">";
302 while (list($id,$descrizione)=mysql_fetch_row($rescomu))
303 {
304 $sel=($id == $id_comune) ? "selected":"";
305 echo "<option value=\"$id\" $sel>$descrizione";
306 }
307 }else{
308 echo "<input type=\"hidden\" name=\"id_comune\" value=\"$siteistat\">";
309 }
310// echo "<input type=\"hidden\" name=\"id_comune\" value=\"$id_comune\">";
311 if(strlen($lang)==2) echo "<input type=\"hidden\" name=\"language\" value=\"$lang\">";
312 echo "</td></tr><tr><td>";
313 echo "<input type=\"hidden\" name=\"id_ses\" value=\"$id_ses\">";
314 echo "<input type=\"submit\" VALUE=\""._OK."\">"
315 ."</td></tr></table>"
316 ."</form></div>";
317
318 include ("footer.php");
319}
320
321function logout()
322{
323/* $lang=$_SESSION['lang'];
324$id_comune=$_SESSION['id_comune'];
325// setcookie ("PHPSESSID", "", time() - 3600);
326 session_cache_expire (0);
327 $_SESSION=array(); //MODIFICHE PER GESTIONE SESSIONI
328 session_unset();
329 session_destroy();
330 Header("Location: admin.php?id_comune=$id_comune&language=$lang");
331*/
332global $siteistat;
333
334$ref="Location: admin.php?";
335if (isset($_SESSION['id_comune']))
336$id_comune=$_SESSION['id_comune'];
337else
338$id_comune=$siteistat;
339$ref=$ref."id_comune=".$id_comune;
340
341if (isset($_SESSION['lang']))
342$ref=$ref."&language=".$_SESSION['lang'];
343
344session_cache_expire (0);
345$_SESSION=array();
346session_unset();
347session_destroy();
348Header($ref);
349
350}
351
352if (isset($param['op'])) get_magic_quotes_gpc() ? $op=$param['op']:$op=addslashes($param['op']); else $op='ele';
353//if (isset($param['op'])) $op=$param['op']; else $op='ele';
354if (isset($_SESSION['aid']) AND $_SESSION['remote']==$_SERVER['REMOTE_ADDR']) {
355switch($op) {
356 case "tipo":
357 include("modules/Elezioni/ele_tipi.php");
358 break;
359 case "constipi":
360 include("modules/Elezioni/ele_consultazionitipi.php");
361 break;
362 case "aggiorna":
363 include("modules/Elezioni/aggiorna.php");
364 break;
365 case "parziali":
366 include("modules/Elezioni/ele_parziali.php");
367 break;
368 case "ele":
369 include("modules/Elezioni/ele.php");
370 break;
371 case "consultazione":
372 include("modules/Elezioni/ele_consultazioni.php");
373 break;
374 case "configurazione":
375 include("modules/Elezioni/ele_configurazione.php");
376 break;
377 case "cons_comuni":
378 include("modules/Elezioni/ele_cons_comuni.php");
379 break;
380 case "confconsiglio":
381 include("modules/Elezioni/ele_confcons.php");
382 break;
383 case "inscomuni":
384 include("modules/Elezioni/ele_comuni.php");
385 break;
386 case "oper_admin":
387 include("modules/Elezioni/ele_operatori.php");
388 break;
389 case "inscollegi":
390 include("modules/Elezioni/ele_collegi.php");
391 break;
392 case "associazioni":
393 include("modules/Elezioni/ele_associazioni.php");
394 break;
395 case "operatori":
396 include("modules/Elezioni/ele_operatori.php");
397 break;
398 case "permessi":
399 include("modules/Elezioni/ele_permessi.php");
400 break;
401 case "circo":
402 include("modules/Elezioni/ele_circo.php");
403 break;
404 case "sede":
405 include("modules/Elezioni/ele_sede.php");
406 break;
407case "sezione":
408 include("modules/Elezioni/ele_sezione.php");
409 break;
410case "gruppo":
411 include("modules/Elezioni/ele_gruppo.php");
412 break;
413case "rec_add_aff":
414 include("modules/Elezioni/ele_affluenze.php");
415 break;
416case "rec_add_mod":
417 include("modules/Elezioni/ele_modelli.php");
418 break;
419case "upgruppo":
420 include("modules/Elezioni/ele_gruppo.php");
421 break;
422case "delimggruppo":
423 include("modules/Elezioni/ele_gruppo.php");
424 break;
425case "lista":
426 include("modules/Elezioni/ele_lista.php");
427 break;
428case "uplista":
429 include("modules/Elezioni/ele_lista.php");
430 break;
431case "delimglista":
432 include("modules/Elezioni/ele_lista.php");
433 break;
434case "candidato":
435 include("modules/Elezioni/ele_candidato.php");
436 break;
437case "upcandidato":
438 include("modules/Elezioni/ele_candidato.php");
439 break;
440case "delimgcandidato":
441 include("modules/Elezioni/ele_candidato.php");
442 break;
443
444case "voti":
445 include("modules/Elezioni/ele_voti.php");
446 break;
447case "sezioni_voti":
448 include("modules/Elezioni/ele_voti.php");
449 break;
450case "rec_voti":
451 include("modules/Elezioni/ele_voti.php");
452 break;
453case "rec_voti_gruppi":
454 include("modules/Elezioni/ele_voti.php");
455 break;
456case "rec_add_votanti":
457 include("modules/Elezioni/ele_voti.php");
458 break;
459case "rec_finale":
460 include("modules/Elezioni/ele_voti.php");
461 break;
462case "controllo_voti":
463 include("modules/Elezioni/controllo_voti.php");
464 break;
465case "controllo_votanti":
466 include("modules/Elezioni/controllo_votanti.php");
467 break;
468case "come":
469 include("modules/Elezioni/ele_come.php");
470 break;
471case "numeri":
472 include("modules/Elezioni/ele_come.php");
473 break;
474case "servizi":
475 include("modules/Elezioni/ele_come.php");
476 break;
477case "link":
478 include("modules/Elezioni/ele_come.php");
479 break;
480case "conf":
481 include("modules/Elezioni/ele_conf.php");
482 break;
483case "stampa":
484 include("modules/Elezioni/ele_stampe.php");
485 break;
486case "cambiopwd":
487 include("modules/Elezioni/ele_pwd.php");
488 break;
489case "eletti":
490 include("modules/Elezioni/ele_eletti.php");
491 break;
492case "foto":
493 include("modules/Elezioni/foto.php");
494 break;
495case "consiglieri":
496 include("modules/Elezioni/ele_consiglieri.php");
497 break;
498case "backup":
499 include("modules/Elezioni/backup.php");
500 break;
501case "restore":
502 include("modules/Elezioni/restore.php");
503 break;
504case "scarica":
505 include("modules/Elezioni/scarica.php");
506 break;
507case "importa":
508 include("modules/Elezioni/importa.php");
509 break;
510case "widget":
511 include("modules/Elezioni/ele_widget.php");
512 break;
513
514
515case "logout":
516 logout();
517 break;
518}
519}else {
520
521 login();
522
523}
524
525
526?>
Note: See TracBrowser for help on using the repository browser.