Buenas tardes, estoy trabajando con un script PHP que le manda variables XML a un script JavaScript, el cual actualiza un HTML, la cuestión es que quiero hacer una modificación en el primero, pero si le muevo algo ya no se me actualiza el HTML, lo que quiero hacer es poner una función "mail()" en el primero, pero si la pongo o la mando a llamar ya no funciona la actulización automática, por favor ayuda...A continuación pongo lo script's para ver si alguién me podría ayudar dieciendome que hago mal...
Código PHP:
<?php
header("Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" );
header("Content-Type: text/xml; charset=utf-8");
header("Cache-Control: no-cache, must-revalidate" );
header("Pragma: no-cache" );
require('basededatos.php');
$xml = '<?xml version="1.0" ?><root>';
$last = (isset($_GET['last']) && $_GET['last'] != '') ? $_GET['last'] : 0;
$limit = '';
if ($last == 0 || $last == '0') {
$numlogs = mysql_query("SELECT seq FROM logs WHERE seq > " . $last);
$numlogs = mysql_num_rows($numlogs);
$logsamostrar = 1;
if ($numlogs > $logsamostrar) {
$limit = " LIMIT " . ($numlogs - $logsamostrar) . ', ' . $logsamostrar;
}
}
$sql = "SELECT seq,msg FROM logs WHERE seq > " . $last . $limit;
$resultado = mysql_query($sql);
$mensaje = mysql_fetch_row($resultado);
$cadena = $mensaje[1];
//Aquí realizo la obteción de los valores de las variables que envío, no lo puse para no poner tanto código...
$message_query = db_query($sql);
while($message_array = db_fetch_array($message_query)) {
$xml .= '<message id="' . $message_array['seq'] . '">';
$xml .= '<seq>' .htmlspecialchars($message_array['seq']) . '</seq>';
$xml .= '<host>' .htmlspecialchars($nombre) . '</host>';
$xml .= '<priority>' .htmlspecialchars($prioridad) . '</priority>';
$xml .= '<date>' .htmlspecialchars($fecha) . '</date>';
$xml .= '<time>' .htmlspecialchars($hora) . '</time>';
$xml .= '<id>' .htmlspecialchars($id) . '</id>';
$xml .= '<src>' .htmlspecialchars($fuente) . '</src>';
$xml .= '<interface>' . htmlspecialchars($interface) . '</interface>';
$xml .= '<interfaced>' .htmlspecialchars($interfaced) . '</interfaced>';
$xml .= '<dst>' .htmlspecialchars($dst) . '</dst>';
$xml .= '</message>';
}
$xml .= '</root>';
echo $xml;
$sql2 = mysql_query("SELECT seq FROM logs");
$logs = mysql_num_rows($sql2);
if(($last != 0 || $last != '0') && $logs > $_GET['last'] && $_GET['last'] != ''){
$query = "SELECT email,alerta,intrusion,virus,aweb,vtrafico,bloq,caida,vpncaida,sesiones,severidad".
" FROM config WHERE seq=1 ";
$config = mysql_query($query);
$salida = mysql_fetch_row($config);
if($salida[1]=="eventos"){
mailer(); //*********Si mando a llamar aqui la función "mailer()" ya no me actuliza el html. Aquí es mi problema.
}elseif($salida[1]=="severidad"){
}
//Inserción a logsfg
$inserta = "INSERT INTO logsfg (nombre,prioridad,fecha,hora,idlog,fuente,ifuente,destino,idestino,mensaje)".
" VALUES ('$nombre','$prioridad','$fecha','$hora','$id','$fuente','$interface','$dst','$interfaced','$cadena')";
$resultado = mysql_query($inserta);
//Termina Inserción a logsfg
}
function mailer(){
$nombre = "Yo";
$mail = "algún mail";
$empresa = "yo Corp";
$mensaje = "...";
$header = 'From: ' . $mail . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";
$mensaje = "Este mensaje fue enviado por " . $nombre . ", de la empresa " . $empresa . " \r\n";
$mensaje .= "Su e-mail es: " . $mail . " \r\n";
$mensaje .= "Mensaje: " .$mensaje." \r\n";
$mensaje .= "Enviado el " . date('d/m/Y', time());
$para = 'algun otro mail';
$asunto = 'Sistema de Análisis de Eventos';
mail($para, $asunto, utf8_decode($mensaje), $header);
}
?>
Este es el JavaScript que recibe las variables.
Código HTML:
var sendReq = getXmlHttpRequestObject();
var receiveReq = getXmlHttpRequestObject();
var sendDat = getXmlHttpRequestObject();
var lastMessage = 0;
var mTimer;
//Función para inicializar la página.
function startSOC() {
//Iniciar recibiendo Logs.
getLogs();
}
//Obtener los objetos XmlHttpRequest especificos del navegador.
function getXmlHttpRequestObject() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else if(window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP");
} else {
document.getElementById('estado').innerHTML = 'No se puede crear el objeto XmlHttpRequest.';
}
}
function getLogs() {
receiveReq.open("GET", 'getLogs.php?logs=1&last=' + lastMessage, true);
receiveReq.onreadystatechange = ReceiveLogs;
receiveReq.send(null);
}
//Funcion para obtener los mensajes de logs.
function ReceiveLogs() {
var logs_div = document.getElementById('div_logs');
var xmldoc = receiveReq.responseXML;
var message_nodes = xmldoc.getElementsByTagName("message");
var n_messages = message_nodes.length
for (i = 0; i < n_messages; i++) {
var seq_node = message_nodes[i].getElementsByTagName("seq");
var host_node = message_nodes[i].getElementsByTagName("host");
var priority_node = message_nodes[i].getElementsByTagName("priority");
var date_node = message_nodes[i].getElementsByTagName("date");
var time_node = message_nodes[i].getElementsByTagName("time");
var id_node = message_nodes[i].getElementsByTagName("id");
var src_node = message_nodes[i].getElementsByTagName("src");
var interface_node = message_nodes[i].getElementsByTagName("interface");
var interfaced_node = message_nodes[i].getElementsByTagName("interfaced");
var dst_node = message_nodes[i].getElementsByTagName("dst");
var seq = seq_node[0].firstChild.nodeValue;
//Inserta el valor de los nodos en logs_div
logs_div.innerHTML += "<div id='host'>" + host_node[0].firstChild.nodeValue + "</div>";
//Selección de color para el campo Prioridad
switch(priority_node[0].firstChild.nodeValue){
case 'emergency':
logs_div.innerHTML += "<div id='priority1'>Emergencia</div>";
break;
case 'alert':
logs_div.innerHTML += "<div id='priority2'>Alerta</div>";
break;
case 'critical':
logs_div.innerHTML += "<div id='priority3'>Critico</div>";
break;
case 'error':
logs_div.innerHTML += "<div id='priority4'>Eror</div>";
break;
case 'warning':
logs_div.innerHTML += "<div id='priority5'>Advertencia</div>";
break;
case 'notice':
logs_div.innerHTML += "<div id='priority6'>Notificación</div>";
break;
case 'information':
logs_div.innerHTML += "<div id='priority7'>Información</div>";
break;
case 'debug':
logs_div.innerHTML += "<div id='priority8'>Depuración</div>";
break;
}
logs_div.innerHTML += "<div id='date'>" + date_node[0].firstChild.nodeValue + "</div>";
logs_div.innerHTML += "<div id='time'>" + time_node[0].firstChild.nodeValue + "</div>";
logs_div.innerHTML += "<div id='id'>" + id_node[0].firstChild.nodeValue + "</div>";
logs_div.innerHTML += "<div id='src'>" + src_node[0].firstChild.nodeValue + "</div>";
logs_div.innerHTML += "<div id='interface'>" + interface_node[0].firstChild.nodeValue + "</div>";
logs_div.innerHTML += "<div id='interfaced'>" + interfaced_node[0].firstChild.nodeValue + "</div>";
logs_div.innerHTML += "<div id='dst'>" + dst_node[0].firstChild.nodeValue + "</div>";
logs_div.innerHTML += "<div id='mensaje'><a href='javascript:mensaje(" + seq + ")'>Mensaje</a></div><br>";
logs_div.scrollTop = logs_div.scrollHeight;
lastMessage = (message_nodes[i].getAttribute('id'));
}
mTimer = setTimeout('getLogs();',1000); //Verifica cambios en la base de datos cada segundo.
}
function mensaje(seq){
window.open('mensaje.php?seq='+seq+'&action=monitoreo','mensaje','width=550,height=425,left=230,top=50','target=Mensaje');
}