"; var_dump(debug_backtrace()); echo ""; print_r(debug_backtrace(), true); */ class CEngine{ public $EN_DESAROLLO; public $ATRAS = 'javascript:history.go(-1);'; public $tiempoInicial; function __construct(){ ///////////////////////////////// /// INICIO SESSIION /// /////////////////////////////// header('Content-Type: text/html; charset=UTF-8'); ini_set('session.cache_expire',1260); # duran 20 minutos las variables de sesion session_start(); if (version_compare(phpversion(), '5.2.0', '<')) { // 5.3.3 die('La versión de php que usa tu Servidor es demasiado antigüa, necesitas como mínimo la 5.3.3'); } //// *CS : Por si viene de otra web, solo funcionará una vez publicada en internet /*if(md5(__FILE__) != $_SESSION['pw_unica']){ session_unset(); session_destroy(); session_start(); $_SESSION['pw_unica'] = md5(__FILE__); }*/ $this->tiempoInicial = microtime(true); ///////////////////////////////// /// CARGAMOS CLASES /// /////////////////////////////// //// CONECTAMOS A LA SQL //// include_once(dirname(dirname(dirname(__FILE__))).'/config/bbdd.php'); # datos de conexion a la BDD include_once(dirname(dirname(dirname(__FILE__))).'/class/conexion.php'); $GLOBALS['Con'] = new CConexion; $GLOBALS['Con']->conectar(); //// CARGAMOS EL CONFIG DE LA WEB //// include_once(dirname(dirname(dirname(__FILE__))).'/class/config.php'); $Config = new CSuperConfig($GLOBALS['Con']); $GLOBALS['Config'] = $Config->obtener_uno(); unset($Config); if($GLOBALS['Config']->WEB_CERRADA == '1'){ header("Location: ".$GLOBALS['Config']->URL."503.php"); die(); } //// LOS MODULOS ACTIVOS /// include_once($GLOBALS['Config']->DIRBASE.'/class/niveles_admin.php'); $niveles_admin = new CNiveles_admin($GLOBALS['Con']); $this->PERMISOS = $niveles_admin->obtener_key(1); unset($niveles_admin); //// CARGAMOS LAS UTILIDADES //// include_once($GLOBALS['Config']->DIRBASE.'/class/util.php'); $GLOBALS['Util'] = new CUtil(); //// ESTADISTICAS DE VISITA /// include_once($GLOBALS['Config']->DIRBASE.'/modulos/megaVisitas/megaVisitas.php'); $visitas = new CmegaVisitas(); } public function inicia(){ include_once('class/metatags.php'); //// CARGAMOS LOS IDIOMAS //// include_once($GLOBALS['Config']->DIRBASE.'/class/idiomas.php'); $idioma = new CSuperIdiomas($GLOBALS['Con']); $GLOBALS['Idiomas'] = $idioma->obtener(null,1); // solo los activos if(isset($_POST['id_idioma'])){ $_SESSION['id_idioma'] = $_POST['id_idioma']; } else if(isset($_GET['id_idioma'])){ $_SESSION['id_idioma'] = $_GET['id_idioma']; } else if(!isset($_SESSION['id_idioma']) || !$_SESSION['id_idioma'] > 0){ // La primera vez que entra en el index . Idioma aun sin seleccionar. $_SESSION['id_idioma'] = 1; // idioma por defecto $idioma_navegador = strtoupper(substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2)); for($i=0;$iISO) $_SESSION['id_idioma'] = $GLOBALS['Idiomas'][$i]->ID_IDIOMA; } } $GLOBALS['Isos'] = array(); if(isset($GLOBALS['Idiomas'])) { for ($i = 0; $i < count($GLOBALS['Idiomas']); $i++) { $GLOBALS['Idiomas'][$i]->ISO = strtolower($GLOBALS['Idiomas'][$i]->ISO); if (!is_object($GLOBALS['Isos'][$GLOBALS['Idiomas'][$i]->ID_IDIOMA])) { $GLOBALS['Isos'][$GLOBALS['Idiomas'][$i]->ID_IDIOMA] = new stdClass; } $GLOBALS['Isos'][$GLOBALS['Idiomas'][$i]->ID_IDIOMA]->ISO = $GLOBALS['Idiomas'][$i]->ISO; if ($GLOBALS['Idiomas'][$i]->ID_IDIOMA == $_SESSION['id_idioma']) $GLOBALS['Idioma'] = $GLOBALS['Idiomas'][$i]; } } if(!isset($GLOBALS['Idioma'])){ // Está intentando cargar un idioma no activo $_SESSION['id_idioma'] = 1; // idioma por defecto $GLOBALS['Idioma'] = $GLOBALS['Idiomas'][1]; } unset($idioma); // para evitar contenido duplicado se envia directamente al idioma por defecto o seleccionado al entrar al dominio $path = explode('/', $_SERVER['SCRIPT_NAME']); if(!isset($_GET['id_idioma']) && end($path) === 'index.php'){ /* $metas = new CSuperMetatags($GLOBALS['Con']); echo $metas->crearHtaccess(); */ @header('Location: '.$GLOBALS['Config']->URL.$GLOBALS['Idioma']->ISO.'/'); } //// CARGAMOS LAS METAS //// include_once($GLOBALS['Config']->DIRBASE.'/modulos/megaMetatags/megaMetatags.php'); //// CARGAMOS LA TRADUCCION //// include_once($GLOBALS['Config']->DIRBASE.'/modulos/traduccion_web/traduccion_web.php'); ///// CLIENTES ////// if($this->PERMISOS[132]){ include_once($GLOBALS['Config']->DIRBASE.'/modulos/megaClientes/megaClientes.php'); $GLOBALS['Clientes'] = new CMegaClientes($GLOBALS['Con']); } ///// CESTA ////// if($this->PERMISOS[164]){ // el id de los pedidos // carga las divisas si hay tienda include_once($GLOBALS['Config']->DIRBASE.'/modulos/megaDivisas/megaDivisas.php'); include_once($GLOBALS['Config']->DIRBASE.'/modulos/megaCesta/megaCesta.php'); } //$this->carga_clases_extra($clases_extra); // clases particulares de este proyecto que se cargarán siempre. ///////////////////////////////// /// VARIOS /// /////////////////////////////// //// ELIMINAMOS VARIABLES PELIGROSAS //// foreach($_GET as $clave => $valor){ $_GET[$clave] = $GLOBALS['Con']->filtro($valor); } foreach($_POST as $clave => $valor){ $_POST[$clave] = $GLOBALS['Con']->filtro($valor); } $dominio = $_SERVER['SERVER_NAME']; if($dominio == 'www.cerotec.es'){ // EN DESARROLLO $this->EN_DESAROLLO = 1; }else{ // EN INTERNET $this->EN_DESAROLLO = 0; ini_set('display_errors',0); error_reporting(false); } unset($dominio); ///// BOLETIN ////// if(isset($_POST['newsletter'])){ include_once($GLOBALS['Config']->DIRBASE.'/modulos/megaBoletin/megaBoletin.php'); } ////////////////////////////////////////// /// PARTICULARIDADES DE ESTE PROYECTO /// //////////////////////////////////////// function bonito($numero, $txt = null){ if($numero > 0){ $numero = round($numero,2); $numero = $numero == 0 ? '0' : number_format($numero,2,',','.'); $numero = explode(',',$numero); //if($numero[1] == '00'){ // $numero = $numero[0]; //}else{ $numero = $numero[0].','.$numero[1].''; //} }else{ if(is_null($txt)) $numero ='00,00'; else $numero = $txt; } return $numero; } } function __destruct(){ // se auto-ejecuto al morir la instancia, es decir, cuando la web se carga al 100%. $GLOBALS['Con']->desconectar(); } public function cerrar(){ if($this->EN_DESAROLLO){ echo $this->memoria_consumida(); } /* PARA DEPURAR LA MEMORIA echo '
';
		print_r($GLOBALS);
 		echo '
';*/ // en algunos servidores el _destruct no funciona y se usa esto. $GLOBALS['Con']->desconectar(1); } private function memoria_consumida(){ $memoria_usada = round(memory_get_peak_usage() / 1024,1) ; $diferencia = round($memoria_usada-$_SESSION['ultima_memoria_usada'],1); $tiempo = microtime(true)-$this->tiempoInicial; $_SESSION['ultima_memoria_usada'] = $memoria_usada; return "
Memoria usada: ".number_format($memoria_usada,1)." KB (".$diferencia.") KB
Tiempo de carga: ".round($tiempo,3)." segundos
"; } private function carga_clases_extra($clases_extra_){ global $Con; for($x=0;$xmemoria_actual; if(!isset($this->tiempo_actual)) $this->tiempo_actual = $this->tiempoInicial; $diferencia = (microtime(true)-$this->tiempo_actual)*100; echo "".$n.": ".round($diferencia_t,4)." | ".number_format($diferencia_m,3)."
"; $this->tiempo_actual = microtime(true); $this->memoria_actual = $memoria_usada; } } // Lo inicio. $GLOBALS['Engine'] = new CEngine(); $GLOBALS['Engine']->inicia(); ?>name = 'Contactar'; $this->version = 1.0; $this->author = 'Sergio Romero'; $this->description = 'Motor para el envío de formularios de contacto. El js genera automáticamente los errores. Los campos obligatorios se definen en el config de la admin. Genera automáticamente los onFocus'; // Cargo el config del módulo include_once($GLOBALS['Config']->DIRBASE.'/class/contactar_config.php'); $contactar_config = new CSuperContactar_config($GLOBALS['Con']); $this->MI_CONFIG = $contactar_config->obtener_uno(); // seteo metas $GLOBALS["Metas"]->TITLE = t('Formulario de contacto Online.','contactar'); $GLOBALS["Metas"]->DESCRIPTION = t('Si tienes cualquier duda o sugerencia, contacta con nosotros y te ayudaremos en todo lo posible.','contactar'); // inicio operaciones //$this->validador_javascript(); $this->MENSAJE_OMISION = ''; if(isset($_POST['consulta']) && $_POST['consulta'] != ''){ $this->MENSAJE_OMISION = $_POST['consulta']; }elseif(isset($_GET['i']) && is_numeric($_GET['i'])){ include_once($GLOBALS['Config']->DIRBASE.'/class/productos.php'); $prod = new CSuperProductos($GLOBALS['Con']); $tmp_prod = $prod->obtener_uno((int)$_GET['i']); $this->MENSAJE_OMISION = t('Estoy interesado en el producto:','contactar').' '.$tmp_prod->NOMBRE.' '; $this->NOMBRE_PRODUCTO = $tmp_prod->NOMBRE; $GLOBALS['Metas']->TITLE = t('Información sobre el producto','contactar').' '.$tmp_prod->NOMBRE; $GLOBALS['Metas']->DESCRIPTION = t('Solicitar información sobre el producto','contactar').' '.$tmp_prod->NOMBRE.'. Un asesor responderá todas tus preguntas referentes a '.$tmp_prod->NOMBRE; unset($prod, $tmp_prod); } $this->test_envio(); } private function validador_javascript(){ $campos_a_mirar = ''; $campos_a_mirar.= "['nombre','nombre']"; if($campos_a_mirar != '') $campos_a_mirar.= ','; $campos_a_mirar.= "['email','email']"; if($campos_a_mirar != '') $campos_a_mirar.= ','; $campos_a_mirar.= "['consulta','area']"; if($campos_a_mirar != '') $campos_a_mirar.= ','; $campos_a_mirar.= "['telefono','telefono']"; // Validación JS // TIPOS DE DATOS: nombre, telefono, email, desplegable, pass, area, fecha, web, check // js('js/validate.js'); // impide que se incluya 2 veces lo mismo in_line("var id_formulario = '".$this->MI_CONFIG->ID_FORMULARIO."'; var campos_a_mirar = [".$campos_a_mirar."]; inicia_validador(campos_a_mirar,id_formulario);"); } private function test_envio(){ $this->ENVIADO = 0; // retorna si ha sido o no correcto el envio if(isset($_POST['nombre']) && $_POST['nombre'] != ''){ // 1. Valido los datos de lado del servidor // FUNCIONES: validaTexto, validaConsulta, validaTlf, validaEmail, validaLista, validaChek, validaPass, validaFecha $error = ''; if($this->MI_CONFIG->NOMBRE){ $error.= $GLOBALS['Util']->validaTexto($_POST['nombre'],t('Nombre','contactar')); } if($this->MI_CONFIG->EMAIL){ $error.= $GLOBALS['Util']->validaEmail($_POST['email'],t('Email','contactar')); } if($this->MI_CONFIG->CONSULTA){ $error.= $GLOBALS['Util']->validaConsulta($_POST['consulta'],t('Consulta','contactar')); } if($this->MI_CONFIG->TELEFONO){ $error.= $GLOBALS['Util']->validaTlf($_POST['telefono'],t('Teléfono','contactar')); } if($this->MI_CONFIG->POLITICA){ $error.= $GLOBALS['Util']->validaChek($_POST['politica'],t('Política de privacidad','contactar')); } $error.= $GLOBALS['Util']->validaLista($_POST['cuando'],t('Fecha de venta','contactar')); // 2. Compruebo que no haga más de 3 envios seguidos if(!isset($_SESSION['ip_enviadas'])) $_SESSION['ip_enviadas'] = array(); if($_SESSION['ip_enviadas'][$_SERVER['REMOTE_ADDR']] > 3) $error.= t('No puede mandar más de 3 consultas seguidas.','contactar'); if($error != ''){ $_POST['consulta'] = str_replace("\\r\\n","\r\n",$_POST['consulta']); //pendiente: Esto.... es por culpa del filtro del engine.. ¿Es necesario el filtro en el engine? $GLOBALS['Util']->alerta(t('

