source: admin/WebConsole/images/M_Iconos.php @ a5de7cc

configure-oglivelgromero-new-oglivemainmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineoglive-ipv6test-python-scriptsticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacion
Last change on this file since a5de7cc was 68bc27c, checked in by Irina Gómez <irinagomez@…>, 10 months ago

ref #400 Improved vulnerability resolution:
CVE-2024-3707: SQL injection is controlled in all database queries.
CVE-2024-3706: The type of image file, its size and alphanumeric name are controlled, using the temporary file uploaded to the server instead of the values that come in the headers.

  • Property mode set to 100644
File size: 14.7 KB
Line 
1<?php
2// ********************************************************************************************************************
3// Aplicación WEB: ogAdmWebCon
4// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
5// Fecha Creación: Agosto-2010
6// Fecha Última modificación: Agosto-2010
7// Nombre del fichero: M_Iconos.php
8// Descripción :Este fichero implementa  el mantenimiento de la tabla Iconos
9// ********************************************************************************************************************
10include_once("../includes/ctrlacc.php");
11include_once("../clases/AdoPhp.php");
12include_once("../includes/CreaComando.php");
13include_once("../includes/TomaDato.php");
14include_once("../includes/HTMLCTESELECT.php");
15include_once("../includes/FicherosPost.php");
16include_once("../idiomas/php/".$idioma."/iconos_".$idioma.".php");
17
18//-------------------------------------------------------------------------------------------------------------------------------------------------
19// Captura de parámetros
20//-------------------------------------------------------------------------------------------------------------------------------------------------
21$opcion="";
22$accion="";
23$idicono=0;
24
25if (isset($_POST["opcion"])) $opcion=$_POST["opcion"];
26if (isset($_POST["accion"])) $accion=$_POST["accion"];
27if (isset($_POST["idicono"])) $idicono=$_POST["idicono"];
28
29if (isset($_GET["opcion"])) $opcion=$_GET["opcion"];
30if (isset($_GET["accion"])) $accion=$_GET["accion"];
31if (isset($_GET["idicono"])) $idicono=$_GET["idicono"];
32//-------------------------------------------------------------------------------------------------------------------------------------------------
33// Constantes
34//-------------------------------------------------------------------------------------------------------------------------------------------------
35// $opciones
36$INSERTAR=1;
37$ELIMINAR=2;
38$MODIFICAR=3;
39$CONSULTAR=4;
40
41// Acciones
42$SIN_ACCION=0;
43$INSERTAR_REGISTRO=1;
44$BORRAR_REGISTRO=2;
45$MODIFICAR_REGISTRO=3;
46$LEER_REGISTRO=4;
47
48$mopciones[1]="INSERTAR";
49$mopciones[2]="ELIMINAR";
50$mopciones[3]="MODIFICAR";
51$mopciones[4]="CONSULTAR";
52
53// Tipos de imagenes permitidos
54$TIPO_IMG= Array ("image/jpeg" , "image/gif" , "image/png");
55//-------------------------------------------------------------------------------------------------------------------------------------------------
56// Datos por defecto
57//-------------------------------------------------------------------------------------------------------------------------------------------------
58if(empty($opcion)) $opcion=$INSERTAR;
59if(empty($accion)) $accion=$SIN_ACCION;
60if(empty($idicono)) $idicono=0;
61$msg="";
62//-------------------------------------------------------------------------------------------------------------------------------------------------
63// Conexion a la base de datos
64//-------------------------------------------------------------------------------------------------------------------------------------------------
65$cmd=CreaComando($cadenaconexion);
66if (!$cmd) // Fallo conexión con servidor de datos
67        Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
68//-------------------------------------------------------------------------------------------------------------------------------------------------
69// Acción a ejecutar
70//-------------------------------------------------------------------------------------------------------------------------------------------------
71if($accion==$INSERTAR_REGISTRO || $accion==$MODIFICAR_REGISTRO){
72        $cmd->CreaParametro("@idicono",$idicono,1);
73        IncializaCampos();
74        if (isset($_POST["swbf_urlicono"])) $swbf_urlicono=$_POST["swbf_urlicono"];
75        if (isset($_POST["urlicono"])) $urlicono=$_POST["urlicono"];
76        if (isset($_POST["idtipoicono"])) $idtipoicono=$_POST["idtipoicono"];
77        if (isset($_POST["descripcion"])) $descripcion=$_POST["descripcion"];
78        $cmd->CreaParametro("@urlicono",$urlicono,0);
79        $cmd->CreaParametro("@idtipoicono",$idtipoicono,1);
80        $cmd->CreaParametro("@descripcion",$descripcion,0);
81
82        $UrlPagina=$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; // Url página
83        // Se recibe fichero adjunto
84        $NombreFichero_urlicono = $_FILES['urlicono']['name'];
85        if(!empty($NombreFichero_urlicono)){
86                $NombreFicheroPost_urlicono = $_FILES['urlicono']['tmp_name'];
87                if (! preg_match("/^[\w-]{2,200}\.[\w]{1,5}$/", $NombreFichero_urlicono )) {
88                        $msg=$TbMsg["MSG_NAME_FILE"];
89                }
90
91                $tamano_archivo = filesize($NombreFicheroPost_urlicono );
92                if($tamano_archivo>100000){
93                        $msg= $msg. " ". $TbMsg["MSG_SIZE_FILE"];
94                }
95
96
97                $tipo_archivo = mime_content_type($NombreFicheroPost_urlicono);
98                if ( ! in_array ($tipo_archivo , $TIPO_IMG)) {
99                        $msg= $msg." ".$TbMsg["MSG_TYPE_FILE"];
100                }
101
102                if ($msg != '') {
103                        IncializaCampos();
104                        $opcion=$INSERTAR;
105                        $accion=$SIN_ACCION;
106                } else {
107                        if(!SalvaFichero_POST($UrlPagina,$NombreFicheroPost_urlicono,$NombreFichero_urlicono,$UrlFichero_urlicono))
108                                Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
109                        else{
110                                $msg=$TbMsg["SUCCESS_SEND"];
111                                $cmd->ParamSetValor("@urlicono",basename($UrlFichero_urlicono));
112                        }
113                }
114        }
115        switch($accion){
116                case $INSERTAR_REGISTRO :
117                        $cmd->texto="INSERT INTO iconos (urlicono,idtipoicono,descripcion ) VALUES (@urlicono,@idtipoicono,@descripcion);";
118                        $resul=$cmd->Ejecutar();
119                        if (!$resul)
120                                Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
121                        break;
122                case $MODIFICAR_REGISTRO:
123                        if(!empty($NombreFichero_urlicono) || !empty($swbf_urlicono)){
124                                $filebaja_urlicono="";
125                                if (isset($_POST["filebaja_urlicono"])) $filebaja_urlicono=$_POST["filebaja_urlicono"];
126                                $UrlPagina=$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; // Url página
127                                if(!empty($filebaja_urlicono)){
128                                        if(!EliminaFichero($UrlPagina,$filebaja_urlicono))
129                                                Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
130                                        else
131                                                $msg=$TbMsg["SUCCESS_UPDATE"];
132                                }
133                        }
134                        else{
135                                if (isset($_POST["fileexist_urlicono"])) $urlicono=$_POST["fileexist_urlicono"];
136                                $cmd->ParamSetValor("@urlicono",basename($urlicono));
137                        }
138                        $cmd->texto="UPDATE iconos SET urlicono=@urlicono,idtipoicono=@idtipoicono,descripcion=@descripcion  WHERE idicono=@idicono";
139                        $resul=$cmd->Ejecutar();
140                        if (!$resul)
141                                Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
142                        break;
143        }
144        IncializaCampos();
145        $opcion=$INSERTAR;
146        $accion=$SIN_ACCION;
147}else{
148        if($accion==$BORRAR_REGISTRO){
149                $cmd->texto="DELETE FROM iconos WHERE idicono=".$idicono;
150                $resul=$cmd->Ejecutar();
151                if (!$resul)
152                        Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
153                $filebaja_urlicono="";
154                if (isset($_POST["filebaja_urlicono"])) $filebaja_urlicono=$_POST["filebaja_urlicono"];
155                $UrlPagina=$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; // Url página
156                if(!empty($filebaja_urlicono)){
157                        if(!EliminaFichero($UrlPagina,$filebaja_urlicono))
158                                Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
159                        else
160                                $msg=$TbMsg["SUCCESS_DELETE"];
161                }
162                IncializaCampos();
163                $opcion=$INSERTAR;
164                $accion=$SIN_ACCION;
165        }
166        else{
167                if($accion==$LEER_REGISTRO){
168                        $rs=new Recordset;
169                        $cmd->texto="SELECT * FROM iconos WHERE idicono=".$idicono;
170                        $rs->Comando=&$cmd;
171                        if (!$rs->Abrir())
172                                Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
173                        if ($rs->EOF)
174                                Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D.
175                        $urlicono=$rs->campos["urlicono"];
176                        $idtipoicono=$rs->campos["idtipoicono"];
177                        $descripcion=$rs->campos["descripcion"];
178                }
179                else{ // Sin accion
180                        IncializaCampos();
181                        $opcion=$INSERTAR;
182                        $accion=$SIN_ACCION;
183                }
184        }
185}
186?>
187<!--------------------------------------------------------------------------------------------------------------------------------------------------->
188<!-- Página HTML del Mantenimiento de la tabla
189<!--------------------------------------------------------------------------------------------------------------------------------------------------->
190  <HTML>
191  <HEAD>
192        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
193  <LINK rel="stylesheet" type="text/css" href="../estilos.css">
194  <SCRIPT language="javascript" src="M_Iconos.js"></SCRIPT>
195<?php echo '   <SCRIPT language="javascript" src="../idiomas/javascripts/'.$idioma.'/iconos_'.$idioma.'.js"></SCRIPT>'?>
196  </HEAD>
197  <BODY>
198<!--------------------------------------------------------------------------------------------------------------------------------------------------->
199  <FORM name="fdatos" action="M_Iconos.php"  enctype="multipart/form-data" method="post">
200        <input name="opcion" type="hidden" value="<?php echo $opcion?>">
201        <input name="accion" type="hidden" value="<?php echo $accion?>">
202        <input name="idicono" type="hidden" value="<?php echo $idicono?>">
203        <input name="filebaja_urlicono" type="hidden" value="<?php echo basename($urlicono)?>">
204        <input name="fileexist_urlicono" type="hidden" value="<?php echo $urlicono?>">
205<!--------------------------------------------------------------------------------------------------------------------------------------------------->
206     <DIV align=center id="Layer_Datos">
207                <P class=cabeceras><?php echo $TbMsg["TITLE"] ; ?><BR>
208                <SPAN class="subcabeceras"><?php echo $TbMsg["$mopciones[$opcion]"] ?></SPAN></P>
209                <P align="center"><SPAN class=textos><?php echo $TbMsg["TABLE_TITLE"] ?></SPAN></P>
210        <TABLE class="tabla_datos" align="center">
211
212<!--------------------------------------------------------------------------------------------------------------------------------------------------->
213
214                        <TR>
215                                <TH>&nbsp;<?php echo $TbMsg["TYPE"] ?> &nbsp;</TH>
216                                <?php if ($opcion==$CONSULTAR || $opcion==$ELIMINAR){?>
217                                        <TD><?php
218                                                        $TBtipo[1]=$TbMsg["TYPE_WEB"];
219                                                        $TBtipo[2]=$TbMsg["TYPE_ITEMS"];
220                                                        $TBtipo[3]=$TbMsg["TYPE_MENU"];
221                                                        echo $TBtipo[$idtipoicono];
222                                        }else{
223                                                                $parametros='0='.chr(13);
224                                                                $parametros.=$TbMsg["SELECT_WEB"].chr(13);
225                                                                $parametros.=$TbMsg["SELECT_ITEMS"].chr(13);
226                                                                $parametros.=$TbMsg["SELECT_MENU"];
227                                                                echo '<TD>'.HTMLCTESELECT($parametros, "idtipoicono","estilodesple","",$idtipoicono,100).'</TD>';
228                                        }?>
229                        </TR>
230
231
232<!-------------------------------------------------------------------------------------------------------------------------------------------------->
233                        <TR>
234                                <TH>&nbsp;<?php echo $TbMsg["DESCRIP"] ?>  &nbsp;</TH>
235                                <?php if ($opcion==$CONSULTAR || $opcion==$ELIMINAR){?>
236                                        <TD><?php echo $descripcion?></TD>
237                                <?php }else{?>
238                                        <TD><INPUT class=cajatexto name="descripcion" maxlength=250  style="width:250" value="<?php echo $descripcion?>"></TD>
239                                <?php }?>
240                        </TR>
241<!--------------------------------------------------------------------------------------------------------------------------------------------------->
242                <?php if ($opcion==$CONSULTAR || $opcion==$ELIMINAR){?>
243                        <TR>
244                                <TH>&nbsp;Icono&nbsp;</TH>
245                                <TD><?php echo basename($urlicono)?></TD>
246                        </TR>
247                <?php }else{
248                                                if ($opcion==$INSERTAR || ($opcion==$MODIFICAR && empty($urlicono))){?>
249                                                        <TR>
250                                                                <TH>&nbsp; <?php echo $TbMsg["ICON"] ?> &nbsp;</TH>
251                                                                <TD><INPUT type=file class=cajatexto name="urlicono"  style="width:500" value="<?php echo $urlicono?>">
252                                                </TR>
253                                        <?php }else{?>
254                                                        <TR>
255                                                                <TH>&nbsp; <?php echo $TbMsg["ICON"] ?> &nbsp;</TH>
256                                                                <TD><?php echo basename($urlicono)?></TD>
257                                                        </TR>
258                                                        <TR>
259                                                                <TH>&nbsp; <?php echo $TbMsg["REPLACE"] ?> &nbsp;</TH>
260                                                                <TD><INPUT type=file class=cajatexto name="urlicono"  style="width:500" value="<?php echo $urlicono?>">
261                                                </TR>
262                                        <?php }?>
263                        <?php }?>
264                        </TR>
265<!--------------------------------------------------------------------------------------------------------------------------------------------------->
266        </TABLE>
267        </DIV>
268        <BR>
269<!--------------------------------------------------------------------------------------------------------------------------------------------------->
270    <DIV id="Layer_opciones">
271        <TABLE align="center" border="0" >
272             <TR>
273             <?php switch($opcion){
274                   case $CONSULTAR:
275                                                  echo '<TD><img style="cursor:hand" SRC="../images/boton_insertar_'.$idioma.'.gif" onclick="Cancelar()"></TD>';
276                                                  break;
277                                        case $ELIMINAR:
278                                                        echo '<TD><img SRC="../images/boton_confirmar_'.$idioma.'.gif" style="cursor:hand" onclick="Confirmar()"></TD>';
279                                                        echo '<TD><img SRC="../images/boton_cancelar_'.$idioma.'.gif" style="cursor:hand" onclick="Cancelar()"></TD>';
280                                                        break;
281                      default:
282                                                  echo '<TD><img style="cursor:hand" SRC="../images/boton_confirmar_'.$idioma.'.gif" onclick="Confirmar()"></TD>';
283                                                  echo '<TD><img style="cursor:hand" SRC="../images/boton_cancelar_'.$idioma.'.gif" onclick="Cancelar()"></TD>';
284                                                  break;
285                                }?>
286           </TR>
287        </TABLE>
288        </DIV>
289
290
291<?php
292//________________________________________________________________________________________________________
293// Posiciona cursor en campo usuario y muestra mensaje de error si lo hubiera
294echo '<SCRIPT LANGUAGE="javascript">';
295if (!empty($msg))
296        echo 'alert("'.$msg.'")';
297echo '</SCRIPT>';
298?>
299<!--------------------------------------------------------------------------------------------------------------------------------------------------->
300  </FORM>
301  </BODY>
302  </HTML>
303  <?php
304//______________________________________________________________________
305//      Inicialiciza los campos de trabajo de la tabla
306//______________________________________________________________________
307function IncializaCampos(){
308
309        global $idicono;
310        $idicono=0;
311       
312        global $urlicono;
313        global $idtipoicono;
314        global $descripcion;
315
316        $urlicono="";
317        $idtipoicono=0;
318        $descripcion="";
319}
320
Note: See TracBrowser for help on using the repository browser.