Source of: guestbook.php



<?php
/*    @file guestbook.php
    @title Libro de visitas

    @version 1.0
    @date Agosto de 2006
    @lastdate 28 de noviembre, 2007

    @description Pagina principal del libro de visitas, permite previsualizar las firmas y firmar el libro.

    @author Javier Novoa C (Stitch, jstitch@gmail.com)

El código fuente de este sitio está sujeto a lo establecido en la licencia GPL de la FSF http://www.gnu.org/copyleft/gpl.html
Ver el archivo licencia.php para más detalles.
*/
//manejo de sesiones
session_start();
$_SESSION["debug"] = True;

//bibliotecas
$wd getcwd();
chdir("../");
include_once(
"lib/php/db.php");
include_once(
"lib/php/lib.php");
include_once(
"lib/php/html_mime_mail.php");
chdir($wd);
require_once(
'../lib/php/recaptchalib.php');
setlocale(LC_ALL"es_ES");

$WMEMAIL "torcasajuvwebmaster@gmail.com";

//e-mail address validation
$e "/^[-+\\.0-9=a-z_]+@([-0-9a-z]+\\.)+([0-9a-z]){2,4}$/i";

echo 
$_SESSION["uname"];

//Guardar firma en la BD
if (isset($_POST["sign"])) {
    if (!isset(
$_SESSION["debug"])) {
        
/***reCaptcha***/
        //Llave privada
        
$result query("SELECT value FROM sys_cparams WHERE name='private_key';",
                
"No se pudo acceder a la informacion de reCaptcha",
                
$dbhost$db_username$db_userpwd$database);
        
$line $result->fetch_assoc();
        
$privatekey $line["value"];
        
$resp recaptcha_check_answer ($privatekey,
                        
$_SERVER["REMOTE_ADDR"],
                        
$_POST["recaptcha_challenge_field"],
                        
$_POST["recaptcha_response_field"]);
        if (!
$resp->is_valid) {
            die (
"(reCAPTCHA said: " $resp->error ")\n" .
                
"<script language='javascript' type='text/javascript'>\n" .
                
"alert('El CAPTCHA no fue introducido correctamente. Regresa y vuelve a intentarlo.');\n" .
                
"window.history.back();\n" .
                
"</script>");
        }
    }
    
$tol false;
    
//Si hay un usuario dentro del sistema, lee sus datos para la firma nueva
    
if (isset($_SESSION["logged"])) {
        
$res query("SELECT id " .
                
"FROM sys_users " .
                
"WHERE user = '" $_SESSION["uname"] . "';",
                 
"No se pudo consultar datos de control del usuario",
                 
$dbhost$db_username$db_userpwd$database);
        
$lin $res->fetch_assoc();
        if (
$lin != FALSE) {
            
$tol true;
            
$usrid $lin["id"];
        }
    }

    
//Datos a guardar
    
$nombre substr(trim($_POST["nombre"]), 050);
    
$pweb substr(trim($_POST["pweb"]), 050);
    
$email substr(trim($_POST["email"]),50);
    
$signature str_replace("\r"""str_replace("\n""<br />"trim($_POST["signature"])));
    
$idusu = ($tol == true) ? $usrid : -1;
    
$ip $_SERVER["REMOTE_ADDR"];

    
//Seguro anti-spam: verifica de donde viene la fuente de la firma. Si no es del sitio de previsualizacion (en el dominio www.torcasajuv.com), lo rechaza
    //un cracker aun asi podria ponerse a escribir firmas desde el libro de visitas normal, pero no es funcional, y generalmente lo hacen desde afuera...
    
$security_domain "torcasajuv.com";
    
$url explode("/"$_SERVER["HTTP_REFERER"]);
    if (!isset(
$_SESSION["debug"]) && !preg_match("/(".$security_domain.")/"$url[2]) && !preg_match("/("."www." $security_domain.")/"$url[2])) {
        
println("No accediste de forma adecuada.");
        
println("Lo sentimos, no puedes escribir en este libro de visitas.");
        
println("Si este error no deber&iacute;a suceder, contacta con el webmaster...");
        
//Regresa a la pagina 1 del libro
        
print("<!--Libro de visitas. Queriendo acceder desde dominio invalido...-->");
        print(
"<meta http-equiv='refresh' content='5; url=guestbook.php?page=1'>");
        
println("Si tu navegador no regresa autom&aacute;ticamente, haz click <a href=\"guestbook.php?page=1\">aqu&iacute;</a>");
        exit();
    } else {
            
//Evita entradas con codigo malicioso
            
$isInTag 0;
        for (
$i 0$i strlen($signature); $i++) {
          if (
substr($signature$i1) == "<") {
            
$isInTag 1;
            continue;
          }
          if (
substr($signature$i1) == ">") {
            
$isInTag 0;
            continue;
          }
          if (
$isInTag == 1) {
            
$scriptTag substr(trim(substr(strtolower($signature), $i)), 06);
            
$metaTag substr(trim(substr(strtolower($signature), $i)), 04);
            if (
$scriptTag == "script" || $metaTag == "meta") {
              @
mail($WMEMAIL,
                
"Codigo malicioso en guestbook.php [signing]",
                
"Un usuario intento introducir codigo malicioso ($signature) al libro de visitas " .
                
"(durante la firma del libro en BD). IP: " .
                
$_SERVER["REMOTE_ADDR"] . " - " $_SERVER["REMOTE_HOST"] . ":" $_SERVER["REMOTE_PORT"] .
                
". " date("D, d/M/Y H:i:s"),
                
"torcasajuv.com");
              die(
"Entrada invalida! " .
              
"Intentaste introducir codigo invalido. " .
              
"Tus datos han sido registrados y transmitidos por email... " .
              
"(no crackers here please...)");
            }
          }
        }
        
//Inserta en la BD
        /* $result = query("INSERT INTO gb_guestbook " .
                    "SET id=DEFAULT" .
                    ", datetime=DEFAULT" .
                    ", auth_name='" . $nombre . "'" .
                    ", userid_auth=" . $idusu .
                    ", dir_ip='" . $ip . "'" .
                    ", url_referer='" . $_SERVER["HTTP_REFERER"] . "'" .
                    ", auth_email='" . $email . "'".
                    ", auth_url='" . $pweb . "'".
                    ", entrada='" . $signature . "'" .
                    ", hide='0';",
                "No se pudo insertar firma<br />Si este error no deber&iacute;a suceder, contacta con el webmaster...",
                $dbhost, $db_username, $db_userpwd, $database); */
        
println("<strong>Firma insertada en la base de datos.</strong>");

        
//Regresa a la pagina 1 del libro
        
print("<!--Libro de visitas. Insercion de mensaje hecha...-->");
        print(
"<meta http-equiv='refresh' content='0'; url=guestbook.php?page=1'>");
        
println("Si tu navegador no regresa autom&aacute;ticamente, haz click <a href=\"guestbook.php?page=1\">aqu&iacute;</a>");
        exit();
    }
} elseif(isset(
$_POST["firma"])) { //Previsualizacion de la firma
    //Seguro anti-spam: verifica de donde viene la fuente de la firma. Si no es del sitio de previsualizacion (en el dominio www.torcasajuv.com), lo rechaza
    //un cracker aun asi podria ponerse a escribir firmas desde el libro de visitas normal, pero no es funcional, y generalmente lo hacen desde afuera...
    
$security_domain "torcasajuv.com";
    
$url explode("/"$_SERVER["HTTP_REFERER"]);
    if (!isset(
$_SESSION["debug"]) && !preg_match("/(".$security_domain.")/"$url[2]) && !preg_match("/("."www." $security_domain.")/"$url[2])) {
      
println("No accediste de forma adecuada.");
      
println("Lo sentimos, no puedes escribir en este libro de visitas.");
      
println("Si este error no deber&iacute;a suceder, contacta con el webmaster...");
      
//Regresa a la pagina 1 del libro
      
print("<!--Libro de visitas. Queriendo acceder desde dominio invalido...-->");
      print(
"<meta http-equiv='refresh' content='5; url=guestbook.php?page=1'>");
      
println("Si tu navegador no regresa autom&aacute;ticamente, haz click <a href=\"guestbook.php?page=1\">aqu&iacute;</a>");
      exit();
    }
    
//Datos a previsualizar
    
$nombre $_POST["nombre"];
    
$pweb $_POST["pweb"];
    
$email $_POST["email"];
    
$signature str_replace("\r"""str_replace("\n""<br />"$_POST["signature"]));

    
//Puesto que la transmisión POST cambió una '\' por '\\', lo regresa a '\'
    
$signature str_replace("\\\\""\\"$signature);
    
//Puesto que la transimisión POST cambió una ' por \', lo regresa a '
    
$signature str_replace("\\'""'"$signature);
    
//Puesto que la transimisión POST cambió una " por \", lo regresa a "
    
$signature str_replace("\\\"""\""$signature);
    
//Quita espacios antes y despues de la firma
    
$signature trim($signature);
    
//Para texto dentro de un tag html, quita '\' y cambia ' por "
    //igualmente evita entradas con codigo malicioso
    
$isInTag 0;
    for (
$i 0$i strlen($signature); $i++) {
        if (
substr($signature$i1) == "<") {
            
$isInTag 1;
            continue;
        }
        if (
substr($signature$i1) == ">") {
            
$isInTag 0;
            continue;
        }
        if (
$isInTag == 1) {
                
$scriptTag substr(trim(substr(strtolower($signature), $i)), 06);
            
$metaTag substr(trim(substr(strtolower($signature), $i)), 04);
            if (
$scriptTag == "script" || $metaTag == "meta") {
              @
mail($WMEMAIL,
                
"Codigo malicioso en guestbook.php [previewing]",
                
"Un usuario intento introducir codigo malicioso ($signature) al libro de visitas " .
                
"(durante la validacion de la firma). IP: " .
                
$_SERVER["REMOTE_ADDR"] . " - " $_SERVER["REMOTE_HOST"] . ":" $_SERVER["REMOTE_PORT"] .
                
". " date("D, d/M/Y H:i:s"),
                
"torcasajuv.com");
              die(
"Entrada invalida! " .
                  
"Intentaste introducir codigo invalido. " .
                  
"Tus datos han sido registrados y transmitidos por email... " .
                  
"(no crackers here please...)");
            }
            if (
substr($signature$i1) == "\\") {
                
$signature substr_replace($signature""$i1);
            }
            if (
substr($signature$i1) == "'") {
                
$signature substr_replace($signature"\""$i1);
            }
        }
        
//POR AHORA, sustituye las ' por " en texto fuera de tags para que la previsualizacion salga
        
if (isInTag == 0) {
            if (
substr($signature$i1) == "'") {
                
$signature substr_replace($signature"\""$i1);
            }
        }
    }

    unset(
$_POST["firma"]);

    
//Si no hay nombre o mensaje, lo solicita y regresa, o si el email es invalido
    
if (($nombre == "") || ($signature == "") || ($email != "" && !preg_match($etrim($email)))) {
?>
<!--Error al intentar previsualizar el mensaje-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es">
<head>
    <title>Libro de visitas de la Casa de la Juventud</title>
</head>
<body style="background-image:url(../imagenes/utils/fondos/016.jpg); background-attachment:fixed;">
<?php
    
include('heading.html');
?>
    <hr />
    <p align='center' style='font-size:20px; font-family:verdana;'>
        <strong>LIBRO DE VISITAS</strong>
    </p>
    <script language='javascript' type='text/javascript'>
        alert('¡Debes escribir por lo menos tu nombre y un mensaje y si escribes una direccion de email debe ser valida!');
        window.history.back();
    </script>
</body>
</html>
<?php
    
} else { //Si hay nombre y mensaje validos...

        
$usrid = -1;
        
$tol false;
        
//Si hay un usuario dentro del sistema, lee sus datos para la firma nueva
        
if (isset($_SESSION["logged"])) {
            
$res query("SELECT usr.usrid AS uid, usr.nombre AS nom, usr.appat AS ap, usr.apmat AS am, " .
                        
"usr.nick AS nick, usr.foto AS foto, usr.genero AS gen, u.user AS uname " .
                    
"FROM sys_users u, usr_data usr " .
                    
"WHERE u.id = usr.usrId AND u.user = '" $_SESSION["uname"] . "';",
                     
"No se pudo consultar informacion del usuario",
                     
$dbhost$db_username$db_userpwd$database);
            
$lin $res->fetch_assoc();
            if (
$lin != FALSE) {
                
$tol true;
                
$usrname = ((isset($lin["nick"]) && $lin["nick"] != null && $lin["nick"] != "") ?
                        
$lin["nick"] :
                        
$lin["nom"] . " " $lin["ap"] . " " $lin["am"]);
                
$usrid $lin["uid"];
                
$usrfoto $lin["foto"];
                
$usruname $lin["uname"];
                
$usrgen $lin["gen"];
            }
        }
?>
<!--Previsualizacion del mensaje-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es">
<head>
    <title>Libro de visitas de la Casa de la Juventud</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    <link href="../css/style.css" rel="stylesheet" type="text/css" />
    <link rel="shortcut icon" href="../favicon.ico" />
    <script language="javascript" type="text/javascript" src="../lib/js/lib.js"></script>
    <script language="javascript" type="text/javascript">
        var RecaptchaOptions = {
           theme : 'blackglass',
           tabindex: 0
        };
    </script>
</head>

<body style="background-image:url(../imagenes/utils/fondos/016.jpg); background-attachment:fixed;">
    <div align='center' style='font-size:20px; font-family:verdana; font-weight:bold;'>
        Previsualizaci&oacute;n de <a class="yellow" onclick="javascript:popUp('../creditos.html','1');">tu</a> mensaje
    </div>
    <div align='justify' style='font-size:17px; font-family:verdana;'>
        <br />Presiona OK si tu mensaje es correcto, de lo contrario presiona Editar para volver a escribir tu mensaje.
    </div>
    <!--Tabla con el mensaje previsualizado-->
    <table align='center' style='font-size:15px; font-family:verdana;' width='85%'>
        <tr><td>
            <table style='font-size:15px; font-family:verdana;' width='100%'  border='1' cellpadding='7' cellspacing='1'>
            <tr>
                <td align='center' valign='top' style='background-color:#57708F;' width='5%'>
                    <font color="#FFFFFF">&nbsp;#&nbsp;</font>
                </td>
                <td width='95%'>
                    <a href="../torcasajuv.php?page=<?php echo ($usrid == -?
                                
"usr/comunity_index.php?portal=1\" title=\"ver perfiles en torcasa on line" :
                                
"usr/comunity_profile.php?un=" base64_encode($usruname) . "|portal=1") . "\" title=\"ver el perfil en torcasa on line"?>" target="_blank" style="text-decoration:none; font-size:x-small;">
<?php        if ($tol == true) { ?>
                        Ver perfil en <span class="torcasaonline">torcasa on line</span><br />
<?php            if ($usrfoto != null && $usrfoto != "") {
                
$img imagecreatefromstring(base64_decode($usrfoto));
?>
                        <!--object type="image/png" width="<?php echo imagesx($img); ?>" height="<?php echo imagesy($img); ?>" data="../lib/php/png_img_fromquery.php?q=<?php echo urlencode(base64_encode("SELECT foto FROM usr_data ud, sys_users u WHERE ud.usrId = u.id AND u.user = '" $usruname "';")); ?>" standby="cargando imagen..." style="float:left; margin:15px 15px 15px 15px"></object-->
                        <iframe width="<?php echo imagesx($img); ?>" height="<?php echo imagesy($img); ?>" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="../lib/php/png_img_fromquery.php?p=<?php echo urlencode(base64_encode("foto|usr_data ud, sys_users u|" $usruname)); ?>" style="float:left; margin:15px 15px 15px 15px;"></iframe>
<?php            } else { ?>
                        <img src="<?php echo ($usrgen == "../imagenes/utils/user_female.png" "../imagenes/utils/user_male.png"); ?>" alt="" title="" style="float:left; border-width:0px;" />
<?php            }
        } else {
?>
                        <img src="../imagenes/utils/question.png" alt="" title="" style="float:left; margin: 15px 15px 15px 15px; border-width:0px;" />
<?php        ?>
                    </a>
                    <font color="#404040">
                    Fecha: fecha y hora del mensaje...
<?php        if(($pweb != null) && ($pweb != "") && ($pweb != "http://")) { ?>
                    <br /><strong>P&aacute;gina web: </strong>
                    <a class="blue" href='<?php echo $pweb;?>' target='_blank'><?php echo $pweb;?></a>
<?php        ?>
                    <br /><br />Mensaje: <?php echo $signature;?>
                    <br /><br />Autor: <?php echo ($tol == true $usrname $nombre); ?>
<?php
        
if(($email != null) && ($email != "") && ($email != "@")) {
            
$demail explode("@"$email);
            
$diremail $demail[0];
            
$domemail $demail[1];
            for (
$j 2$j count($demail); $j++) {
                
$domemail .= "@" $demail[$j];
            }
?>
                    <br />E-mail:
                    <span id="em">&nbsp;</span><script language="javascript" type="text/javascript">
                        var showtag = "{ARROBA}";
                        var showname = "<?php echo $diremail;?>";
                        var showhost = "<?php echo $domemail;?>";
                        var showlink = showname + showtag + showhost;
                        printText('em', correoelDin(showtag, showname, showhost, '', showlink, 'blue'));
                    </script>
<?php        ?>
                    </font>
                </td>
            </tr>
            </table>
        </td></tr>
    </table>

    <!--Forma para boton OK, contiene los datos de la entrada nueva escondidos-->
    <div style="font-family:verdana; font-size:10px;">
        Captcha: escribe las dos palabras que a continuaci&oacute;n se observan en la imagen distorsionada, separadas por un espacio en blanco.
        <br />Si tienes dificultad para leerlas, presiona el bot&oacute;n de recarga.
        <br />Para personas con problemas visuales, es posible escuchar palabras (en ingl&eacute;s) en vez de leerlas, presionando el bot&oacute;n de la bocina.
        <br />Si se est&aacute; en modo de escuchar palabras, se puede regresar a ver im&aacute;genes de las mismas con el bot&oacute;n de la letra 'T'.
    </div>
    <p><form action='guestbook.php' method='post' enctype="multipart/form-data">
        <!--antiSpam Captcha-->
<?php    if (!isset($_SESSION["debug"])) {
    
/***reCaptcha***/
        //Llave publica
        
$result query("SELECT value FROM sys_cparams WHERE name='public_key';",
                
"No se pudo acceder a la informacion de reCaptcha",
                
$dbhost$db_username$db_userpwd$database);
        
$line $result->fetch_assoc();
        
$publickey $line["value"];
        echo 
recaptcha_get_html($publickey);
    }
?>
        <input type='hidden' name='nombre' value='<?php echo ($tol == true $usrname $nombre); ?>' />
        <input type='hidden' name='pweb' value='<?php echo $pweb;?>' />
        <input type='hidden' name='email' value='<?php echo $email;?>' />
        <input type='hidden' name='signature' value='<?php echo $signature;?>' />
        <input type='submit' value=' OK ' name='sign' />
    </form></p>
    <!--Boton para regresar a editar la entrada-->
    <input type='submit' value='Editar' onclick="window.history.back();" />
    <br /><br />
    <div style="font-family:verdana; font-size:10px;">
        <strong>&iquest;Por qu&eacute; un <em>captcha</em>?</strong>
        <br />Actualmente, el uso de formularios en internet es muy comun en p&aacute;ginas web para muchos usos: inscripciones a sitios o boletines, firmas en libros de visitas, entradas en foros, env&iacute;o de mensajes, entre muchos otros son los usos que se le dan com&uacute;nmente a los formularios para llenar informaci&oacute;n.
        <br />Desafortunadamente, por ello tambi&eacute;n es com&uacute;n el uso de programas malintencionados que abusen de los formularios para enviar informaci&oacute;n que no tiene otro prop&oacute;sito m&aacute;s que el de saturar la red con informaci&oacute;n perniciosa, ligas para auto-promoverse, y virus inform&aacute;ticos.
        <br />El <em>captcha</em> es una t&eacute;cnica desarrollada para evitar que estos programas utilicen formularios con malas intenciones, y que solamente sean llenados por seres humanos. Un captcha es una imagen, sonido u otra fuente de informaci&oacute;n digitalizada de tal manera que al verla (u oirla o lo que se haga con ella), solamente un ser humano pueda reconocer el o los patrones que el reto captcha presenta. Actualmente no existe tecnolog&iacute;a capaz de desarrollar un programa inform&aacute;tico que adivine un captcha por s&iacute; solo.
        <br />Utilizando captchas, se evita el spam, la creaci&oacute;n de perfiles cuyo due&ntilde;o es nadie, y el abuso de formularios de internet en general.
    </div>

</body>
</html>
<?php
    
}
} else { 
//Libro de visitas, visualizacion de los mensajes por paginas
    /*Variables de control de la vista del libro*/
    
$mess_page 10;    //numero de mensajes a mostrar por pagina
    
$part $_GET["page"];    //pagina a mostrar
    
if (($part == null) || (!is_numeric($part)) || ($part 1)) {
        
$part 1;
    }

    
//Cuenta cuantos mensajes iran en pantalla
    
$result query("SELECT id, datetime, auth_url AS pagweb, entrada, auth_name AS nombre, auth_email AS email, userid_auth " .
                
"FROM gb_guestbook WHERE hide=0 ORDER BY datetime DESC LIMIT " .
                (
$part 1) * $mess_page "," $mess_page ";",
            
"No se pudo consultar el libro de visitas",
            
$dbhost$db_username$db_userpwd$database);
    
$cuenta mysqli_num_rows($result);

    
/*Encabezado HTML*/
?>
<!--Libro de visitas de la Casa de la Juventud-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es">
<head>
    <title>Libro de visitas de la Casa de la Juventud</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    <link href="../css/style.css" rel="stylesheet" type="text/css" />
    <link rel="shortcut icon" href="../favicon.ico" />
    <script language="javascript" type="text/javascript" src="../lib/js/lib.js"></script>
    <script language="javascript" type="text/javascript" src="../lib/js/x_core.js"></script>
    <script language="javascript" type="text/javascript">
        var RecaptchaOptions = {
           theme : 'white'
        };
        //Validacion de campos del formulario
        function validaCampos() {
            //El campo nombre no puede estar vacio
            if (noVacio('nombre', 'El nombre no puede estar vacio') == false) {
                return false;
            }
            //El campo signature no puede estar vacio
            if (noVacio('signature', 'El mensaje no puede estar vacio') == false) {
                return false;
            }
            //El campo email, de estar no vacio, debe tener un formato correcto (tambien si se marca la casilla del checkbox)
            emailfld = document.getElementById('email');
            nbfld = document.getElementById('nb');
            if ((emailfld.value != null && emailfld.value != "") || nbfld.checked == true) {
                if (malEmail('email', 'El email tiene un formato incorrecto') == false) {
                    return false;
                }
            }

            return true;
        }
        function posiciona_imgs(lim) {
            var x = '';
            var y = '';
            for (var i = 0; i < lim; i++) {
                divfld = document.getElementById('div' + (i+1));
                if (divfld != null) {
                    xMoveTo('div' + (i+1),
                        xOffsetLeft('img' + (i+1), x) + 23,
                        xOffsetTop('img' + (i+1), y) + 39);
                }
            }
        }
    </script>
</head>

<body style="background-image:url(../imagenes/utils/fondos/016.jpg); background-attachment:fixed;" onresize="posiciona_imgs(<?php echo $cuenta?>, 23, 79);">

<?php
    
include('heading.html');

    
/*Cuerpo del libro de visitas*/
?>
    <!--Cuerpo del libro de visitas-->
    <hr />
    <p align="center" style="font-size:20px; font-family:verdana;">
        <a name="leelv"><strong>LIBRO DE VISITAS</strong></a>
    </p>
<?php
    
//Conexión a la BD
    //Cuenta el total de mensajes en el libro
    
$result query("SELECT COUNT(*) AS cuenta FROM gb_guestbook;",
            
"No se pudo contar la cantidad de regitros",
            
$dbhost$db_username$db_userpwd$database);
    
$line $result->fetch_assoc();
    
$tot_regs $line["cuenta"];
    
/**reCaptcha**/
    //Llave privada
    
$result query("SELECT value FROM sys_cparams WHERE name='private_key';",
            
"No se pudo acceder a la informacion de reCaptcha",
            
$dbhost$db_username$db_userpwd$database);
    
$line $result->fetch_assoc();
    
$mailhide_privkey $line["value"];
    
//Llave publica
    
$result query("SELECT value FROM sys_cparams WHERE name='public_key';",
            
"No se pudo acceder a la informacion de reCaptcha",
            
$dbhost$db_username$db_userpwd$database);
    
$line $result->fetch_assoc();
    
$mailhide_pubkey $line["value"];
?>
    <!--Ligas a siguiente y anterior paginas del libro, si procede-->
    <p align='center' style='font-size:20px; font-family:verdana;'>
<?php    if ($part 1) { ?>
        <a class="blue" href='guestbook.php?page=<?php echo ($part 1);?>#leelv'>&lt;&lt; Atr&aacute;s</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<?php    } if (($part $mess_page) < $tot_regs) { ?>
        <a class="blue" href='guestbook.php?page=<?php echo ($part 1);?>#leelv'>Siguiente &gt;&gt;</a>
<?php    ?>
    </p>

<?php
    
//Query para leer los mensajes de acuerdo a la pagina en que nos encontremos
    
$result query("SELECT id, datetime, auth_url AS pagweb, entrada, auth_name AS nombre, auth_email AS email, userid_auth " .
                
"FROM gb_guestbook WHERE hide=0 ORDER BY datetime DESC LIMIT " .
                (
$part 1) * $mess_page "," $mess_page ";",
            
"No se pudo consultar el libro de visitas",
            
$dbhost$db_username$db_userpwd$database);
    for (
$i 0; ($line $result->fetch_assoc()) && ($i $cuenta); $i++) {
        
//Datos de la firma leida
        
$timestamp strftime("%d de %B de %Y, %T"strtotime($line["datetime"]));
        
$website $line["pagweb"];
        
$message $line["entrada"];
        
$author $line["nombre"];
        
$id $line["id"];
        
$usrid $line["userid_auth"];
        
$email explode("@"$line["email"]);
        
$diremail $email[0];
        
$domemail str_replace(".""{PUNTO}"$email[1]);
        for (
$j 2$j count($email); $j++) {
            
$domemail .= "{ARROBA}" str_replace(".""{PUNTO}"$email[$j]);
        }

        
//Si existe perfil de usuario del autor de la firma, enlaza con su perfil
        
if ($usrid != -1) {
            
$res query("SELECT u.user AS user, usr.foto AS foto, usr.genero AS gen, usr.isInfoPrivate AS dpriv " .
                    
"FROM sys_users u, usr_data usr " .
                    
"WHERE u.id = usr.usrId AND u.id = '" $usrid "';",
                     
"No se pudo obtener la info. del perfil de usuario",
                     
$dbhost$db_username$db_userpwd$database);
            
$lin $res->fetch_assoc();
            
$uname $lin["user"];
            
$foto $lin["foto"];
            
$genero $lin["gen"];
            
$dpriv $lin["dpriv"];

            
//Busca roles del perfil dado...
            
$res query("SELECT r.role AS role " .
                    
"FROM sys_roles r, sys_users u, sys_usersroles ur " .
                    
"WHERE u.id = ur.userid AND ur.roleid = r.id AND u.user = '" $uname "';",
                     
"Error al determinar el rol del perfil!!!<br />Comun&iacute;cate con el webmaster para resolver este problema.",
                     
$dbhost$db_username$db_userpwd$database);
            
//Determina si el perfil es de administrador
            
$isadmin false;
            while ((
$lin=$res->fetch_assoc()) != FALSE) {
                if (
$lin["role"] == "admin") {
                    
$isadmin true;
                    break;
                }
            }
        }

        
$tol false;
        
//Si hay un usuario dentro del sistema, lee sus datos para la firma nueva que podria escribir
        
if (isset($_SESSION["logged"])) {
            
$res query("SELECT usr.nombre AS nom, usr.appat AS ap, usr.apmat AS am, " .
                        
"usr.nick AS nick, usr.email AS email, usr.url AS url " .
                    
"FROM sys_users u, usr_data usr " .
                    
"WHERE u.id = usr.usrId AND u.user = '" $_SESSION["uname"] . "';",
                     
"No se pudo consultar informacion del usuario",
                     
$dbhost$db_username$db_userpwd$database);
            
$lin $res->fetch_assoc();
            if (
$lin != FALSE) {
                
$tol true;
                
$usremail $lin["email"];
                
$usrurl $lin["url"];
                
$usrname = ((isset($lin["nick"]) && $lin["nick"] != null && $lin["nick"] != "") ?
                        
$lin["nick"] :
                        
$lin["nom"] . " " $lin["ap"] . " " $lin["am"]);
            }
        }
?>
    <!--Tabla con todos los mensajes del libro-->
    <table align='center' style='font-size:15px; font-family:verdana;' width='85%'>
    <tr><td>
        <!--Cada mensaje queda dentro de su propia tabla-->
        <table style='font-size:15px; font-family:verdana;' width='100%'  border='1' cellpadding='7' cellspacing='1'>
        <tr><td width='5%' align='center' valign='top' style='background-color:#57708F;'>
            <font color="#ffffff">
            &nbsp;<?php echo ($tot_regs - ($part 1) * $mess_page $i);?>&nbsp;
            </font>
        </td>
        <td id="img<?php echo ($i 1); ?>" width='95%' style="position:relative;">
            <a href="../torcasajuv.php?page=<?php echo ($usrid == -||
                    (
$isadmin &&
                        (!isset(
$_SESSION["logged"]) || $_SESSION["logged"] == "user") && $dpriv == 1) ?
                                
"usr/comunity_index.php?portal=1\" title=\"ver perfiles en torcasa on line" :
                                
"usr/comunity_profile.php?un=" base64_encode($uname) . "|portal=1") . "\" title=\"ver el perfil en torcasa on line"?>" target="_blank" style="text-decoration:none; font-size:x-small;">
<?php        if ($usrid != -1) { ?>
                Ver perfil en <span class="torcasaonline">torcasa on line</span><br />
<?php            if ($foto != null && $foto != "" &&
                    (!
$isadmin ||
                        (
$isadmin &&
                            (
$dpriv == ||
                                (isset(
$_SESSION["logged"]) && $_SESSION["logged"] != "user"))))) {
                
$img imagecreatefromstring(base64_decode($foto));
?>
                <!--object type="image/png" width="<?php echo imagesx($img); ?>" height="<?php echo imagesy($img); ?>" data="../lib/php/png_img_fromquery.php?q=<?php echo urlencode(base64_encode("SELECT foto FROM usr_data ud, sys_users u WHERE ud.usrId = u.id AND u.user = '" $uname "';")); ?>" standby="cargando imagen..." style="float:left; margin:15px 15px 15px 15px"></object-->
                <iframe width="<?php echo imagesx($img); ?>" height="<?php echo imagesy($img); ?>" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="../lib/php/png_img_fromquery.php?p=<?php echo urlencode(base64_encode("foto|usr_data ud, sys_users u|" $uname)); ?>" style="float:left; margin:15px 15px 15px 15px;" style="position:relative;"></iframe>
                <div id="div<?php echo ($i 1); ?>" style="position:absolute; background-color:transparent; width:<?php echo imagesx($img); ?>px; height: <?php echo imagesy($img); ?>px; top:0; left:0;"></div>
<?php            } else { ?>
                <img src="<?php echo ($genero == "../imagenes/utils/user_female.png" "../imagenes/utils/user_male.png"); ?>" alt="" title="" style="float:left; border-width:0px;" />
<?php            }
        } else {
?>
                <img src="../imagenes/utils/question.png" alt="" title="" style="float:left; margin: 15px 15px 15px 15px; border-width:0px;" />
<?php        ?>
            </a>
            <font color="#404040">
            Fecha: <?php echo $timestamp;?>
<?php        
if (($website != null) && ($website != "") && ($website != "http://")) { ?>
            <br /><strong>P&aacute;gina web: </strong>
            <a class="blue" href='<?php echo $website;?>' target='_blank'><?php echo $website;?></a>
<?php        ?>
            <br /><br />Mensaje: <?php echo $message;?>
            <br /><br />Autor: <?php echo $author;?>
<?php        
if(($line["email"] != null) && ($line["email"] != "") && ($line["email"] != "@")) {?>
            <br />E-mail:
<?php
//            echo recaptcha_mailhide_html ($mailhide_pubkey, $mailhide_privkey, $line["email"])."<br />";
?>
            <span id="em<?php echo $i?>">&nbsp;</span><script language="javascript" type="text/javascript">
                var showtag = "{ARROBA}";
                var showname = "<?php echo $diremail;?>";
                var showhost = "<?php echo $domemail;?>";
                var showlink = showname + showtag + showhost;
                printText('em<?php echo $i?>', correoelDin(showtag, showname, showhost, '', showlink, 'blue'));
            </script>
<?php        ?>
            </font>
        </td></tr>
        </table>
    </td></tr>
    <tr><td>&nbsp;</td></tr>
    </table>
<?php    ?>

    <!--Ligas a siguiente y anterior paginas del libro, si procede-->
    <p align='center' style='font-size:20px; font-family:verdana;'>
<?php    if ($part 1) { ?>
        <a class="blue" href='guestbook.php?page=<?php echo ($part 1);?>#leelv'>&lt;&lt; Atr&aacute;s</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<?php    } if (($part $mess_page) < $tot_regs) { ?>
        <a class="blue" href='guestbook.php?page=<?php echo ($part 1);?>#leelv'>Siguiente &gt;&gt;</a>
<?php    ?>
    </p>
    <!--Termina cuerpo del libro de visitas-->

    <!--Forma para agregar firma nueva-->
    <hr />
    <p align="center" style="font-size:20px; font-family:verdana;">
        <a name="firmalv"><strong>FIRMA EL LIBRO DE VISITAS</strong></a>
    </p>
<?php    if ($tol == true) { ?>
    <p style="text-align:left; font-size:12px; font-family:verdana;">
        Como parte de <a href="javascript:void(0);" onclick="window.open('../torcasajuv.php?page=usr/comunity_index.php?portal=1');" style="text-decoration:none;"><span class="torcasaonline">torcasa on line</span></a>, algunos campos se llenaron autom&aacute;ticamente para ti. Puedes editar el email y la p&aacute;gina web, pero no tu nombre. Tu foto aparacer&aacute; tambi&eacute;n junto a la firma que dejes.
    </p>
<?php    ?>
    <!-- form action="guestbook.php" method="post" name="signgb" id="signgb" enctype="multipart/form-data" onsubmit="return 
validaCampos();">
        <table align="center" width="60%" bgcolor="#57708F" style="font-size:15px; font-family:verdana;">
            <tr>
                <td width="10%"><strong>Nombre:</strong></td>
                <td width="80%"><input type="text" name="nombre" id="nombre" size="40%" maxlength="50"<?php echo ($tol == true " value=\"" $usrname "\" readonly=\"readonly\""""); ?> /></td>
            </tr>
            <tr>
                <td width="10%" valign="top"><strong>Mensaje:</strong></td>
                <td width="80%"><textarea name="signature" id="signature" rows="10" cols="50"></textarea></td>
            </tr>
            <tr>
                <td width="10%"><strong>E-mail:</strong></td>
                <td width="80%"><input type="text" name="email" id="email" size="30%" maxlength="50"<?php echo ($tol == true " value=\"" $usremail "\"" ""); ?> /></td>
            </tr>
            <tr>
                <td width="10%"><strong>P&aacute;gina web:</strong></td>
                <td width="80%"><input type="text" name="pweb" id="pweb" size="40%" maxlength="50" value="<?php echo ($tol == true $usrurl "http://"); ?>" /></td>
            </tr>
            <tr><td>&nbsp;</td></tr>
            <tr>
                <td align="right"><input type="submit" name="firma" id="firma" value="Firmar" /></td>
                <td align="left"><input type="reset" value="Borrar" /></td>
            </tr>
        </table>
    </form -->
    <!--Termina forma para agregar firma nueva-->

    <div id="foot" align="center">
        <table><tr><td></td><td style="background-color:gray">
        <object data="<?php echo ((strpos($_SERVER['HTTP_USER_AGENT'], 'Linux') !== false) ? "" "../container.swf?path="); ?>../imagenes/flash/animated/direccion.swf"
            type="application/x-shockwave-flash"
            width="395" height="108">
            <param name="movie" value="<?php echo ((strpos($_SERVER['HTTP_USER_AGENT'], 'Linux') !== false) ? "" "../container.swf?path="); ?>../imagenes/flash/animated/direccion.swf" />
            <param name="quality" value="high" />
<?php if (strpos($_SERVER['HTTP_USER_AGENT'], 'Linux') == false) { ?>
            <param name="wmode" value="transparent" />
<?php ?>
        </object>
        </td><td></td></tr></table>
    </div>

    <table style="font-size:small; font-family:verdana;" width="100%">
        <tr>
            <td align="left">
                <a class="blue" href="admingb.php">Administraci&oacute;n</a>
            </td>
            <td align="right">
                Derechos reservados, Casa de la Juventud T.O.R., 2006 - <span id="cranyo">&nbsp;</span>
                <script language="javascript" type="text/javascript">
                    printText('cranyo', actualAnyo());
                </script>
            </td>
        </tr>
    </table>
<?php    include ('foot.html'); ?>

    <script language="javascript" type="text/javascript">
        var x = '';
        var y = '';
        for (var i = 0; i < <?php echo $cuenta?>; i++) {
            divfld = document.getElementById('div' + (i+1));
            if (divfld != null) {
                xMoveTo('div' + (i+1),
                    xOffsetLeft('img' + (i+1), x) + 23,
                    xOffsetTop('img' + (i+1), y) + 39);
            }
        }
    </script>

<?php include_once("../analyticstracking.php"); ?>
</body>
</html>

<?php ?>

<!--    @file guestbook.php
    @title Libro de visitas

    @version 1.0
    @date Agosto de 2006
    @lastdate 28 de noviembre, 2007

    @description Pagina principal del libro de visitas
-->