ERROR EN EL FORMULARIO

','contactar').$error); $GLOBALS['Util']->carga_msg('roja', t('

ERROR EN EL FORMULARIO

','contactar').$error); }else{ // 3. Almaceno el envio para no hacer más de 3 if(!isset($_SESSION['ip_enviadas'][$_SERVER['REMOTE_ADDR']])) $_SESSION['ip_enviadas'][$_SERVER['REMOTE_ADDR']] = 1; else $_SESSION['ip_enviadas'][$_SERVER['REMOTE_ADDR']]++; // 5. Monto el contenido del email, solo con los campos enviados $cuerpo = ''; if($_POST['motivo']) $cuerpo.= 'Motivo: '.$_POST['motivo'].'

'; if($_POST['empresa']) $cuerpo.= 'Empresa: '.$_POST['empresa'].'

'; if($_POST['nombre']) $cuerpo.= 'Nombre: '.$_POST['nombre'].'

'; if($_POST['apellidos']) $cuerpo.= 'Apellidos: '.$_POST['apellidos'].'

'; if($_POST['telefono']) $cuerpo.= 'Teléfono: '.$_POST['telefono'].'

'; if($_POST['email']) $cuerpo.= 'Email: '.$_POST['email'].'

'; if($_POST['direccion']) $cuerpo.= 'Dirección: '.$_POST['direccion'].'

