Historia
Es miércoles por la mañana cuando un grupo de jóvenes se va a desayunar a la fonda de la esquina, y todos piden chocomilk con plátano y diferentes platillos, una vez terminado la alumna RUBI se va sin pagar el chocomilk, dejando a pagar a la Martina pero este no quiso pagar y le echo la culpa al joven guapo Julio, que pagara, este se enojo y enfureció se transformo en Súper Saiyajin uso el Jutso Clones de sombra y empezo a buscar a RUBI para ponerla a lavar platas en la fonda por que si no el paga.
Empieza a disfrutar esta épica aventura y no dejes que te atrape, véncelo aventándole bolitas de poder DESCARGALO Y VENCE PARA NO PAGAR EL CHOCOMILK
Los personajes y la historia son ficticios cualquier parecido con la realidad es mera coincidencia
CONTROLES:
Con las flechas se mueve y con el espacio dispara
Al parecer hay un ciclo infinito con windows vista y 7 , abran el admin de tareas, y terminen el proceso de javaw
DESCARGAR
Para obtener estadísticas necesitamos el numero de filas de una consulta, ejemplo, numero total de usuarios activos etc.
A continuación les dejo la función que obtiene el numero de filas de una consulta
Supongamos que el archivo se llama consulta.php y esta en la carpeta modelo
//LOS VALORES QUE PONDRIAMOS AQUI SERIA EL CAMPO Y LUEGO EL DATO CON EL QUE QUEREMOS COMPARAR
function datoBuscar($campo,$dato){
include ("configuracion.php");
$enlace = conectar_mysql($servidor,$usuario,$contra,$bd);
$alumnos = "SELECT $campo FROM vmlzj_comprofiler WHERE $campo='$dato'";
$resultado = mysql_query($alumnos,$enlace);
$numeroFilas = mysql_num_rows($resultado);
return $numeroFilas;
}
Para mandarlo llamar seria de la siguiente manera
<?php
include ("conexionmysql.php");
//SE INCLUYE EL ARCHIVO
include ("modelo/consultas.php");
$egreT = datoBuscar("campo","datoAcomparar");
?>
Les dejo también la función de conectar_mysql()
<?php
/*******************************************************************************************************************
* DESCRIPCION: ESTE ARCHIVO TIENE LA FUNCIONDE CONECTAR CON LA BASE DE DATOS. *
* PROGRAMADOR: *
* FECHA: 01/07/2012 *
********************************************************************************************************************/
function conectar_mysql($direccion,$usuario,$password,$basededatos)
{
global $enlace;
if(!($enlace=mysql_connect($direccion,$usuario,$password)))
{
echo " alert('error de conexion')";
exit();
}
if(!(mysql_select_db($basededatos,$enlace)))
{
echo " alert('error al conectar con la base de datos')";
exit();
}
return $enlace;
}
?>
BUEN DIA AMIGOS!!!! Estaba recordando los buenos tiempos de la secundaria cuando yo y mis amigos nos las pinteábamos para ir al MUNDONET “Ciber Cafe” de che ríos, para aventarnos una partidilla de Age Of Empirers.
Bueno a todo esto les quiero dejar algo que encontré entre mis respaldos de una vieja, de una vieja computadora que prendí y me trajo recuerdos :’), les dejo el pack de escenario con los cuales jugamos en línea allá en aquellos tiempos, espero y lo disfruten si es que aun las nuevas generaciones siguen jugando este espectacular juego.
A continuación viene la lista de escenarios
() jose i tincho.scx
(DD) Infantery Hell Blood V1.scx
(HG)CBAV11.scx
(HG)CBAV12.scx
(IGZ) CBAV12.scx
(IGZ) CBA V12.scx
(IGZ) CBAV12 (Con banderas).scx
(IGZ) CBAV12.scx
(IGZ) CBAV13.scx
(IGZ) CBA V12.scx
(IGZ) CBA V12.scx
(IGZ) CBA 13,5.scx
(IGZ) CBAV10.scx
(IGZ) CBAV12 .scx
(IGZ) CBAV12.scx
(IGZ) CBAV12_AOC.scx
(IGZ) CBAV13 .scx
(IGZ) CBAV13.scx
(IGZ) CBAV9.scx
(IGZ) Defend The Empire.scx
(IGZ) GwarzV2.scx
(IGZ) Path Blood Heroes.scx
(IGZ) Rambit CBG NoS AD.scx
(IGZ) Smosh V14.scx
(IGZ) Veteran BloodV6.scx
(IGZ) Veteran BloodV8.scx
(IGZ)CBAV12.scx
– UDP_PRISON_BREAK_.scx
– Path BlooD HerooeS -.scx
– °-°Gods Path Blood~Aldeano~Oficial°-°.sc
-┼-InfanteryHellBloodOficial-┼-.scx
11111111111.scx
=V= CBA.scx
@-+-Harry Potter III RPG version 1.3.scx
@-+-Harry Potter III RPG version 1.3a.scx
@–+–Harry Potter III RPG version 1·5.scx
@-Harry potter III RPG version 8.50-@.scx
Ancient – [TD]- new version Medios 2k.scx
Carrera de Obstaculos.scx
Castle Blood II Auto-vNBv3.scx
Castle Norte vs Sur.scx
Ciudades Divididas.scx
default0.scx
deStRuYe La MaLdiTa ToRRe _V_4.0.scx
dEStRuYe La MaLdIta ToRRe _V_4.0.scx
deStRuYe La MaLdIta ToRRe _V_4.0.scx
deStRuYe La MaLdIta ToRRe _V_4.0.scx
EXCALIBUR IV (Official).scx
Green Arabia.scx
Guerra del pacifico.scx
Infantery Hell Blood V1.scx
jose.scx
JOSE2.scx
KING MOVES Green Fix-vNBv3.scx
lol xd.scx
manu.scx
masacre_infinita.scx
Masakre Infinita v. Oficial. 5 min.scx
nomada.scx
Path Blood Heroes 4-8.scx
Path Blood Heroes 2008.scx
Path Blood Heroes 4-8.scx
PTO BlueSea v4,2.scx
PTO PolarExpress v5,1.scx
RAMBIT CB.scx
scenario.inf
Scenario.rar
Simpsons 3 RPG FIXED (USE THIS ONE).scx
Soldier Store- Platinum Pure (4 Players).s
SoldierStore(v2)NoHoRseS-vNBv3.scx
SUPER JUEGO 2009!!ORIJINAL.scx
TD ANCIENT 2K.scx
TD ANCIENT 4’3K.scx
TD ANCIENT 4-K.scx
Td Paris Ver 14 Fixter–C Hard! Beta.scx
Td Paris Ver 15 Fixter–C Ultra-H.scx
tincho.scx
Udaprey Pantanos Hard 5.2.scx
Udaprey Utopia Oficial 3v8 español 1,3.scx
Udaprey_Utopia_Oficial_3v8_español_1,3.scx
Uruk Hai TD V[SpX]28,3.scx
VeTeRaN BLooD ¬ PeRFeCTiON!!!.scx
warrior defence 2007 + recursos.scx
WORLD RISK (TheConquerors.es).scx
XERO TD 1500k -7 player game.scx
[E] World Risk 40 Wonders 2,5.scx
[IGZ] CBAV13.scx
[xxx]-Rambit-CB-Gold-Edition-[xxx].scx
_V23 [RPG]—WORLD Sha—-[AOC] V23_.scx
~~SIMPSONS RPG V3,0~~-vNBv3.scx
°-°Gods Path Blood~Aldeano~Oficial°.scx
»ÌÌ«Grave Blood Oficial V5»Ì.scx
DISFRUNTELO Y QUE TENGAN UN BUEN DIA
DESCARGAR
Hola amigos ya hemos podido guardar, modificar, eliminar y presentar datos de una base de datos por medio de HTML, PHP5 Y MySQL, pero ahora falta ver como hemos de presentar los datos gráficamente de manera que nos o les sea útil a nosotros o al encargado de cierto departamento y pueda tomar las decisiones correcta en base a la visualización de los datos que presentaremos, ahora les mostrare el código fuente con el cual podrán utilizar los datos de su tabla para generar graficas.
Primero les dejo el archivo de consultas.php que esta dentro de la carpeta modelo
<?php
//FUNCION PARA OBTERNER EL NUMERO TOTAL DE EGRESADOS TRABAJANDO
function egresadosTrabajando(){
$enlace = mysql_connect("localhost", "root", "");
mysql_select_db("sce", $enlace);
$alumnosTrabando = "SELECT * FROM vmlzj_comprofiler WHERE cb_empleado='si'";
$resultado = mysql_query($alumnosTrabando,$enlace);
$numeroFilas = mysql_num_rows($resultado);
return $numeroFilas;
}
//FUNCION PARA OBTENER DE LA TABLA EL NUMERO TOTAL DE EGRESADOS DESEMPLEADOS
function egresadosDesempleados(){
$enlace = mysql_connect("localhost", "root", "");
mysql_select_db("sce", $enlace);
$alumnosTrabando = "SELECT * FROM vmlzj_comprofiler WHERE cb_empleado='no'";
$resultado = mysql_query($alumnosTrabando,$enlace);
$numeroFilas = mysql_num_rows($resultado);
return $numeroFilas;
}
?>
Ahora les dejo el código que hace que pinte la grafica gAlumT.php
<?php
//MANDAMOS A LLAMAR LAS LIBRERIAS JPGRAPH
include ("jpgraph/jpgraph.php");
include ("jpgraph/jpgraph_pie.php");
include ("jpgraph/jpgraph_pie3d.php");
//MANDAMOS LLAMAR LA LIBRERIA PARA USAR LAS FUNCIONES QUE NOS DARAN LOS DATOS
include ("modelo/consultas.php");
//USAMOS LAS FUNCIONES PARA ASIGNAR LOS VALORES
$egreT = egresadosTrabajando();
$egreD = egresadosDesempleados();
//AQUI VAN LOS DATOS ASIGNADOS
$data = array($egreT,$egreD);
$graph = new PieGraph(450,200,"auto");
$graph->img->SetAntiAliasing();
$graph->SetMarginColor('gray');
//$graph->SetShadow();
// Setup margin and titles
$graph->title->Set("Grafica de alumnos trabajando");
$p1 = new PiePlot3D($data);
$p1->SetSize(0.35);
$p1->SetCenter(0.5);
// Setup slice labels and move them into the plot
$p1->value->SetFont(FF_FONT1,FS_BOLD);
$p1->value->SetColor("black");
$p1->SetLabelPos(0.2);
$nombres=array("Egresados con trabajo","Egresados sin trabajo");
$p1->SetLegends($nombres);
// Explode all slices
$p1->ExplodeAll();
$graph->Add($p1);
$graph->Stroke();
?>
Les dejo la librería de JPGRAPH para que la puedan descargar, SALUDOS espero que les halla servidor
Actividad 1:
Validación
1. ¿Describe las razones por las cuales es necesaria la validación?
a. Costes de fallos de ejecución. Los costes y las consecuencias de los fallos de ejecución de los sistemas críticos son potencial mente mucho más grandes que para los sistemas no críticos. Pueden reducirse los riesgos de los fallos del sistema invirtiendo más en verificación y validación del sistema. Normalmente es más económico encontrar y eliminar defectos antes de que el sistema sea entregado que pagar por los consecuentes costes de accidentes o de un mal funcionamiento de los servicios del sistema.
b. Validación de los atributos de confiabilidad. Puede tenerse que hacer una demostración formal a los clientes de que el sistema satisface sus requerimientos especificados de confiabilidad (disponibilidad, fiabilidad, seguridad y protección). Para evaluar estas características de confiabilidad se requieren actividades específicas de V & V explicadas más adelante en este capítulo. En algunos casos, los reguladores externos, tales como autoridades de aviación nacionales, pueden tener que certificar que el sistema es seguro antes de que éste sea desplegado. Para obtener esta certificación, pueden tenerse que diseñar y llevar a cabo procedimientos de V & V especiales que recogen la evidencia sobre la confiabilidad del sistema.
2. Cuál es el proceso para medir la fiabilidad de un software
Pruebas estadísticas
a. Se comienza estudiando los sistemas existentes del mismo tipo para establecer un per- fil operacional. Un perfil operacional identifica las clases de entradas al sistema y la probabilidad de que estas entradas ocurran en un uso normal.
b. A continuación, se construye un conjunto de datos de prueba que reflejan el perfil operacional. Esto significa que se crean datos de prueba con la misma distribución de probabilidad que los datos de prueba para los sistemas que se han estudiado. Normalmente, se utiliza un generador de datos de prueba para soportar este proceso.
c. Se prueba el sistema utilizando estos datos y se contabiliza el número y tipo de fallos que ocurren. Los instantes en los que ocurren estos fallos también son registrados. Tal y como se indicó en el Capítulo 9, las unidades de tiempo que se elijan deberían ser adecuadas para la métrica de fiabilidad utilizada.
d. Después de que se ha observado un número de fallos significativos estadísticamente, se puede calcular la fiabilidad del software y obtener el valor adecuado de la métrica de fiabilidad.
3. Que es y porque es importante un perfil de operaciones
Consiste en la especificación de clases de entradas y la probabilidad de su ocurrencia. Cuando un nuevo sistema software reemplaza a un sistema existente manual o automatizado, es razonablemente fácil evaluar el patrón de uso probable del nuevo software. Éste debería corresponderse con el uso del sistema existente, con algunas adiciones para las nuevas funcionalidades que (presumiblemente) se incluyen en el nuevo software. Por ejemplo, puede especificarse un perfil operacional para sistemas de centralitas de telecomunicaciones debido a que las compañías de telecomunicaciones conocen los patrones de llamadas que estos sistemas tienen que manejar.
El perfil operacional del software es importante por que refleja cómo se utilizará éste en la práctica.
4. La dificultad para la construcción de un perfil operacional de un software nuevo ¿Es igual para uno que se creó para remplazar a otro?
NO por que cuando un sistema software es nuevo e innovador, es difícil anticipar cómo será utilizado y, por lo tanto, generar un perfil operacional preciso.
5. Cómo funciona el modelo de crecimiento de fiabilidad
Un modelo de crecimiento de fiabilidad es un modelo de cómo cambia la fiabilidad del sistema a lo largo del tiempo durante el proceso de pruebas. Para predecir la fiabilidad, el modelo conceptual de crecimiento de la fiabilidad debe ser traducido a un modelo matemático.
Aquí no se entra en este nivel de detalle, sino que simplemente se plantea el principio del crecimiento de la fiabilidad.
6. ¿Es garantía de que la fiabilidad mejorara en cada entrega después de corregir fallos? ¿Por qué?
SI, por que a medida que se descubren los fallos del sistema, los defectos subyacentes que provocan estos fallos son reparados para que la fiabilidad del sistema mejore durante las pruebas y depuración.
Aunque los defectos del software no siempre se reparan durante la depuración, y cuando se cambia un programa, a menudo se introducen nuevos defectos. La probabilidad de ocurrencia de estos defectos puede ser mayor que la probabilidad de ocurrencia del defecto que ha sido reparado. Por lo tanto, la fiabilidad del sistema a veces puede empeorar en una nueva entrega en lugar de mejorar.
Por lo tanto no es garantía
7. ¿Hasta cuando las pruebas y depuración deben continuar?
Las pruebas pueden detenerse cuando se alcance el nivel requerido de fiabilidad del sistema.
8. Ventajas de la predicción de la predicción a partir de un modelo
Planificación de las pruebas. Dado el calendario actual de pruebas, puede predecirse cuándo se completarán las pruebas. Si el final de las pruebas tiene lugar después de la fecha planificada de entrega del sistema, entonces puede tenerse que desplegar recursos adicionales para probar y depurar, y así acelerar la tasa de crecimiento de fiabilidad.
Negociaciones con el cliente. Algunas veces el modelo de fiabilidad muestra que el crecimiento de la fiabilidad es muy lento y que se requiere una cantidad de esfuerzo de pruebas desproporcionada para obtener un beneficio relativamente pequeño.
Puede merecer la pena renegociar los requerimientos de fiabilidad con el cliente. De forma alternativa, puede ocurrir que el modelo prediga que la fiabilidad requerida probablemente nunca será alcanzada. En este caso, se tendrán que renegociar con el cliente los requerimientos de la fiabilidad del sistema.
9. Tipos de revisiones propuestas por el autor para ser obligatorias y garantizar la seguridad de un sistema
1. revisión para corregir la función que se pretende;
2. revisión para una estructura comprensible y mantenible;
3. revisión para verificar que el algoritmo y el diseño de las estructuras de datos son consistentes con el comportamiento especificado;
4. revisión de la consistencia del código y del diseño del algoritmo y de las estructuras de datos;
5. revisión de la adecuación de los casos de prueba del sistema
10. En qué consiste la técnica más efectiva para demostrar la seguridad del sistema (contradicción)
La técnica más efectiva para demostrar la seguridad de un sistema es la demostración por contradicción. Se comienza suponiendo que se está en un estado no seguro, el cual ha sido identificado por un análisis de contingencias del sistema, y que puede ser alcanzado ejecutando el programa. Se describe un predicado que define este estado no seguro.
A continuación, se analiza el código de forma sistemática y se muestra que, para todos los caminos del programa que conducen a ese estado, la condición de terminación de estos caminos contradice el predicado no seguro.
Si éste es el caso, la suposición inicial de un estado inseguro es incorrecta.
Si se repite esto para todas las contingencias identificadas, entonces el software es seguro.
a. Ejemplo:
Como ejemplo, consideremos el código de la Figura 24.6, que podría ser parte de la implementación del sistema de suministro de insulina. Desarrollar un argumento de seguridad para este código implica demostrar que la dosis de insulina administrada nunca es mayor que algún nivel máximo establecido para cada individuo diabético. Por lo tanto, no es necesario probar que el sistema suministra la dosis correcta, sino simplemente que nunca suministra una sobredosis al paciente.
Para construir un argumento de seguridad, se identifica la precondición para el estado in- seguro que, en este caso, es que currentDose > maxDose. Después se demuestra que todos los caminos del programa conducen a una contradicción de esta aserción no segura. Si éste es el caso, la condición no segura no puede ser cierta. Por lo tanto, el sistema es seguro. Se pueden estructurar y presentar los argumentos de seguridad de forma gráfica tal y como se muestra en la Figura 24.7. Los argumentos de seguridad, según se refleja en la citada figura, son mucho más cortos que las verificaciones formales de sistemas. Primero se identifica todos los posibles caminos que conducen a! estado potencial mente inseguro. Se trabaja hacia atrás a partir de este estado no seguro y se considera la última asignación de todas las variables de estado en cada camino que conduce a él. Pueden omitirse los cálculos previos (como la sentencia if 1 en la Fi- gura 24.7) en el argumento de seguridad. En este ejemplo, todo lo que se necesita saber es el conjunto de posibles valores de currentDose inmediatamente antes de que el método administerlnsulin sea ejecutado. En el argumento de seguridad mostrado en la Figura 24.7, existen tres posibles caminos en el programa que conducen a la llamada al método administerlnsulin. Queremos demostrar que la cantidad de insulina suministrada nunca excede del valor de maxDose. Se consideran todos los posibles caminos hasta administerlnsulin:
Fuente: ingeniería del software lan Sommenville

Se preguntarán para que sirve una bitácora en en una Aplicación Web. Bueno les diré, es muy útil, ya que va guardando los movimientos de los usuarios y en caso de reclamo por parte de los usuarios de que el sistema que hemos desarrollado no funciona por que han perdido datos pero en realidad ellos los borraron por razones privadas, nosotros podremos defendernos con esta bitácora de movimientos que dirá a que hora se realizo cierta acción y quien la realizo ejemplo:
Como pueden ver se puede visualizar la acción realizada, el usuario al que se le hizo el cambio luego al usuario que realizo
el cambio, la fecha y hora en que se realizo la acción y valor anterior y el valor nuevo
A continuación les mostrare parte del código
Vista de la bitácora “bitacora.php”
<?php
function estado($edo){
if($edo==1){
return "Administrador";
}
else {
return "Usuario";
}
}
$eliminar = base_url()."imagenes/eliminar.fw.png";
$actualizar = base_url()."imagenes/modificar.png";
function estadoImg($edo){
$palomita = base_url()."imagenes/v.fw.png";
$x = base_url()."imagenes/eliminar.png";
if($edo==1){
return "<img src=".$palomita.">";
}
else{
return "<img src=".$x.">";
}
}
?>
<script type="text/javascript">
<!--
function confirmacion(id) {
var answer = confirm("Esta seguro que desea eliminar")
if (answer){
alert("Ha confirmado eliminar")
location.href="deleteUserId/"+id
}
else{
alert("Cancelado")
}
}
function actualizar(id) {
location.href="updateUserId/"+id
}
//-->
<?php echo $_SESSION['nombre'];?>
Bitacora
<div id="container">
<div id="body" align="center">
<table border="0" align="center">
<form id="b" name="b" action="index.php/welcome/buscarBitacora" method="POST"><label for="buscar">Buscar <input type= "text" id="buscar" name="buscar" > <input type="submit" id="arre" name="arre" value="buscar"
<table border="0" align="center" id="tabla">
<tr bgcolor="#7362ec" align="center">
Acción
Usuario administrado
Usuario administrador
Fecha
Valor Anterior
Valor nuevo
<?php
$colorfila=0;
if($users!=false){
foreach($users->result() as $row){
if ($colorfila==0){
$color= "#b5b5b5";
$colorfila=1;
}else{
$color="#f7f7f7";
$colorfila=0;
}
echo "<tr bgcolor='".$color."' align='center' ";?> onmouseover="this.style.backgroundColor='#E13300'"
onmouseout="this.style.backgroundColor=''"><?php
echo "".$row->accion." ";
echo "".$row->UsuarioAdministrado. " ";
echo "".$row->usuarioAdministrador." ";
echo "".$row->fecha." ";
echo "".$row->valor_anterior." ";
echo "".$row->valor_nuevo." ";
echo "";
}
}
?>
La parte del controlador “users.php”
//FUNCION GUARDAR BITACORA
public function guardarBitacora($id,$accion){
if(isset($_SESSION['usuario'])){
$datoAnterior="";
$datoNuevo="";
//Obteniendo los datos que se van a modificar
$nom_usu = $this->input->post('nom_usu');
$clave=sha1($this->input->post('psw'));
$login = $this->input->post('login');
$status = $this->input->post('status');
$acceso = $this->input->post('acceso');
$local = $this->input->post('local');
$ld_nacional = $this->input->post('ld_nacional');
$cel_ld = $this->input->post('cel_ld');
$cel_local = $this->input->post('cel_local');
$internacional = $this->input->post('internacional');
$br="
";
//Obterner los datos de la la base de datos
$datosDB=$this->usersModel->datosUsuario($id);
//Comparando login
if($login==@$datosDB->login){
$datoAnterior.="";
}
else{
$datoAnterior.="login:".$datosDB->login;
$datoNuevo.="login:".$login;
}
//Comparando nombre de usuario
if($nom_usu==$datosDB->nom_usu){
$datoAnterior.= "";
}
else{
$datoAnterior.=$br."nom_usu:".$datosDB->nom_usu;
$datoNuevo.=$br."login:".$nom_usu;
}
//Comparando nombre de password
if($clave==$datosDB->psw){
$datoAnterior.= "";
}
else{
$datoAnterior.=$br."psw:***";
$datoNuevo.=$br."login:???";
}
//Comparando status
if($status==$datosDB->status){
$datoAnterior.="";
}
else{
$datoAnterior.=$br."status:".$datosDB->status;
$datoNuevo.=$br."status:".$status;
}
//Comparando acceso
if($acceso==$datosDB->acceso){
$datoAnterior.="";
}
else{
$datoAnterior.=$br."acceso:".$datosDB->acceso;
$datoNuevo.=$br."acceso:".$acceso;
}
//Comparando llamadas locales
if($local==$datosDB->local){
$datoAnterior.="";
}
else{
$datoAnterior.=$br."local:".$datosDB->local;
$datoNuevo.=$br."local:".$local;
}
//Comparando llamadas nacionales
if($ld_nacional==$datosDB->ld_nacional){
$datoAnterior.="";
}
else{
$datoAnterior.=$br."ld_nacional:".$datosDB->ld_nacional;
$datoNuevo.=$br."ld_nacional:".$ld_nacional;
}
//Comparando llamadas cel_ld
if($cel_ld==$datosDB->cel_ld){
$datoAnterior.="";
}
else{
$datoAnterior.=$br."cel_ld:".$datosDB->cel_ld;
$datoNuevo.=$br."cel_ld:".$cel_ld;
}
//Comparando llamadas cel_local
if($cel_local==$datosDB->cel_local){
$datoAnterior.="";
}
else{
$datoAnterior.=$br."cel_local:".$datosDB->cel_local;
$datoNuevo.=$br."cel_local:".$cel_local;
}
if($internacional==$datosDB->internacional){
$datoAnterior.="";
}
else{
$datoAnterior.=$br."Internacional:".$datosDB->internacional;
$datoNuevo.=$br."internacional:".$internacional;
}
$dataBit = array(
"accion" => $accion,
"usuarioAdministrador" => $_SESSION["login"],
"usuarioAdministrado" => $login,
"valor_anterior" => $datoAnterior,
"valor_nuevo" => $datoNuevo
);
$this->usersModel->insertBitacora($dataBit);
}
}
Ahora la parte del modelo “usersmodels”
public function getBitacora(){
$data=$this->db->get('vistabitacora');
if($data->num_rows() >0){
return $data;
}else{
return false;
}
}
public function insertBitacora($data){
$this->db->insert('bitacora',$data);
}
function buscarBitacora($dato){
$this->db->select('accion');
$this->db->select('usuarioAdministrador');
$this->db->select('UsuarioAdministrado');
$this->db->select('valor_anterior');
$this->db->select('valor_nuevo');
$this->db->select('fecha');
$this->db->like('usuarioAdministrador',$dato);
$this->db->or_like('accion',$dato);
$this->db->or_like('usuarioAdministrado',$dato);
$this->db->or_like('valor_anterior',$dato);
$this->db->or_like('valor_nuevo',$dato);
$this->db->or_like('fecha',$dato);
$consul=$this->db->get('bitacora');
if($consul->num_rows() >0){
return $consul;
}else{
return false;
}
}
Archivo SQL
# SQL Manager 2010 for MySQL 4.5.1.3
# ---------------------------------------
# Host : localhost
# Port : 3306
# Database : asteriskcdrdb
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES latin1 */;
SET FOREIGN_KEY_CHECKS=0;
CREATE DATABASE `asteriskcdrdb`
CHARACTER SET 'latin1'
COLLATE 'latin1_swedish_ci';
USE `asteriskcdrdb`;
#
# Structure for the `bitacora` table :
#
CREATE TABLE `bitacora` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`accion` varchar(20) DEFAULT NULL,
`usuarioAdministrador` varchar(20) DEFAULT NULL,
`usuarioAdministrado` varchar(20) CHARACTER SET latin1 COLLATE latin1_spanish_ci NOT NULL,
`valor_anterior` varchar(200) DEFAULT NULL,
`valor_nuevo` varchar(200) DEFAULT NULL,
`fecha` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=48 DEFAULT CHARSET=latin1 COMMENT='id-int(11)naccion-varchar(20)nusuario-varchar(20)nfecha-datenhora-timenvalor_anterior-varchar(20)nvalor_nuevo-varchar(20)';
#
# Structure for the `cdr` table :
#
CREATE TABLE `cdr` (
`calldate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`clid` varchar(80) NOT NULL DEFAULT '',
`src` varchar(80) NOT NULL DEFAULT '',
`dst` varchar(80) NOT NULL DEFAULT '',
`dcontext` varchar(80) NOT NULL DEFAULT '',
`channel` varchar(80) NOT NULL DEFAULT '',
`dstchannel` varchar(80) NOT NULL DEFAULT '',
`lastapp` varchar(80) NOT NULL DEFAULT '',
`lastdata` varchar(80) NOT NULL DEFAULT '',
`duration` int(11) NOT NULL DEFAULT '0',
`billsec` int(11) NOT NULL DEFAULT '0',
`disposition` varchar(45) NOT NULL DEFAULT '',
`amaflags` int(11) NOT NULL DEFAULT '0',
`accountcode` varchar(20) NOT NULL DEFAULT '',
`uniqueid` varchar(32) NOT NULL DEFAULT '',
`userfield` varchar(255) NOT NULL DEFAULT '',
KEY `IDX_UNIQUEID` (`uniqueid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
#
# Structure for the `user_control` table :
#
CREATE TABLE `user_control` (
`id_usu` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
`status` int(1) unsigned NOT NULL DEFAULT '1',
`nom_usu` varchar(25) NOT NULL,
`login` varchar(4) NOT NULL DEFAULT '0000',
`psw` varchar(40) CHARACTER SET latin1 COLLATE latin1_spanish_ci NOT NULL,
`local` tinyint(4) NOT NULL DEFAULT '0',
`ld_nacional` tinyint(4) NOT NULL DEFAULT '0',
`cel_local` tinyint(4) NOT NULL DEFAULT '0',
`cel_ld` tinyint(4) NOT NULL DEFAULT '0',
`internacional` tinyint(4) NOT NULL DEFAULT '0',
`acceso` tinyint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`id_usu`),
UNIQUE KEY `login` (`login`)
) ENGINE=InnoDB AUTO_INCREMENT=47 DEFAULT CHARSET=utf8;
#
# Structure for the `usuarios` table :
#
CREATE TABLE `usuarios` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(20) DEFAULT NULL,
`password` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
#
# Data for the `bitacora` table (LIMIT 0,500)
#
INSERT INTO `bitacora` (`id`, `accion`, `usuarioAdministrador`, `usuarioAdministrado`, `valor_anterior`, `valor_nuevo`, `fecha`) VALUES
(1,'CerrarSesion','45','',NULL,NULL,'2012-11-02 19:06:35'),
(2,'Acceso','00','',NULL,NULL,'2012-11-02 19:09:07'),
(3,'Actualización','00','00','
acceso:1','
acceso:0','2012-11-02 19:09:41'),
(4,'CerrarSesion','00','',NULL,NULL,'2012-11-02 19:09:45'),
(5,'Acceso','00','',NULL,NULL,'2012-11-02 19:09:52'),
(6,'CerrarSesion','00','',NULL,NULL,'2012-11-02 19:12:31'),
(7,'Acceso','00','',NULL,NULL,'2012-11-02 19:12:40'),
(8,'CerrarSesion','00','',NULL,NULL,'2012-11-02 19:13:27'),
(9,'Acceso','00','',NULL,NULL,'2012-11-02 19:13:34'),
(10,'Acceso','05','',NULL,NULL,'2012-11-05 09:33:09'),
(11,'CerrarSesion','05','',NULL,NULL,'2012-11-05 09:37:14'),
(12,'Acceso','05','',NULL,NULL,'2012-11-05 09:38:30'),
(13,'Actualización','05','0','login:05
nom_usu:Julio Cesar
status:1
acceso:1
local:1','login:
login:
status:
acceso:
local:','2012-11-06 16:51:42'),
(14,'Cambio de contraseña','05','',NULL,NULL,'2012-11-06 16:55:18'),
(15,'CerrarSesion','05','',NULL,NULL,'2012-11-06 16:55:24'),
(16,'Acceso','00','',NULL,NULL,'2012-11-06 16:58:49'),
(17,'Actualización','00','05','','','2012-11-06 16:59:29'),
(18,'Actualización','00','05','
psw:***
local:0','
login:???
local:1','2012-11-06 17:01:56'),
(19,'Actualización','00','05','
local:0','
local:1','2012-11-06 17:03:18'),
(20,'CerrarSesion','00','',NULL,NULL,'2012-11-06 17:03:29'),
(21,'Acceso','05','',NULL,NULL,'2012-11-06 17:03:34'),
(22,'Cambio de contraseña','05','',NULL,NULL,'2012-11-06 17:03:49'),
(23,'CerrarSesion','05','',NULL,NULL,'2012-11-06 17:03:54'),
(24,'Acceso','05','',NULL,NULL,'2012-11-06 17:04:01'),
(25,'Acceso','05','',NULL,NULL,'2012-11-07 07:00:08'),
(26,'Registro','05','10','login:
nom_usu:
psw:***
status:
acceso:
local:','login:10
login:Chicho
login:???
status:1
acceso:0
local:1','2012-11-07 07:01:00'),
(27,'Registro','05','0','
psw:***','
login:???','2012-11-07 07:03:42'),
(28,'Cambio de contraseña','05','',NULL,NULL,'2012-11-07 07:05:35'),
(29,'Cambio de contraseña','05','43',NULL,NULL,'2012-11-07 07:08:16'),
(30,'CerrarSesion','05','',NULL,NULL,'2012-11-07 07:13:31'),
(31,'Acceso','05','',NULL,NULL,'2012-11-07 07:17:14'),
(32,'Eliminacion','05','40','id_usu:40
nom_usu:Felipe
acceso:1
status:1
local:0
ld_nacional:0
cel_local:0
cel_ld:0
intenacional:0',NULL,'2012-11-07 07:17:59'),
(33,'Actualización','05','01','login:05
psw:***
acceso:1
local:0','login:01
login:???
acceso:0
local:1','2012-11-07 07:23:14'),
(34,'Actualización','05','11','login:01
local:0','login:11
local:1','2012-11-07 07:23:57'),
(35,'Actualización','05','01','
psw:***
local:0','
login:???
local:1','2012-11-07 07:26:04'),
(36,'Registro','05','21',NULL,NULL,'2012-11-07 07:41:53'),
(37,'CerrarSesion','05','',NULL,NULL,'2012-11-07 07:42:07'),
(38,'Acceso','21','',NULL,NULL,'2012-11-07 07:42:16'),
(39,'Cambio de contraseña','21','',NULL,NULL,'2012-11-07 07:42:36'),
(40,'CerrarSesion','21','',NULL,NULL,'2012-11-07 07:42:48'),
(41,'Acceso','21','',NULL,NULL,'2012-11-07 07:42:56'),
(42,'CerrarSesion','21','',NULL,NULL,'2012-11-07 07:43:35'),
(43,'Acceso','10','',NULL,NULL,'2012-11-10 17:13:47'),
(44,'CerrarSesion','10','',NULL,NULL,'2012-11-10 17:13:55'),
(45,'Acceso','06','',NULL,NULL,'2012-11-10 17:15:15'),
(46,'CerrarSesion','06','',NULL,NULL,'2012-11-10 17:16:21'),
(47,'Acceso','06','',NULL,NULL,'2012-11-10 17:16:32');
COMMIT;
#
# Data for the `cdr` table (LIMIT 0,500)
#
INSERT INTO `cdr` (`calldate`, `clid`, `src`, `dst`, `dcontext`, `channel`, `dstchannel`, `lastapp`, `lastdata`, `duration`, `billsec`, `disposition`, `amaflags`, `accountcode`, `uniqueid`, `userfield`) VALUES
('2012-09-03 19:52:50','"Julian Garibaldi" ','100','100','from-internal','SIP/100-00000000','SIP/100-00000001','Dial','SIP/100,"",tr',10,5,'ANSWERED',3,'','1346723570.0',''),
('2012-09-04 13:28:33','"Julian Garibaldi" ','100','100','from-internal','SIP/100-00000001','SIP/100-00000002','Congestion','10',5,0,'FAILED',3,'','1346786913.1',''),
('2012-09-04 13:29:08','"Julian Garibaldi" ','100','100','from-internal','SIP/100-00000004','SIP/100-00000005','Dial','SIP/100,"",tr',24,22,'ANSWERED',3,'','1346786948.4',''),
('2012-09-04 13:33:52','"Julian Garibaldi" ','100','100','from-internal','SIP/100-00000006','SIP/100-00000007','Congestion','10',5,0,'FAILED',3,'','1346787232.6',''),
('2012-09-04 13:35:36','"Julian Garibaldi" ','100','100','from-internal','SIP/100-0000000d','SIP/100-0000000e','Dial','SIP/100,"",tr',16,8,'ANSWERED',3,'','1346787336.13',''),
('2012-09-04 14:13:33','"Recepcion" ','300','300','personalizado','SIP/300-0000000f','SIP/300-00000010','Hangup','',30,0,'NO ANSWER',3,'','1346789613.15',''),
('2012-09-04 14:14:08','"Recepcion" ','300','300','personalizado','SIP/300-00000011','SIP/300-00000012','Dial','SIP/300,30,Tt',28,25,'ANSWERED',3,'','1346789648.17',''),
('2012-09-04 14:18:24','"Recepcion" ','300','300','personalizado','SIP/300-00000013','SIP/300-00000014','Dial','SIP/300,30,Tt',4,0,'NO ANSWER',3,'','1346789904.19','');
COMMIT;
#
# Data for the `user_control` table (LIMIT 0,500)
#
INSERT INTO `user_control` (`id_usu`, `status`, `nom_usu`, `login`, `psw`, `local`, `ld_nacional`, `cel_local`, `cel_ld`, `internacional`, `acceso`) VALUES
(36,0,'kakaroto','45','da39a3ee5e6b4b0d3255bfef95601890afd80709',0,0,1,1,0,0),
(38,1,'Julio Cesar','01','7c4a8d09ca3762af61e59520943dc26494f8941b',0,0,0,0,0,0),
(39,1,'Julian Garibaldi','06','4f62e47bd66b5ab1a8fa1e9508d53ae78e7dcfac',0,1,1,1,1,1),
(41,1,'Chicho','10','4f62e47bd66b5ab1a8fa1e9508d53ae78e7dcfac',1,0,0,0,0,0),
(42,0,'0','0','da39a3ee5e6b4b0d3255bfef95601890afd80709',0,0,0,0,0,0),
(43,1,'diane','11','4f62e47bd66b5ab1a8fa1e9508d53ae78e7dcfac',1,0,0,0,0,0),
(45,1,'Mijail','43','4f62e47bd66b5ab1a8fa1e9508d53ae78e7dcfac',1,0,0,0,0,0),
(46,1,'xyz','21','dd5fef9c1c1da1394d6d34b248c51be2ad740840',1,0,0,0,0,0);
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

