root/trunk/admin/admin.php

Revision 139, 17.2 kB (checked in by roby, 2 weeks ago)

Modifiche per gestione Legge regione Sicilia 2011

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 =
14 effettua il login o il rilancio alla gestione */
15
16 define('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
26 if ($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;
46 if (isset($param['aid'])) get_magic_quotes_gpc() ? $aid=$param['aid']:$aid=addslashes($param['aid']);
47 if (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...
53 if(!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
72 foreach ($_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
100 if ($_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 //===================================================================
117 session_name('sesadmin');
118 session_start();//MODIFICHE PER GESTIONE SESSIONI
119   // gestione sessione
120
121
122
123 include("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;
132 if (!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
160 if (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 }
206 if (! 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';
209 if (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'];
216 if (isset($_GET['id_cons_gen'])) $id_cons_gen=intval($_GET['id_cons_gen']);
217 else {
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);
220 list($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 /*********************************************************/
236 function 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);
250 list($adminsuper,$admincomune,$adminop) = mysql_fetch_row($result);
251 //exit;
252 if (($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
268 function OpenTable(){
269 echo "<table  width=\"100%\"   cellpadding=\"0\" cellspacing=\"2\"  BORDER=\"0\">";
270 }
271
272 function CloseTable(){
273 echo "</table>";
274 }
275
276 function 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
321 function 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 */
332 global $siteistat;
333
334 $ref="Location: admin.php?";
335 if (isset($_SESSION['id_comune']))
336 $id_comune=$_SESSION['id_comune'];
337 else
338 $id_comune=$siteistat;
339 $ref=$ref."id_comune=".$id_comune;
340
341 if (isset($_SESSION['lang']))
342 $ref=$ref."&language=".$_SESSION['lang'];
343
344 session_cache_expire (0);
345 $_SESSION=array(); 
346 session_unset();
347 session_destroy();
348 Header($ref);
349
350 }
351
352 if (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';
354 if (isset($_SESSION['aid']) AND $_SESSION['remote']==$_SERVER['REMOTE_ADDR']) {
355 switch($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;
407 case "sezione":
408     include("modules/Elezioni/ele_sezione.php");
409     break;
410 case "gruppo":
411     include("modules/Elezioni/ele_gruppo.php");
412     break;
413 case "rec_add_aff":
414     include("modules/Elezioni/ele_affluenze.php");
415     break;
416 case "rec_add_mod":
417     include("modules/Elezioni/ele_modelli.php");
418     break;
419 case "upgruppo":
420     include("modules/Elezioni/ele_gruppo.php");
421     break;
422 case "delimggruppo":
423     include("modules/Elezioni/ele_gruppo.php");
424     break;
425 case "lista":
426     include("modules/Elezioni/ele_lista.php");
427     break;
428 case "uplista":
429     include("modules/Elezioni/ele_lista.php");
430     break;
431 case "delimglista":
432     include("modules/Elezioni/ele_lista.php");
433     break;
434 case "candidato":
435     include("modules/Elezioni/ele_candidato.php");
436     break;
437 case "upcandidato":
438     include("modules/Elezioni/ele_candidato.php");
439     break;
440 case "delimgcandidato":
441     include("modules/Elezioni/ele_candidato.php");
442     break;
443
444 case "voti":
445     include("modules/Elezioni/ele_voti.php");
446     break;
447 case "sezioni_voti":
448     include("modules/Elezioni/ele_voti.php");
449     break;
450 case "rec_voti":
451     include("modules/Elezioni/ele_voti.php");
452     break;
453 case "rec_voti_gruppi":
454     include("modules/Elezioni/ele_voti.php");
455     break;
456 case "rec_add_votanti":
457     include("modules/Elezioni/ele_voti.php");
458     break;
459 case "rec_finale":
460     include("modules/Elezioni/ele_voti.php");
461     break;
462 case "controllo_voti":
463     include("modules/Elezioni/controllo_voti.php");
464     break;
465 case "controllo_votanti":
466     include("modules/Elezioni/controllo_votanti.php");
467     break;
468 case "come":
469     include("modules/Elezioni/ele_come.php");
470     break;
471 case "numeri":
472     include("modules/Elezioni/ele_come.php");
473     break;
474 case "servizi":
475     include("modules/Elezioni/ele_come.php");
476     break;
477 case "link":
478     include("modules/Elezioni/ele_come.php");
479     break;
480 case "conf":
481     include("modules/Elezioni/ele_conf.php");
482     break;
483 case "stampa":
484     include("modules/Elezioni/ele_stampe.php");
485  break;
486 case "cambiopwd":
487     include("modules/Elezioni/ele_pwd.php");
488     break;
489 case "eletti":
490     include("modules/Elezioni/ele_eletti.php");
491     break;
492 case "foto":
493     include("modules/Elezioni/foto.php");
494     break;
495 case "consiglieri":
496     include("modules/Elezioni/ele_consiglieri.php");
497     break;
498 case "backup":
499     include("modules/Elezioni/backup.php");
500     break;
501 case "restore":
502     include("modules/Elezioni/restore.php");
503     break;
504 case "scarica":
505     include("modules/Elezioni/scarica.php");
506     break;
507 case "importa":
508     include("modules/Elezioni/importa.php");
509     break;
510 case "widget":
511     include("modules/Elezioni/ele_widget.php");
512     break;
513 case "riepilogo":
514     include("modules/Elezioni/ele_riepilogo.php");
515     break;
516   
517
518 case "logout":
519     logout();
520     break;
521 }
522 }else {
523
524     login();
525
526 }
527
528
529 ?>
530
Note: See TracBrowser for help on using the browser.