'; $cuerpo.= 'Fecha venta: '.$_POST['cuando'].'

'; if($_POST['consulta']) $cuerpo.= 'Consulta: '.$_POST['consulta'].'

'; $cuerpo = str_replace("\r\n","\n",nl2br($cuerpo)); $cuerpo = str_replace("\\n","\n",$cuerpo); $cuerpo = str_replace("\n","
",$cuerpo); $cuerpo = stripslashes($cuerpo); // 6. Lo envio include_once($GLOBALS['Config']->DIRBASE.'/modulos/megaEmails/megaEmails.php'); $GLOBALS['Emails']->ASUNTO = 'Formulario Reventas: '.$_POST['nombre']; if($GLOBALS['Config']->DESTINATARIOS != '') $GLOBALS['Emails']->PARA = $GLOBALS['Config']->DESTINATARIOS; else $GLOBALS['Emails']->PARA = $GLOBALS['Config']->EMAIL; if($GLOBALS['Config']->DESTINATARIOS_O != '') $GLOBALS['Emails']->PARA_O = $GLOBALS['Config']->DESTINATARIOS_O; // Copias ocultas $GLOBALS['Emails']->REPLY_TO = $_POST['email']; $GLOBALS['Emails']->FROM_NAME = $_POST['nombre'].' '.$_POST['apellidos']; $GLOBALS['Emails']->CUERPO = $cuerpo; $GLOBALS['Emails']->enviar_paralelo(); unset($_POST['motivo']); unset($_POST['nombre']); unset($_POST['apellidos']); unset($_POST['telefono']); unset($_POST['email']); unset($_POST['direccion']); unset($_POST['consulta']); unset($_POST['empresa']); $GLOBALS['Util']->alerta(t('

