elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Temas
Páginas: 1 2 3 4 [5] 6 7 8 9
41  Programación / Desarrollo Web / [Resuelto] Imágenes en fila alineadas en: 13 Septiembre 2015, 18:29 pm
Hola,

Quisiera en una sección de un página,

poner una ristra de imágenes, todas con el mismo tamaño, que modificaré a modo de productos, pero el link no será a productos sino a web donde hay opiniones.

La cuestión es que no sé cómo hacerlo para poner 5 imágenes por linea (en total habrá 25) sin que el article se escojone...he probado poniendo en el css de servicio1 min-height, max heigth etc.

Alguien puede echarme un cable sobre cómo podría hacerlo (por dar una pista) . Lo que trato es que mi web se vea como la parte de donde pone Cartelera España de filmaffinity.

Entiendo que esto no se hace con un table (¿Con un div? y como le digo que  nunca pierda la alineación de las imágenes y el tamño?


http://www.filmaffinity.com/es/main.html

La estructura de mi pagina es:

Código
  1.  
  2. <section id="contenido">
  3. <section id="Merc">
  4.  
  5.  
  6. <article id="servicio1">
  7.  
  8. Aquí iría la imgen 1 ( la idea es poner 5por cada fila)
  9.  
  10.  
  11. </article>
  12.  
  13.  
  14.  
  15.  

42  Programación / PHP / Enviar un mail función en: 6 Septiembre 2015, 23:06 pm
Hola,

Quisiera que cada día (mi página web) para los "socios" en un club en su cumple les enviara un mail de Feliz cumple.

En la ficha tabla de asociados tengo la fecha de nacimiento:

Se podría "subir" al hosting una función de tipo "cada día revisa la fecha de "asociados" y si el día y el mes coincíden, envia este mail: y utilizar la función mail de php saliente.

¿O tendría que ejecutar la hoja php todos los días?

Muchas Gracias.

A ver si me podeis ayudar.
43  Programación / Bases de Datos / Inner join y resultados de una tercera tabla en: 6 Septiembre 2015, 19:51 pm
He creado un left join de dos tablas, la cuestión es que de los resultado de la consulta donde hago esta unión en una misma tabla quisiera mostrar para todos los resultados de esta consulta una consulta adicional con la tabla 3. Pero es un jaleo. No hay algún manual sencillo con ejemplos sencillos para saber cuando hago un left join junto con otro left join o inner join de tres tablas y qué cosas que coge y qué cosas no.?

Las tres tablas tienen un elemento común (el tema es que al hacer un where y un and no lo hace de la forma que quiero.

Muuuuuuuuuchas Gracias.
44  Programación / PHP / Usuario de sesión en: 4 Septiembre 2015, 22:30 pm
Hola tengo un usuario de sesión

Código
  1. '".$_SESSION['uid']."'

Que es el id_user de mi tabla users. Es esta misma tabla hay otro campo llamado nomuser

La cuestión es que quiero buscando el que
Código
  1. id_user='".$_SESSION['uid']."'

utilizar en varias consultas el nomuser, diciendo $prof=nomuser  (y que se pueda utilizar en otros select) ¿Cómo puedo decirle busca y en tabla user 
Código
  1. id_user='".$_SESSION['uid']."'
y fíjame para este código php que $prof=nomuser where 
Código
  1. id_user='".$_SESSION['uid']."'

Dios que mal me explico jeje.

Lo intento hacer con un while y mysql query pero nada...no lo consigo.

45  Programación / PHP / última fecha, registros que no aparecen y contar registros en: 3 Septiembre 2015, 22:18 pm
Hola,

Tengo una tabla "ofclase" (donde está el listado de todas las clases  que visitan los usuarios).

Y en la tabla "registrovisitas" hay unos campos con cada usuario que ha insertado su fecha de visita  y la ofi que ha ido.

De esta forma en "ofclase" hay 100 ofi y en registrovisitas hay 70 ofi. cuando ejecuto esto resulta que me saca las 70 pero no me muestra "las 30 que no he visitado y que no están en registro de visitas y sí en ofclase)" Cómo podría hacer que también apareciese en ofclase.

 


Código
  1.  
  2. $busqueda2=mysql_query("SELECT c.ofi, a.fechavisita, a.id_usuario FROM registrovisitas a inner join  ofclase c
  3.  
  4.      ON a.ofi = c.ofi
  5.  
  6.  WHERE id_usuario='".$_SESSION['uid']."'
  7.  
  8.    group by c.ofi
  9.  
  10.   ") ;
  11.  


Luego hago un while y saco los datos en una tabla.

Hay otra cuestión si varios usuarios han visitado la misma ofi

¿cómo podría decir que me cogiera la fecha más alta (más cercana a hoy? ¿Con max¿?

Y para contar los registros debería utilizar count


Yo estoy mostrando los registros con algo

Código
  1. echo "<td>".$consulta2['0']."</td>";
  2.  


¿Debería hacer?

Código
  1. echo "<td>".count($consulta2['0'])."</td>";
  2.  

A ver si podeis ayudarme.

Muchas Gracias por adelantado.



Venga echarme una mano, y no al cuello...jejej.

Muchas Gracias, no consigo saber cómo hacerlo.

Mod: No hacer triple post.
46  Programación / PHP / [Resuelto] Orden de un string en: 2 Septiembre 2015, 21:04 pm
Hola estoy intentando ordenar unas fechas (convertidas por un string) pero no sé por qué no me las ordena bien...

He probado lo siguiente

Código
  1.  
  2. $consulta=mysql_query("SELECT `id_registro`, `id_usuario`, `fechavisita` , `oficina`, `conte` FROM `registrovisit` WHERE id_usuario = '$delma' ORDER BY STR_TO_DATE(fechavisita, 'YYYY/mm/dd') ASC ");
  3.  
  4.  

He probado así, con strg to date

Código
  1.  
  2. STR_TO_DATE(fechavisita, 'dd/mm/YYYY') ASC ");
  3.  
  4.  

Con

Código
  1.  
  2. STR_TO_DATE(fechavisita, '%d/%m/%Y') ASC ");
  3.  
  4.  

Y poniendo comillas en fechavisita.

Este campo es un campo formato texto ¿Por qué no me ordenará bien?



Ya lo sé lo he conseguido con cast
47  Programación / Desarrollo Web / Salto de línea en: 28 Agosto 2015, 22:20 pm
Hola quiero pone el campo de texto antes de un input dentro de un form en una línea y la caja de "texto" o fecha o la que sea en la línea siguiente.

Pero no me lo reconoce con br ni con <br/> ni con <br></br>


¿Pongo AQUI DEBERIA...por si me podéis ayudar?

Código
  1. <td>  Encuesta </td>
  2.  
  3. AQUI DEBERIA HABER UN SALTO DE LINEA Y LA CAJA DEL IMPUT IR ABAJO NO AL LADO
  4.  
  5. <td>
  6.  
  7. <input type="date" name="fechaencuesta" step="1" min="2013-01-01"  placeholder="dd/mm/aaaa"  value="<?php echo date("Y-m-d");?>"></tr>
  8. <br/> </td>
  9.  
  10. <tr>
  11.  
  12.  
  13.  
48  Programación / PHP / hmail en: 16 Agosto 2015, 19:41 pm
hola,

Me "copié" un registro de Gonzalo Silverio que circulaba por la Red y el registro me funciona pero no consigo hacer que me envie el mail. Me he bajado el hmailserver pero no sé si en este archivo debo de modificar algo más

Lo único que he cambiado es:

Código
  1.  
  2. $destinatario = $str_correo;                    //A quien se envia
  3.    $nomAdmin           = 'Jose numis';           //Quien envia
  4.    $mailAdmin      = 'bgnumis@gmail.com';       //Mail de quien envia
  5.  
  6.  


¿Debería cambiar algo más de lo que venía por defecto? ¿Hay algún ejemplo de como enviar mails con hmailserver que sea sencillo?

Código
  1. <?php
  2.    /*
  3.         Instituto Tecnologico de Zacatepec, Morelos
  4.     Descripcion:   Este archivo permite guardar un nuevo usuario.
  5.     Author:     Gonzalo Silverio  gonzasilve@gmail.com
  6.     Archivo:    guardarRegistro.php
  7.     */
  8.    //Recuperar los datos del formulario de registro
  9.    $str_nombre         =trim($_POST['tx_nombre']);
  10.    $str_apPaterno  =trim($_POST['tx_apPaterno']);
  11.    $str_apMaterno  =trim($_POST['tx_apMaterno']);
  12.    $str_correo         =trim($_POST['tx_correo']);
  13.    $str_username       =trim($_POST['tx_username']);
  14.    $str_password       =trim($_POST['tx_password']);
  15.    $str_password2  =trim($_POST['tx_password2']);
  16.    $i_TipoUsuario  =trim($_POST['i_tipoUsuario']);
  17.  
  18.    //Devuelve true si la cadena que llega esta VACIA
  19.    function estaEnBlanco($cadena) {
  20.        if(strlen( trim($cadena) ) == 0 )
  21.            return true;
  22.        return false;
  23.    }
  24.  
  25.    //Devuelve true si la longitud de la cadena (primer parametro)
  26.    // que llega  es menor que el numero (segundo parametro)
  27.    function validaTamanio($cadena,$longitud) {
  28.        if(strlen( trim($cadena) ) < $longitud )
  29.            return true;
  30.        return false;
  31.    }
  32.  
  33.    // devuelve true SI ha escrito, un email NO VALIDO
  34.    function esCorreoInvalido($str_email) {
  35.        if(!filter_var(trim($str_email), FILTER_SANITIZE_EMAIL))
  36.            return true;
  37.        return false;
  38.    }
  39.  
  40.    // devuelve una cadena escapada de algunos caracteres que
  41.    // pudieran servir para un ataque de sql injection
  42.    function escaparQuery($cadena) {
  43.        $str_KeywordsSQL            = array("select ","insert ","delete ","update ","union ");
  44.        $str_OperadoresSQL      = array("like ","and ","or ","not ","<",">","<>","=","<");
  45.        $str_DelimitadoresSQL = array(";","(",")","'");
  46.  
  47.        //Quitar palabras reservadas y operadores
  48.        for($i=0; $i<count($str_KeywordsSQL); $i++) {
  49.            $cadena = str_replace($str_KeywordsSQL[$i], "",strtolower($cadena) );
  50.        }
  51.        for($i=0; $i<count($str_OperadoresSQL); $i++) {
  52.            $cadena = str_replace($str_OperadoresSQL[$i], "",strtolower($cadena) );
  53.        }
  54.        for($i=0; $i<count($str_DelimitadoresSQL); $i++) {
  55.            $cadena = str_replace($str_DelimitadoresSQL[$i], "",strtolower($cadena) );
  56.        }
  57.  
  58.        return $cadena;
  59.    }
  60.  
  61.  
  62.    $mensajesAll= "";
  63.  
  64.    //Mensajes para el nombre
  65.    if( estaEnBlanco($str_nombre) )
  66.        $mensajesAll = "<li>Por favor, escriba su Nombre.</li>";
  67.    if( validaTamanio($str_nombre,3) )
  68.        $mensajesAll .= "<li>Su Nombre como minimo debe tener 3 caracteres.</li>";
  69.    //Mensajes para el Apellido Paterno
  70.    if( estaEnBlanco($str_apPaterno) )
  71.        $mensajesAll .= "<li>Por favor, escriba su Apellido Paterno.</li>";
  72.    if( validaTamanio($str_apPaterno,3) )
  73.        $mensajesAll .= "<li>Su Apellido Paterno como minimo debe tener 3 caracteres.</li>";
  74.    //Mensajes para el Apellido Materno
  75.    if( estaEnBlanco($str_apMaterno) )
  76.        $mensajesAll .= "<li>Por favor, escriba su Apellido Materno.</li>";
  77.    if( validaTamanio($str_apMaterno,3) )
  78.        $mensajesAll .= "<li>Su Apellido Materno como minimo debe tener 3 caracteres.</li>";
  79.    //Mensajes para el Correo electronico
  80.    if( estaEnBlanco($str_correo) || validaTamanio($str_correo,5) || esCorreoInvalido($str_correo) )
  81.        $mensajesAll .= "<li>Por favor, escriba una direccion de correo electronico valida.</li>";
  82.    //Mensajes para el nombre de usuario
  83.    if( estaEnBlanco($str_username) )
  84.        $mensajesAll .= "<li>Por favor, escriba un nombre de usuario. Este dato le servira para iniciar sesion y ver el contenido.</li>";
  85.    if( validaTamanio($str_username,5) )
  86.        $mensajesAll .= "<li>Su nombre de usuario como minimo debe tener 5 caracteres.</li>";
  87.    //Mensajes para el password
  88.    if( estaEnBlanco($str_password) )
  89.        $mensajesAll .= "<li>Por favor, escriba una contrase&ntilde;a.</li>";
  90.    if( validaTamanio($str_password,5) )
  91.        $mensajesAll .= "<li>Su contrase&ntilde;a como minimo debe tener 5 caracteres.</li>";
  92.    //Mensajes para la confirmacion del password
  93.    if( estaEnBlanco($str_password2) || validaTamanio($str_password2,5) )
  94.        $mensajesAll .= "<li>Por favor, confirme la contrase&ntilde;a anterior.</li>";
  95.    if( trim($str_password) != trim($str_password2) )
  96.        $mensajesAll .= "<li>Por favor, repita la contrase&ntilde;a anterior.</li>";    
  97.    //Mensajes para el tipo de usuario
  98.    if( estaEnBlanco($i_TipoUsuario) )
  99.        $mensajesAll .= "<li>Por favor, indique el tipo de usuaurio.</li>";
  100.  
  101.    $log = $mensajesAll."<br>";
  102.  
  103.    //Si se generaron mensajes de error al validar...
  104.    if ( trim($mensajesAll) != "" ) {
  105.        //..Redireccion a la pagina de registro para mostrar msg de error al usuario
  106.        //Enviar los datos que habia escrito antes de enviar
  107.    ?>
  108.    <form id="frm_error"   name="frm_error" method="post" action="registro.php">
  109.        <input type="hidden" name="error" value="1" />
  110.        <input type="hidden" name="msgs_error" value='<?php echo $mensajesAll ?>' />
  111.        <input type="hidden" name="str_nombre" value='<?php echo $str_nombre ?>' />
  112.        <input type="hidden" name="str_apPaterno" value='<?php echo $str_apPaterno ?>' />
  113.        <input type="hidden" name="str_apMaterno" value='<?php echo $str_apMaterno ?>' />
  114.        <input type="hidden" name="str_correo" value='<?php echo $str_correo ?>' />
  115.        <input type="hidden" name="str_username" value='<?php echo $str_username ?>' />
  116.        <input type="hidden" name="str_password" value='<?php echo $str_password ?>' />
  117.        <input type="hidden" name="str_password2" value='<?php echo $str_password2 ?>' />
  118.    </form>
  119.    <script type="text/javascript">
  120.        //Redireccionar con el formulario creado
  121.        document.frm_error.submit();
  122.    </script>
  123. <?php
  124.        exit;
  125.    }
  126. ?>
  127. <!DOCTYPE html>
  128. <html xmlns="http://www.w3.org/1999/xhtml">
  129. <head>
  130.    <title>.:: Registrar Usuario ::. </title>
  131.  
  132.    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  133.    <link rel="stylesheet" href="estilos.css" type="text/css">
  134.    <script src="jquery171.js" type="text/javascript"></script>
  135.    <script src="jquery.validate.js" type="text/javascript"></script>
  136.    <script type="text/javascript" src="jquery.alerts.js"></script>
  137.    <link href="jquery.alerts.css" rel="stylesheet" type="text/css" />
  138.  
  139.    <script type="text/javascript">
  140.    <!--
  141.        $().ready(function() {
  142.  
  143.        });
  144.    // -->
  145.    </script>
  146.  
  147. </head>
  148. <body>
  149.  
  150. <?php
  151.    $mensajesAll                = "";
  152.    $username_duplicado = false;
  153.    $email_duplicado        = false;
  154.    //Escapar las cadenas para avitar SQL Injection
  155.    $str_username = escaparQuery($str_username);
  156.    $str_correo     = escaparQuery($str_correo);
  157.  
  158.    //Conectar la BD
  159.    include("conectar_bd.php");
  160.    conectar_bd();
  161.  
  162.  
  163.    //Validar que el nombre de usuario no exista en la BD
  164.    $sql = "SELECT  id_usuario  FROM tbl_users
  165.    WHERE tx_username = '".trim($str_username)."';";
  166.    $rs_sql = mysql_query($sql);
  167.    $log .=  $sql."<br>";
  168.  
  169.    //Si ya existe el usuario en la BD...
  170.    if ( $fila  = mysql_fetch_object($rs_sql) ) {
  171.        $mensajesAll = "<li>El nombre de usuario <b>".$str_username."</b> ya fue registrado
  172.        por otra persona. Por favor, escriba otro.</li>";
  173.        $username_duplicado = true;
  174.    }
  175.  
  176.    //Validar que el email no exista en la BD
  177.    $sql = "SELECT  id_usuario  FROM tbl_users
  178.    WHERE tx_correo='".$str_correo."';";
  179.    $rs_sql = mysql_query($sql);
  180.    $log .=  $sql."<br>";
  181.  
  182.  
  183.    //Si ya existe el email en la BD...
  184.    if ( $fila  = mysql_fetch_object($rs_sql) ) {
  185.        $mensajesAll = "<li>El correo electronico <b>".$str_correo."</b> ya fue registrado
  186.        por otra persona. Por favor, escriba otro.</li>";
  187.        $email_duplicado        = true;
  188.    }
  189.    //Si ambos datos ya estan en la Base de datos mostrar un solo msg
  190.    if( $username_duplicado && $email_duplicado)
  191.        $mensajesAll = "<li>Ambos, nombre de usuario <b>".$str_username."</b>
  192.        y correo electronico <b>".$str_correo."</b> ya fueron registrados por otra persona.
  193.        Por favor, cambie esos datos.</li>";
  194.    //..Redireccion a la pagina de registro para mostrar msg de error al usuario
  195.    //Enviar los datos que habia escrito antes de enviar
  196.  
  197.    $log .=  $mensajesAll."<br>";
  198.  
  199.  
  200.    if ( trim($mensajesAll) != "" ) {
  201.        //..Redireccion a la pagina de registro para mostrar msg de error al usuario
  202.        //Enviar los datos que habia escrito antes de enviar
  203.        ?>
  204.        <form id="frm_error"   name="frm_error" method="post" action="registro.php">
  205.            <input type="hidden" name="error" value="2" />
  206.            <input type="hidden" name="msgs_error" value='<?php echo $mensajesAll ?>' />
  207.            <input type="hidden" name="str_nombre" value='<?php echo $str_nombre ?>' />
  208.            <input type="hidden" name="str_apPaterno" value='<?php echo $str_apPaterno ?>' />
  209.            <input type="hidden" name="str_apMaterno" value='<?php echo $str_apMaterno ?>' />
  210.            <input type="hidden" name="str_correo" value='<?php echo $str_correo ?>' />
  211.            <input type="hidden" name="str_username" value='<?php echo $str_username ?>' />
  212.            <input type="hidden" name="str_password" value='<?php echo $str_password ?>' />
  213.            <input type="hidden" name="str_password2" value='<?php echo $str_password2 ?>' />
  214.        </form>
  215.        <script type="text/javascript">
  216.            //Redireccionar con el formulario creado
  217.            document.frm_error.submit();
  218.        </script>
  219.            <?php
  220.        exit;
  221.    }
  222.  
  223.  
  224.    //..Si llega asta aqui es que todos los datos son validos, procedemos a darlo de alta en BD
  225.    $str_elNombre               = $str_nombre." ".$str_apPaterno;
  226.    $str_elNombreCompleto = $str_nombre." ".$str_apPaterno." ".$str_apMaterno;
  227.  
  228.  
  229.    //Formar el query para el insert del nuevo usuario
  230.    $queryInsert="INSERT INTO tbl_users (
  231.    tx_nombre,
  232.    tx_apellidoPaterno,
  233.    tx_apellidoMaterno,
  234.    tx_correo,
  235.    tx_username,
  236.    tx_password,
  237.    id_TipoUsuario,
  238.    dt_registro )
  239.    VALUES(
  240.    '".$str_nombre."',
  241.    '".$str_apPaterno."',
  242.    '".$str_apMaterno."',
  243.    '".$str_correo."',
  244.    '".$str_username."',
  245.    '".md5($str_password)."',
  246.    ".$i_TipoUsuario.",
  247. '".date("Y-m-d H:i:s")."');";
  248.  
  249.    $log .=  $queryInsert."<br>";
  250.  
  251.    //echo $log;
  252.    //exit;
  253.  
  254.    mysql_query($queryInsert);
  255.  
  256.    // Le  Envio  un correo electronico  de bienvenida
  257.    $destinatario = $str_correo;                    //A quien se envia
  258.    $nomAdmin           = 'Jose numis';           //Quien envia
  259.    $mailAdmin      = 'bgnumis@gmail.com';       //Mail de quien envia
  260.    $urlAccessLogin = 'http://localhost/autenticar_usuarios';       //Url de la pantalla de login
  261.  
  262.    $elmensaje = "";
  263.    $asunto = $str_elNombre.", Gracias por registrarte!";
  264.  
  265.    $cuerpomsg ='
  266.    <h2>.::Registrar usuarios::.</h2>
  267.    <p>Le damos la mas cordial bienvenida, desde ahora usted podra gozar de los beneficios de
  268.    haberse identificado y acceder a contenido exclusivo de esta comunidad.</p>
  269.        <table border="0" >
  270.        <tr>
  271.            <td colspan="2" align="center" >Sus datos de acceso para <a href="'.$urlAccessLogin.'">'.$urlAccessLogin.'</a><br></td>
  272.        </tr>
  273.        <tr>
  274.            <td> Nombre </td>
  275.            <td> <b>'.$str_elNombreCompleto.'</b> </td>
  276.        </tr>
  277.        <tr>
  278.            <td> Nombre de usuario </td>
  279.            <td> <b>'.$str_username.'</b> </td>
  280.        </tr>
  281.        <tr>
  282.            <td> Password </td>
  283.            <td> <b>'.$str_password.'</b> </td>
  284.        </tr>
  285.        </table> <br/><br/>
  286.    <p><b>Gracias por su preferencia, hasta pronto.</b></p> <br><br>';
  287.  
  288.    date_default_timezone_set('America/Mexico_City');
  289.  
  290.    //Establecer cabeceras para la funcion mail()
  291.    //version MIME
  292.    $cabeceras = "MIME-Version: 1.0\r\n";
  293.    //Tipo de info
  294.    $cabeceras .= "Content-type: text/html; charset=iso-8859-1\r\n";
  295.    //direccion del remitente
  296.    $cabeceras .= "From: ".$nomAdmin." <".$mailAdmin.">";
  297.    $i_EmailEnviado = 0;
  298.  
  299.    //Si se envio el email
  300.    if( mail($destinatario,$asunto,$cuerpomsg,$cabeceras) )
  301.        $i_EmailEnviado = 1;
  302.  
  303.    //Cerrrar conexion a la BD
  304.    mysql_close($conexio);
  305.  
  306.    // Mostrar resultado del registro
  307.    ?>
  308.    <form id="frm_registro_status"   name="frm_registro_status" method="post" action="index.php">
  309.        <input type="hidden" name="status_registro" value="1" />
  310.        <input type="hidden" name="i_EmailEnviado" value='<?php echo $i_EmailEnviado ?>' />
  311.    </form>
  312.    <script type="text/javascript">
  313.        //Redireccionar con el formulario creado
  314.        document.frm_registro_status.submit();
  315.    </script>
  316. </body>
  317. </html>
  318.  
  319.  
  320.  


Mod: Temas sobre PHP van al subforo de PHP.
49  Programación / Bases de Datos / sql en: 23 Julio 2015, 13:06 pm
Hola,

Tengo un excel con datos que ya están incluidos en mi base de datos pero "actualizados" son 200 registros de una base de datos de 15000.

¿Alguien sabe si en sql en php my admin se podría hacer un SQL de tipo

 if DNI="al DNI de la base de datos" machaca  esa fila y pon los datos del excel?

50  Programación / PHP / Redirigir en: 19 Julio 2015, 22:06 pm
Hola,

Cuando ejecuto un sentencia he añadido esto:

Código
  1.  
  2. echo "<script> alert('Se actualizo correctamente');</script>";
  3.  

Pero cómo podría hacer para que me redirigiera directamente a una página por ejemplo principal.php?
Páginas: 1 2 3 4 [5] 6 7 8 9
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines