CVE-2020-36542 (PHP, published 2022-06-07T18:15Z)
Description: value: A vulnerability classified as critical has been found in Demokratian. This affects an unknown part of the file install/install3.php. The manipulation leads to privilege escalation. It is possible to initiate the attack remotely. The exploit has been disclosed to the public and may be used. It is recommended to apply a patch to fix this issue.
Severity: HIGH (CVSS v3 base score: 9.8)
Weakness: CWE-269 \u2014 Improper Privilege Management
The product does not properly assign, modify, track, or check privileges for an actor, creating an unintended sphere of control for that actor.
Repository: https://bitbucket.org/csalgadow/demokratian_votaciones
Files changed:
install/configura_3.php
install/index.php
install/install2.php
install/install3.php
Commit message: Hacemos mas seguro el instalador

Por si algún administrador displicente no borra la carpeta install, hacemos mas seguro el instalador impidiendo que se añadan nuevos administradores

Vulnerable code:
            $insql = "insert into $tbn9 (pass,id_provincia,usuario,correo_usuario,tipo_votante,nivel_acceso,nivel_usuario,nombre_usuario,id_ccaa,nif,id_municipio) values (  \"$passw\",  \"$provincia\", \"$nombre_usuario_new\", \"$email\", \"$tipo_votante\", \"$nivel_acceso\", \"$nivel_usuario\", \"$username\",\"$id_ccaa\",\"$nif\", \" $id_municipio\")";
                $errores = "Error al incluir datos: " . mysqli_error($con);

                                 <div class="form-group">
<p>
                                        <label>
                                            <input name="tipo_circuns" type="radio" id="tipo_circuns_0" value="false" checked="CHECKED">
                                           4 , por defecto   </label></p>
<p>
                                      <label>
                                            <input name="tipo_circuns" type="radio" id="tipo_circuns_1" value="true">
                                            Solo una</label>
                                            </p>
                                      <p>Por defecto crea circunscripciones estatal, autonómica, provincial  y municipal</p>
                                 <div class="form-group">
                                      <p>
                                        <label>
                                          <input name="correo_insti" type="radio" id="correo_insti_0" value="false" onClick="deshabilita_local()" checked="CHECKED">
                                          NO
                                        </label>
                                      <label>
                                          <input name="correo_insti" type="radio" id="correo_insti_1" value="true" onClick="habilita_local()">
                                          SI
                                        </label>
                                    (Si usa esta opción debe marcar circunscripcion unica)</p>
                                      <p>Permite votar usando correos institucionales de una empresa, ong, universidad, etc sin necesidad de registro previo por el administrador (solo podran votar los que tengan un correo de ese tipo). </p>
                             <div id="div_local"  class="caja_de_display" style="display:none" >
                                <div class="form-group">
                                   	    <label for="elCorreo_insti" class="col-sm-4 control-label"> </label>
                                    <div class="col-sm-4">
                                        <input type="text" name="elCorreo_insti" id="elCorreo_insti" class="form-control" size="25"  placeholder="@midominio.es"  autofocus>
                                    <div class="col-sm-4">
                                      <p>dominio del correo incluyendo la @</p>
                                    </div>
                                </div>
                                <div class="form-group">
                                    <div class="col-sm-4">
                                        <input type="text" name="nombre_empresa" id="nombre_empresa" class="form-control" size="25"  placeholder="Nombre de la institucion, ong,empresa..."  autofocus>
                                    <div class="col-sm-4">
                                      <p>Nombre de la ONG, Institición, universidad, empresa...</p>
                                  </div>
                                </div>
                             </div><br/>
                                                                         <!--  -->
                                 <div class="form-group">
<div class="letra_c_user_red">El servidor tiene la sigiente hora:  <?php

echo date("H:i:s");
?> </div><br/>
                                          <input name="zona_horaria" type="radio" id="zona_horaria_0" value="false" onClick="deshabilita_hora()" checked="CHECKED">
                                          La hora es correcta
                                      <label>
                                          <input name="zona_horaria" type="radio" id="zona_horaria_1" value="true" onClick="habilita_hora()">
                                          La hora NO es correcta
</div>
                                      <p>Si la hora del servidor no es la de su zona horaria, indiquelo para no tener desajustes cuando habilite una votación o realice ciertas operaciones </p>
                                <div class="form-group">
                                   	    <label for="elCorreo_insti" class="col-sm-4 control-label"> Escoja su zona horaria</label>

                          <div class="col-sm-4">
                                   	   <?php
$regions = array(
    'Europa' => DateTimeZone::EUROPE,
	'America' => DateTimeZone::AMERICA,
    'Africa' => DateTimeZone::AFRICA,
    'Antartica' => DateTimeZone::ANTARCTICA,
    'Asia' => DateTimeZone::ASIA,
    'Atlantica' => DateTimeZone::ATLANTIC,
    'Indian' => DateTimeZone::INDIAN,
    'Pacific' => DateTimeZone::PACIFIC
);
$timezones = array();
foreach ($regions as $name => $mask)
{
    $zones = DateTimeZone::listIdentifiers($mask);
    foreach($zones as $timezone)
    {
		// Lets sample the time there right now
		$time = new DateTime(NULL, new DateTimeZone($timezone));
		// Us dumb Americans can't handle millitary time
		$ampm = $time->format('H') > 12 ? ' ('. $time->format('g:i a'). ')' : '';
		// Remove region name and add a sample time
		$timezones[$name][$timezone] = substr($timezone, strlen($name) + 1) . ' - ' . $time->format('H:i') . $ampm;
	}
}
echo  '<select id="timezone" name="timezone" class="form-control"> ';
foreach($timezones as $region => $list)
{
	print '<optgroup label="' . $region . '">' . "\n";
	foreach($list as $timezone => $name)
	{
	if ($timezone=="Europe/Madrid"){
		$checked="selected";
	}else{
		$checked="";
	}
		echo '<option value="' . $timezone . '" '.$checked.'>' . $name . '</option>' . "\n";
	}
	echo '<optgroup>' . "\n";
}
echo '</select>';
?>
</div>
<div class="col-sm-4"></div>
                                </div>
                                <div class="form-group">
                                </div>
                             </div><br/>
                            <div class="form-group">
                                        $lista_locale="";
                                                    if ($archivo_locale != '.' && $archivo_locale != '..' && $archivo_locale != '.htaccess' && $archivo_locale != 'index.html' && $archivo_locale != 'index.php'&& $archivo_locale != 'messages.po'&& $archivo_locale != 'messages.pot') {
                                                         if ($archivo_locale == "es_ES") {
                                                        $lista_locale.="<option value=\"" . $archivo_locale . "\" $check_locale > " . $archivo_locale . "</option>";
                                                        $lista_locale.=$archivo_locale;



<select name="idioma" class="form-control"  id="idioma" >
<p>Idiomas incluidos en la carpeta LOCALE </p>
                                        $lista="";
                                                        $lista.="<option value=\"" . $archivo . "\" $check > " . $archivo . "</option>";
                                                        $lista.=$archivo;
								<div class="form-group">
<p>
                                        <label>
                                            <input name="smtp" type="radio" id="smtp_0" value="true" checked="CHECKED" onClick="habilita_smtp()">
                                            smtp <br>
                                        </label>
										<label>
                                            <input name="smtp" type="radio" id="smtp_2" value="false"  onClick="deshabilita_smtp()">
                                            phpmail</label>
										</p>
                                     Si usamos envíos smtp. <br/>
                                     Si queremos que el envío se realice con la función phpmail() usar indicar (desaconsejado) . Muy recomendado usar  <strong>SMTP.</strong>.
                                    </div>
                                 <div id="div_smtp"  class="caja_de_display" >
                                <div class="form-group">
                                    <label for="theme" class="col-sm-4 control-label">servidor de correo</label>
                                    <div class="col-sm-4">
                                        <input name="server_correo" type="text"  class="form-control" id="server_correo"  placeholder="smtp.MiServidor.net" size="25"  />
                                    </div>
                                    <div class="col-sm-4">
                                    </div>
                                <div class="form-group">
                                    <label for="user_correo" class="col-sm-4 control-label">Usuario  de correo</label>
                                    <div class="col-sm-4">
                                        <input name="user_correo" type="text"  class="form-control" id="user_correo"  placeholder="nombre usuario del correo" size="25" />
                                    </div>
                                    <div class="col-sm-4">
                                </div>
                                <div class="form-group">
                                    <label for="pass_correo" class="col-sm-4 control-label">Contraseña</label>
                                    <div class="col-sm-4">
                                        <input name="pass_correo" id="pass_correo" type="text" class="form-control" size="25" placeholder="contraseña del correo"  />
                                    </div>
                                    <div class="col-sm-4"> Contraseña de correo.
                                </div>
                                <div class="form-group">
                                    <label for="dbhost" class="col-sm-4 control-label">Puerto del servidor de correo</label>
                                    <div class="col-sm-4">
                                        <input name="puerto_correo" id="puerto_correo" class="form-control" type="text" size="25" value="25" required  autofocus />
                                    <div class="col-sm-4">
                                        Por defecto <strong>25</strong>.
                                    </div>
                                </div>
                                <div class="form-group">
                                    <label for="dbhost" class="col-sm-4 control-label">SMTPSecure</label>
                                    <div class="col-sm-4">
                                        <label>
                                            <input name="SMTPSecure" type="radio" id="SMTPSecure_0" value="false" checked="CHECKED">
                                            Deshabilitado</label>
										<label>
                                            <input name="SMTPSecure" type="radio" id="SMTPSecure_2" value="TLS" >
                                            TLS</label>
                                        <label>
                                            <input name="SMTPSecure" type="radio"  id="SMTPSecure_1" value="SSL" >
                                            SSL</label>
                                        <br>
                                    </div>
                                    <div class="col-sm-4">
                                        Por defecto <strong>Deshabilitado</strong>.
                                    </div>
                                <div class="form-group">
                                    <label for="dbhost" class="col-sm-4 control-label">Autentificación por SMTP (SMTPAuth)</label>
                                    <div class="col-sm-4">
                                        <label>
                                            <input name="SMTPAuth" type="radio" id="SMTPAuth_0" value="false">
                                            FALSE</label>
                                        <label>
                                            <input name="SMTPAuth" type="radio" id="SMTPAuth_1" value="true" checked="CHECKED">
                                            TRUE</label>
                                        <br>
                                    </div>
                                    <div class="col-sm-4">
                                         Por defecto <strong>True</strong>.
                                    </div>
                                <div class="form-group">
                                    <label for="dbhost" class="col-sm-4 control-label">Forma de envio de correo</label>
                                    <div class="col-sm-4">
                                        <label>
                                            <input name="tipo_envio" type="radio" id="tipo_envio_0" value="false" checked="CHECKED">
                                            IsSMTP</label>
                                        <label>
                                            <input type="radio" name="tipo_envio" value="true" id="tipo_envio_1">
                                            IsSendMail</label>
                                        <br>
                                    </div>
                                    <div class="col-sm-4">
                                        Algunos sevidores como 1&1 hay que usar IsSendMail. Por defecto <strong>IsSMTP</strong>.
                                </div>
                                                                <div class="form-group">
                                    <label for="dbhost" class="col-sm-4 control-label">Envio html o texto plano(IsHTML)</label>
                                    <div class="col-sm-4">
                                        <label>
                                            <input name="IsHTML" type="radio" id="IsHTML_0" value="false" checked="CHECKED">
                                            FALSE</label>
                                        <label>
                                            <input name="IsHTML" type="radio" id="IsHTML_1" value="true">
                                            TRUE</label>
                                        <br>
                                    <div class="col-sm-4">
                                         Por defecto <strong>False</strong>.
                                    </div>
                                    </div>
                                    </div>
                                </fieldset>
                                      Posteriormente mediante el panel de administración podra cambiar y configurar otras direcciones de correo.
               <div  class="pie_demokratia">
            $(document).ready(function() {
                $("#tercera_fase").hide();
                $("#cargando").hide();
            });

            $("#cargando").on("ajaxStart", function() {
                // this hace referencia a la div con la imagen.
                $(this).show();
            }).on("ajaxStop", function() {
                $(this).hide();
            });
			function habilita_smtp() {
				document.getElementById('div_smtp').style.display = 'block';
			 }
            function deshabilita_smtp() {
				document.getElementById('div_smtp').style.display = 'none';
			 }
          <script type='text/javascript'>
			function habilita_local() {
				document.getElementById('div_local').style.display = 'block';
			 }
				document.getElementById('div_local').style.display = 'none';
			 }
                  <script type='text/javascript'>
			function habilita_hora() {
				document.getElementById('div_hora').style.display = 'block';
			 }
				document.getElementById('div_hora').style.display = 'none';
			 }
            <div class="row" id="2_fase1">
                <div class="col-lg-12">
                    <div class="well">
                        <form  method="post" name="FormBBDD"  class="form-horizontal" id="FormBBDD" role="form" >
                            <h3 class="form-signin-heading">Tercer paso</h3>
                            <legend>Datos del administrador</legend>
                            <div id="success2"> </div>
                            <div class="form-group">
                                <label for="user" class="col-sm-4 control-label">Usuario  administrador</label>
                                <div class="col-sm-4">
                                    <input name="user" id="user" type="text" class="form-control" size="25"  placeholder="demokratian" required  autofocus /></td>
                                </div>
                                <div class="col-sm-4">Entre 5 y 20 caracteres. No se pueden dejar espacios en blanco ni usar acentos o la ñ </div>
                            </div>
                            <div class="form-group">
                                <label for="username" class="col-sm-4 control-label">Nombre y apellidos del administrador</label>
                                <div class="col-sm-4">
                                    <input name="username" id="username" type="text" class="form-control" size="25" placeholder="nombre_de_usuario" required  autofocus />
                                </div>
                                <div class="col-sm-4">
                            </div>

                            <div class="form-group">
                                <label for="pass" class="col-sm-4 control-label">Contraseña</label>
                                <div class="col-sm-4">
                                    <input name="pass" id="pass" type="text" class="form-control"  size="25" placeholder="contraseña"  autofocus />
                                </div>
                                <div class="col-sm-4">
                                </div>
                            </div>

                            <div class="form-group">
                                <label for="pass2" class="col-sm-4 control-label">Contraseña</label>
                                <div class="col-sm-4">
                                    <input name="pass2" id="pass2" type="text" class="form-control"  size="25" placeholder="contraseña"  autofocus />
                                </div>
                                <div class="col-sm-4">  Vuelva a escribir su contraseña
                                </div>
                            </div>
                            <div class="form-group">
                                <label for="email" class="col-sm-4 control-label">Correo electronico</label>
                                <div class="col-sm-4">
                                    <input type="email" class="form-control" placeholder="Su correo electronico" id="email"  name="email" size="25" required  data-validation-required-message="Por favor, ponga su correo electronico" />
                                <div class="col-sm-4"></div>
                            </div>
                            <div class="form-group">
                                <label for="nif" class="col-sm-4 control-label">NIF</label>
                                <div class="col-sm-4">
                                    <input name="nif" id="nif" type="text" class="form-control"  size="25" placeholder="Su nif"  autofocus />
                                </div>
                                <div class="col-sm-4">
                                </div>
                            </div>
                            <?php
                            require_once("../config/config.inc.php");
                            if ($es_municipal == false) {
                                ?>
                                    <label for="dbhost" class="col-sm-4 control-label">Provincia en la participa el administrador</label>
                                        <?php
                                        $tbn8 = $extension . "provincia";
                                        $lista = "";
                                        $con = @mysqli_connect("$host", "$hostu", "$hostp") or die("no se puede conectar");
                                        mysqli_set_charset($con, "utf8");
                                        $db = @mysqli_select_db($con, "$dbn") or die("no se puede acceder a la tabla");
// listar para meter en una lista del tipo enlace
                                        $activo = 0;


                                        $options = "select DISTINCT id, provincia, id_ccaa from $tbn8  order by ID";
                                        $resulta = mysqli_query($con, $options) or die("error: " . mysql_error($con));

                                        while ($listrows = mysqli_fetch_array($resulta)) {
                                            $id_pro = $listrows['id'];
                                            $name1 = $listrows['provincia'];
                                            $id_ccaa = $listrows['id_ccaa'];

                                            $lista .="<option value=\"" . $id_pro . "#" . $id_ccaa . "\" > $name1</option>";
                                        }
                                        ?>

                                        <div class="form-group">
                                            <select name="provincia" class="form-control"  id="provincia" >
                                             <option value="Escoja_una#error " > Seleccione una provincia</option>";
    <?php echo "$lista"; ?>
                                            </select>



                                        </div>

                                <div id="municipio">  </div>

    <?php
} else {
    ?>
                                <input name="provincia" id="provincia" type="hidden" value="001#016">
                                <input name="id_municipio" id="id_municipio"  type="hidden" value="1">
                                <?php
                            }
                            ?>

                            <fieldset>
                                <legend>Configuración de la autenticación</legend>

                                    <label for="autenticacion_solo_local" class="col-sm-4 control-label">Autenticación</label>
                                        <label>
                                            <input type="radio" name="autenticacion_solo_local" value="true" onClick="deshabilita_local()" checked="CHECKED">
                                            Local</label>
                                        <label>
                                            <input type="radio" name="autenticacion_solo_local" value="false" onClick="habilita_local()">
                                            Federada</label>
                                        <br>
                                        Elige federada si quieres que los usuarios se autentiquen en otra plataforma (por ejemplo joomla/drupal como IdP, o cualquier otro compatible con SAML2). El usuario
                                        de administración siempre usará la autenticación local, independientemente de esta opción. Por defecto <strong>Local</strong>.
                                <div id="div_local"  class="caja_de_display" style="display:none" >
                                        <label for="dir_simplesaml" class="col-sm-4 control-label">Directorio de instalación de simplesamlphp</label>
                                        <div class="col-sm-4">
                                            <input name="dir_simplesaml" type="text"  class="form-control" id="dir_simplesaml"  placeholder="/var/www/html/simplesamlphp" size="25"  autofocus />
                                        </div><div id="municipio">  </div>
                                            SimpleSamlPhp en modo SP. Si eliges autenticación federada sigue <a href="https://bitbucket.org/csalgadow/demokratian_2.3.x/wiki/Demokratian%20como%20Service%20Provider" target="_otra">esta guía</a> y completa al menos el paso 1 antes de continuar.
                                        </div>
                                    </div>
                                    <div class="form-group">
                                        <label for="crear_usuarios_automaticamente" class="col-sm-4 control-label">Crear usuarios al autenticarse</label>
                                        <div class="col-sm-4">
                                            <label>
                                                <input type="radio" name="crear_usuarios_automaticamente" value="false">
                                                No</label>
                                            <label>
                                                <input type="radio" name="crear_usuarios_automaticamente" value="true"  checked="CHECKED">
                                                Si</label>
                                            <br>
                                            Crear usuarios automáticamente después de autenticarse (sólo votantes, para los campos "usuario" y "correo_usuario"). Por defecto <strong>Si</strong>.
                                        <label for="tipo_usuario" class="col-sm-4 control-label">Tipo de usuario por defecto</label>
                                                <input type="radio" name="tipo_usuario" value="1" checked="CHECKED">
                                                Socio</label>
                                            <br>
                                                <input type="radio" name="tipo_usuario" value="2" >
                                                simpatizantes verificado</label>
                                            <br>

                                            <label>
                                                <input type="radio" name="tipo_usuario" value="3" >
                                                simpatizantes</label>
                                            Tipo de usuario cuando se crea automáticamente. Por defecto <strong>Socio</strong>.
                                </div>
                            </fieldset>
                            <div class="form-group">
                                <div class="col-sm-offset-4 col-sm-6">
                                    <button class="btn btn-ttc btn-lg btn-primary btn-block" type="submit">Configurar Administrador</button>
                            </div>
                        </form>
            </div>

Fixed code:
            $ID=000001; //identificador para que solo se pueda crear el 1
            $insql = "insert into $tbn9 (ID,pass,id_provincia,usuario,correo_usuario,tipo_votante,nivel_acceso,nivel_usuario,nombre_usuario,id_ccaa,nif,id_municipio) values (  \"$ID\", \"$passw\",  \"$provincia\", \"$nombre_usuario_new\", \"$email\", \"$tipo_votante\", \"$nivel_acceso\", \"$nivel_usuario\", \"$username\",\"$id_ccaa\",\"$nif\", \" $id_municipio\")";
                //$errores = "Error al incluir datos: " . mysqli_error($con);
                $errores = "Error al incluir datos: "; //quitamos la razon del error para incluir los datos por seguridad. Pasar cuando se pueda a qgenerar log de errores
                
<?php
                     $file = "../config/config.inc.php"; 
                    if (file_exists($file)) {
                        ?>
            
            <div class="row" id="2_fase1">
                <div class="col-lg-12">
                    <div class="well">
                 <div class="alert alert-danger">  Ya existe un archivo de configuración!!, no se puede continuar con el proceso, proceda manualmente o eliminelo</div>
                     </div>
                </div>
            </div> 
                      <?php
                        
                        }else{
                        
                    
                ?>
            
            <?php
                    }
            ?>
            
                                <div class="form-group">
                                        <p>
                                            <label>
                                                <input name="tipo_circuns" type="radio" id="tipo_circuns_0" value="false" checked="CHECKED">
                                                4 , por defecto   </label></p>
                                        <p>
                                            <label>
                                                <input name="tipo_circuns" type="radio" id="tipo_circuns_1" value="true">
                                                Solo una</label>
                                        </p>
                                        <p>Por defecto crea circunscripciones estatal, autonómica, provincial  y municipal</p>
                                <div class="form-group">
                                        <p>
                                            <label>
                                                <input name="correo_insti" type="radio" id="correo_insti_0" value="false" onClick="deshabilita_local()" checked="CHECKED">
                                                NO
                                            </label>
                                            <label>
                                                <input name="correo_insti" type="radio" id="correo_insti_1" value="true" onClick="habilita_local()">
                                                SI
                                            </label>
                                            (Si usa esta opción debe marcar circunscripcion unica)</p>
                                        <p>Permite votar usando correos institucionales de una empresa, ong, universidad, etc sin necesidad de registro previo por el administrador (solo podran votar los que tengan un correo de ese tipo). </p>
                                <div id="div_local"  class="caja_de_display" style="display:none" >
                                    <div class="form-group">
                                        <label for="elCorreo_insti" class="col-sm-4 control-label"> </label>
                                        <div class="col-sm-4">
                                            <input type="text" name="elCorreo_insti" id="elCorreo_insti" class="form-control" size="25"  placeholder="@midominio.es"  autofocus>
                                        </div>
                                        <div class="col-sm-4">
                                            <p>dominio del correo incluyendo la @</p>
                                        </div>
                                    <div class="form-group">
                                        <div class="col-sm-4">
                                            <input type="text" name="nombre_empresa" id="nombre_empresa" class="form-control" size="25"  placeholder="Nombre de la institucion, ong,empresa..."  autofocus>
                                        </div>
                                        <div class="col-sm-4">
                                            <p>Nombre de la ONG, Institición, universidad, empresa...</p>
                                        </div>
                                </div><br/>
                                <!--  -->
                                <div class="form-group">
                                        <div class="letra_c_user_red">El servidor tiene la sigiente hora:  <?php
                                            echo date("H:i:s");
                                            ?> </div><br/>
                                            <input name="zona_horaria" type="radio" id="zona_horaria_0" value="false" onClick="deshabilita_hora()" checked="CHECKED">
                                            La hora es correcta
                                        <label>
                                            <input name="zona_horaria" type="radio" id="zona_horaria_1" value="true" onClick="habilita_hora()">
                                            La hora NO es correcta
                                    </div>
                                        <p>Si la hora del servidor no es la de su zona horaria, indiquelo para no tener desajustes cuando habilite una votación o realice ciertas operaciones </p>
                                    <div class="form-group">
                                        <label for="elCorreo_insti" class="col-sm-4 control-label"> Escoja su zona horaria</label>

                                        <div class="col-sm-4">
                                            <?php
                                            $regions = array(
                                                'Europa' => DateTimeZone::EUROPE,
                                                'America' => DateTimeZone::AMERICA,
                                                'Africa' => DateTimeZone::AFRICA,
                                                'Antartica' => DateTimeZone::ANTARCTICA,
                                                'Asia' => DateTimeZone::ASIA,
                                                'Atlantica' => DateTimeZone::ATLANTIC,
                                                'Indian' => DateTimeZone::INDIAN,
                                                'Pacific' => DateTimeZone::PACIFIC
                                            );
                                            $timezones = array();
                                            foreach ($regions as $name => $mask) {
                                                $zones = DateTimeZone::listIdentifiers($mask);
                                                foreach ($zones as $timezone) {
                                                    // Lets sample the time there right now
                                                    $time = new DateTime(NULL, new DateTimeZone($timezone));
                                                    // Us dumb Americans can't handle millitary time
                                                    $ampm = $time->format('H') > 12 ? ' (' . $time->format('g:i a') . ')' : '';
                                                    // Remove region name and add a sample time
                                                    $timezones[$name][$timezone] = substr($timezone, strlen($name) + 1) . ' - ' . $time->format('H:i') . $ampm;
                                                }
                                            }
                                            echo '<select id="timezone" name="timezone" class="form-control"> ';
                                            foreach ($timezones as $region => $list) {
                                                print '<optgroup label="' . $region . '">' . "\n";
                                                foreach ($list as $timezone => $name) {
                                                    if ($timezone == "Europe/Madrid") {
                                                        $checked = "selected";
                                                    } else {
                                                        $checked = "";
                                                    }
                                                    echo '<option value="' . $timezone . '" ' . $checked . '>' . $name . '</option>' . "\n";
                                                }
                                                echo '<optgroup>' . "\n";
                                            }
                                            echo '</select>';
                                            ?>
                                        </div>
                                        <div class="col-sm-4"></div>
                                    </div>
                                    <div class="form-group">
                                    </div>
                                </div><br/>
                                <div class="form-group">
                                        $lista_locale = "";
                                                    if ($archivo_locale != '.' && $archivo_locale != '..' && $archivo_locale != '.htaccess' && $archivo_locale != 'index.html' && $archivo_locale != 'index.php' && $archivo_locale != 'messages.po' && $archivo_locale != 'messages.pot') {
                                                        if ($archivo_locale == "es_ES") {
                                                        $lista_locale .= "<option value=\"" . $archivo_locale . "\" $check_locale > " . $archivo_locale . "</option>";
                                                        $lista_locale .= $archivo_locale;
                                        <select name="idioma" class="form-control"  id="idioma" >
                                        <p>Idiomas incluidos en la carpeta LOCALE </p>
                                        $lista = "";
                                                        $lista .= "<option value=\"" . $archivo . "\" $check > " . $archivo . "</option>";
                                                        $lista .= $archivo;
                                <div class="form-group">
                                        <p>
                                            <label>
                                                <input name="smtp" type="radio" id="smtp_0" value="true" checked="CHECKED" onClick="habilita_smtp()">
                                                smtp <br>
                                            </label>
                                            <label>
                                                <input name="smtp" type="radio" id="smtp_2" value="false"  onClick="deshabilita_smtp()">
                                                phpmail</label>
                                        </p>
                                        Si usamos envíos smtp. <br/>
                                        Si queremos que el envío se realice con la función phpmail() usar indicar (desaconsejado) . Muy recomendado usar  <strong>SMTP.</strong>.
                                </div>
                                <div id="div_smtp"  class="caja_de_display" >
                                    <div class="form-group">
                                        <label for="theme" class="col-sm-4 control-label">servidor de correo</label>
                                        <div class="col-sm-4">
                                            <input name="server_correo" type="text"  class="form-control" id="server_correo"  placeholder="smtp.MiServidor.net" size="25"  />
                                        </div>
                                        <div class="col-sm-4">
                                        </div>
                                    <div class="form-group">
                                        <label for="user_correo" class="col-sm-4 control-label">Usuario  de correo</label>
                                        <div class="col-sm-4">
                                            <input name="user_correo" type="text"  class="form-control" id="user_correo"  placeholder="nombre usuario del correo" size="25" />
                                        </div>
                                        <div class="col-sm-4">
                                        </div>
                                    <div class="form-group">
                                        <label for="pass_correo" class="col-sm-4 control-label">Contraseña</label>
                                        <div class="col-sm-4">
                                            <input name="pass_correo" id="pass_correo" type="text" class="form-control" size="25" placeholder="contraseña del correo"  />
                                        </div>
                                        <div class="col-sm-4"> Contraseña de correo.
                                        </div>
                                    <div class="form-group">
                                        <label for="dbhost" class="col-sm-4 control-label">Puerto del servidor de correo</label>
                                        <div class="col-sm-4">
                                            <input name="puerto_correo" id="puerto_correo" class="form-control" type="text" size="25" value="25" required  autofocus />
                                        </div>
                                        <div class="col-sm-4">
                                            Por defecto <strong>25</strong>.
                                        </div>
                                    <div class="form-group">
                                        <label for="dbhost" class="col-sm-4 control-label">SMTPSecure</label>
                                        <div class="col-sm-4">
                                            <label>
                                                <input name="SMTPSecure" type="radio" id="SMTPSecure_0" value="false" checked="CHECKED">
                                                Deshabilitado</label>
                                            <label>
                                                <input name="SMTPSecure" type="radio" id="SMTPSecure_2" value="TLS" >
                                                TLS</label>
                                            <label>
                                                <input name="SMTPSecure" type="radio"  id="SMTPSecure_1" value="SSL" >
                                                SSL</label>
                                            <br>
                                        </div>
                                        <div class="col-sm-4">
                                            Por defecto <strong>Deshabilitado</strong>.
                                        </div>
                                    <div class="form-group">
                                        <label for="dbhost" class="col-sm-4 control-label">Autentificación por SMTP (SMTPAuth)</label>
                                        <div class="col-sm-4">
                                            <label>
                                                <input name="SMTPAuth" type="radio" id="SMTPAuth_0" value="false">
                                                FALSE</label>
                                            <label>
                                                <input name="SMTPAuth" type="radio" id="SMTPAuth_1" value="true" checked="CHECKED">
                                                TRUE</label>
                                            <br>
                                        </div>
                                        <div class="col-sm-4">
                                            Por defecto <strong>True</strong>.
                                        </div>
                                    <div class="form-group">
                                        <label for="dbhost" class="col-sm-4 control-label">Forma de envio de correo</label>
                                        <div class="col-sm-4">
                                            <label>
                                                <input name="tipo_envio" type="radio" id="tipo_envio_0" value="false" checked="CHECKED">
                                                IsSMTP</label>
                                            <label>
                                                <input type="radio" name="tipo_envio" value="true" id="tipo_envio_1">
                                                IsSendMail</label>
                                            <br>
                                        </div>
                                        <div class="col-sm-4">
                                            Algunos sevidores como 1&1 hay que usar IsSendMail. Por defecto <strong>IsSMTP</strong>.
                                        </div>
                                    <div class="form-group">
                                        <label for="dbhost" class="col-sm-4 control-label">Envio html o texto plano(IsHTML)</label>
                                        <div class="col-sm-4">
                                            <label>
                                                <input name="IsHTML" type="radio" id="IsHTML_0" value="false" checked="CHECKED">
                                                FALSE</label>
                                            <label>
                                                <input name="IsHTML" type="radio" id="IsHTML_1" value="true">
                                                TRUE</label>
                                            <br>
                                        </div>
                                        <div class="col-sm-4">
                                            Por defecto <strong>False</strong>.
                                        </div>
                                </div>
                            </fieldset>
                                        Posteriormente mediante el panel de administración podra cambiar y configurar otras direcciones de correo.
                <div  class="pie_demokratia">
                                                    $(document).ready(function () {
                                                        $("#tercera_fase").hide();
                                                        $("#cargando").hide();
                                                    });

                                                    $("#cargando").on("ajaxStart", function () {
                                                        // this hace referencia a la div con la imagen.
                                                        $(this).show();
                                                    }).on("ajaxStop", function () {
                                                        $(this).hide();
                                                    });
                                                    function habilita_smtp() {
                                                        document.getElementById('div_smtp').style.display = 'block';
                                                    }
                                                    function deshabilita_smtp() {
                                                        document.getElementById('div_smtp').style.display = 'none';
                                                    }
        <script type='text/javascript'>
            function habilita_local() {
                document.getElementById('div_local').style.display = 'block';
            }
                document.getElementById('div_local').style.display = 'none';
            }
        <script type='text/javascript'>
            function habilita_hora() {
                document.getElementById('div_hora').style.display = 'block';
            }
                document.getElementById('div_hora').style.display = 'none';
            }
require_once("../config/config.inc.php");
require_once("../inc_web/conexion.php");
            <?php
            $sql = "SELECT ID FROM $tbn9";
            $result = mysqli_query($con, $sql);
            if ($row = mysqli_fetch_array($result)) {
                ?>   
                <div class="row" id="2_fase1">
                    <div class="col-lg-12">
                        <div class="well">
                            <div class="alert alert-danger"> Upss!!!! hay algún error, ya existe un usuario y no se pueden crear más. Recuerde que si ya ha realizado la instalación tendría que haber borrado la carpeta install</div>
                        </div>
                    </div>
                </div>
                <?php
            } else {
                ?>
                <div class="row" id="2_fase1">
                    <div class="col-lg-12">
                        <div class="well">
                            <form  method="post" name="FormBBDD"  class="form-horizontal" id="FormBBDD" role="form" >
                                <h3 class="form-signin-heading">Tercer paso</h3>
                                <legend>Datos del administrador</legend>
                                <div id="success2"> </div>
                                <div class="form-group">
                                    <label for="user" class="col-sm-4 control-label">Usuario  administrador</label>
                                    <div class="col-sm-4">
                                        <input name="user" id="user" type="text" class="form-control" size="25"  placeholder="demokratian" required  autofocus /></td>
                                    </div>
                                    <div class="col-sm-4">Entre 5 y 20 caracteres. No se pueden dejar espacios en blanco ni usar acentos o la ñ </div>
                                <div class="form-group">
                                    <label for="username" class="col-sm-4 control-label">Nombre y apellidos del administrador</label>
                                    <div class="col-sm-4">
                                        <input name="username" id="username" type="text" class="form-control" size="25" placeholder="nombre_de_usuario" required  autofocus />
                                    </div>
                                    <div class="col-sm-4">
                                    </div>
                                    <label for="pass" class="col-sm-4 control-label">Contraseña</label>
                                        <input name="pass" id="pass" type="text" class="form-control"  size="25" placeholder="contraseña"  autofocus />
                                    <label for="pass2" class="col-sm-4 control-label">Contraseña</label>
                                        <input name="pass2" id="pass2" type="text" class="form-control"  size="25" placeholder="contraseña"  autofocus />
                                    </div>
                                    <div class="col-sm-4">  Vuelva a escribir su contraseña
                                    </div>
                                </div>
                                <div class="form-group">
                                    <label for="email" class="col-sm-4 control-label">Correo electronico</label>
                                    <div class="col-sm-4">
                                        <input type="email" class="form-control" placeholder="Su correo electronico" id="email"  name="email" size="25" required  data-validation-required-message="Por favor, ponga su correo electronico" />
                                    </div>
                                    <div class="col-sm-4"></div>
                                </div>
                                <div class="form-group">
                                    <label for="nif" class="col-sm-4 control-label">NIF</label>
                                    <div class="col-sm-4">
                                        <input name="nif" id="nif" type="text" class="form-control"  size="25" placeholder="Su nif"  autofocus />
                                <?php
                                require_once("../config/config.inc.php");
                                if ($es_municipal == false) {
                                    ?>
                                        <label for="dbhost" class="col-sm-4 control-label">Provincia en la participa el administrador</label>
                                            <?php
                                            $tbn8 = $extension . "provincia";
                                            $lista = "";
                                            $con = @mysqli_connect("$host", "$hostu", "$hostp") or die("no se puede conectar");
                                            mysqli_set_charset($con, "utf8");
                                            $db = @mysqli_select_db($con, "$dbn") or die("no se puede acceder a la tabla");
                                            // listar para meter en una lista del tipo enlace
                                            $activo = 0;
                                            $options = "select DISTINCT id, provincia, id_ccaa from $tbn8  order by ID";
                                            $resulta = mysqli_query($con, $options) or die("error: " . mysql_error($con));

                                            while ($listrows = mysqli_fetch_array($resulta)) {
                                                $id_pro = $listrows['id'];
                                                $name1 = $listrows['provincia'];
                                                $id_ccaa = $listrows['id_ccaa'];

                                                $lista .= "<option value=\"" . $id_pro . "#" . $id_ccaa . "\" > $name1</option>";
                                            }
                                            ?>

                                            <div class="form-group">
                                                <select name="provincia" class="form-control"  id="provincia" >
                                                    <option value="Escoja_una#error " > Seleccione una provincia</option>";
                                                    <?php echo "$lista"; ?>
                                                </select>
                                            </div>

                                    <div id="municipio">  </div>

                                    <?php
                                } else {
                                    ?>
                                    <input name="provincia" id="provincia" type="hidden" value="001#016">
                                    <input name="id_municipio" id="id_municipio"  type="hidden" value="1">
                                    <?php
                                }
                                ?>

                                <fieldset>
                                    <legend>Configuración de la autenticación</legend>

                                        <label for="autenticacion_solo_local" class="col-sm-4 control-label">Autenticación</label>
                                                <input type="radio" name="autenticacion_solo_local" value="true" onClick="deshabilita_local()" checked="CHECKED">
                                                Local</label>
                                                <input type="radio" name="autenticacion_solo_local" value="false" onClick="habilita_local()">
                                                Federada</label>
                                            Elige federada si quieres que los usuarios se autentiquen en otra plataforma (por ejemplo joomla/drupal como IdP, o cualquier otro compatible con SAML2). El usuario
                                            de administración siempre usará la autenticación local, independientemente de esta opción. Por defecto <strong>Local</strong>.
                                    <div id="div_local"  class="caja_de_display" style="display:none" >
                                        <div class="form-group">
                                            <label for="dir_simplesaml" class="col-sm-4 control-label">Directorio de instalación de simplesamlphp</label>
                                            <div class="col-sm-4">
                                                <input name="dir_simplesaml" type="text"  class="form-control" id="dir_simplesaml"  placeholder="/var/www/html/simplesamlphp" size="25"  autofocus />
                                            </div><div id="municipio">  </div>
                                            <div class="col-sm-4">
                                                SimpleSamlPhp en modo SP. Si eliges autenticación federada sigue <a href="https://bitbucket.org/csalgadow/demokratian_2.3.x/wiki/Demokratian%20como%20Service%20Provider" target="_otra">esta guía</a> y completa al menos el paso 1 antes de continuar.
                                            </div>
                                        </div>


                                        <div class="form-group">
                                            <label for="crear_usuarios_automaticamente" class="col-sm-4 control-label">Crear usuarios al autenticarse</label>
                                            <div class="col-sm-4">

                                                <label>
                                                    <input type="radio" name="crear_usuarios_automaticamente" value="false">
                                                    No</label>

                                                <label>
                                                    <input type="radio" name="crear_usuarios_automaticamente" value="true"  checked="CHECKED">
                                                    Si</label>
                                                <br>

                                            </div>
                                            <div class="col-sm-4">
                                                Crear usuarios automáticamente después de autenticarse (sólo votantes, para los campos "usuario" y "correo_usuario"). Por defecto <strong>Si</strong>.
                                            </div>
                                        </div>

                                        <div class="form-group">
                                            <label for="tipo_usuario" class="col-sm-4 control-label">Tipo de usuario por defecto</label>
                                            <div class="col-sm-4">

                                                <label>
                                                    <input type="radio" name="tipo_usuario" value="1" checked="CHECKED">
                                                    Socio</label>
                                                <br>

                                                <label>
                                                    <input type="radio" name="tipo_usuario" value="2" >
                                                    simpatizantes verificado</label>
                                                <br>

                                                <label>
                                                    <input type="radio" name="tipo_usuario" value="3" >
                                                    simpatizantes</label>
                                                <br>

                                            </div>
                                            <div class="col-sm-4">
                                                Tipo de usuario cuando se crea automáticamente. Por defecto <strong>Socio</strong>.
                                            </div>
                                        </div>
                                    </div>
                                </fieldset>
                                <div class="form-group">
                                    <div class="col-sm-offset-4 col-sm-6">
                                        <button class="btn btn-ttc btn-lg btn-primary btn-block" type="submit">Configurar Administrador</button>
                                    </div>
                            </form>

                        </div>
                <?php
            }
            ?>