ENVIO CORRECTO

El envio de su formulario se ha producido de forma correcta. Puede abandonar la página con seguridad.','contactar').$error); $GLOBALS['Util']->carga_msg('verde', t('

ENVIO CORRECTO

El envio de su formulario se ha producido de forma correcta. Puede abandonar la página con seguridad.','contactar').$error); $this->ENVIADO = 1; // retorna si ha sido o no correcto el envio } } } // test_envio } // Lo inicio. $contactar_web = new Contactar_web(); ?>DIRBASE.'/class/banners.php'); class megaBanners extends CSuperBanners{ public $CONFIG = array(); function __construct(){ $this->name = 'Banners Web'; $this->version = 1.0; $this->author = 'Sergio Romero'; $this->description = 'Motor para la gestión de los banners'; $this->CONEXION = new CConexion($GLOBALS['Con']->MYSQLi); $this->CONEXION->ORDEN = 'orden'; } public function obtener_web($cantidad = null){ if(is_null($cantidad)) $cantidad = $this->CONFIG['cantidad']; $listado_banners = $this->obtener_inteligente($this->CONFIG['id_categoria'], 1, $this->CONFIG['seccion'], $this->CONFIG['posicion'], $GLOBALS['Idioma']->ID_IDIOMA, $cantidad); for($b=0;$bsuma_visita($listado_banners[$b]); } return $listado_banners; } public function crea_item($obj, $ancho = null, $alto = null, $class_ = null){ $foto = ''; $clase = ''; if(!is_null($ancho)) $foto.= 'fe-'.$ancho.'x'.$alto.'-'; if(!is_null($class_)) $clase.= " class='".$class_."'"; $tmp = ''.$obj->ALT.' '; if($obj->PDF != ''){ $tmp = ' '.$tmp.''; }elseif($obj->URL != ''){ $tmp = ''.$tmp.''; } $tmp = '

'.$obj->ALT.'

'.$tmp.'
'; return $tmp; } /*public function mostrar_carrusel($mostrar_maximo = 5, $ancho = null, $alto = null){ if(count($this->MIS_BANNERS) > $mostrar_maximo){ // hay mas de los que puedo mostrar, asi que obtendré algunos de forma aleatoria $copia = $this->MIS_BANNERS; $this->MIS_BANNERS = array(); // lo reseteo $claves = array_rand($copia, $mostrar_maximo); for($a=0;$a<$mostrar_maximo;$a++){ $this->MIS_BANNERS[] = $copia[$claves[$a]]; } } if(count($this->MIS_BANNERS) > 1){ // si solo hay uno, anulo el carrusel $clase = ' class="blueberry"'; } if(count($this->MIS_BANNERS) > 0){ echo "publicidad
    "; } for($n=0;$nMIS_BANNERS);$n++){ $url = $this->MIS_BANNERS[$n]->URL != '' ? $this->MIS_BANNERS[$n]->URL : '#'; $escala = $ancho != null ? 'f-'.$ancho.'-'.$alto.'-ffffff-' : ''; echo '
  • '.$this->MIS_BANNERS[$n]->NOMBRE.'
  • '; //echo ''.$this->MIS_BANNERS[$n]->NOMBRE.''; $this->suma_visita($this->MIS_BANNERS[$n]); } if(count($this->MIS_BANNERS) > 0){ echo "
"; } } */ } // Lo inicio. $GLOBALS['Banners'] = new megaBanners(); ?>