HabboLibre Foro



Unirse al foro, es rápido y fácil

HabboLibre Foro

HabboLibre Foro

¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.
HabboLibre Foro

Foro de HabboLibre, después pasó a llamarse Habbo City. De los creadores de habbolibre.com.es y ciudadhabbo.com (portales actualmente cerrados). INACTIVO Y SIN ADMINISTRADORES.


4 participantes

    [PHP]Clase Libro de Invitados

    Andr3t3
    Andr3t3
    Agente en pruebas
    Agente en pruebas


    Suscripción activa
    Masculino
    Posts : 310
    HC£ : 824
    Edad : 28
    Registrad@ el día: : 19/04/2008
    Reputación : 267
    Busco : Desarrollar software
    Medallitas : [PHP]Clase Libro de Invitados S038 [PHP]Clase Libro de Invitados S052 [PHP]Clase Libro de Invitados Kpoker [PHP]Clase Libro de Invitados Twitter [PHP]Clase Libro de Invitados Facebook [PHP]Clase Libro de Invitados S069 [PHP]Clase Libro de Invitados S032 [PHP]Clase Libro de Invitados 376pxbiohazardsymbolred [PHP]Clase Libro de Invitados 2401011 [PHP]Clase Libro de Invitados Redcross1 [PHP]Clase Libro de Invitados Hiv [PHP]Clase Libro de Invitados Canc [PHP]Clase Libro de Invitados Terrorism [PHP]Clase Libro de Invitados Emoticon_happy [PHP]Clase Libro de Invitados S057 [PHP]Clase Libro de Invitados Pandaomgpop [PHP]Clase Libro de Invitados Archtop_guitar [PHP]Clase Libro de Invitados 031

    [PHP]Clase Libro de Invitados Empty [PHP]Clase Libro de Invitados

    Mensaje por Andr3t3 Lun Abr 19, 2010 12:00 am

    Bueno, voy a copiar la clase, que sería el motor del sistema.
    class.gbook.php
    Código:
    <?php

    /*
    CREATE TABLE `gbook` (
      `id` int(7) NOT NULL auto_increment,
      `autor` varchar(32) NOT NULL,
      `texto` longtext NOT NULL,
      `fecha` varchar(20) NOT NULL,
      PRIMARY KEY  (`id`)
    )
    */
    class GBook {
     
     var $sys = array(
      'host' => 'localhost',
      'user' => 'root',
      'pass' => 'root',
      'db' => 'casino',
      'table' => 'gbook',
      'pagina' => 'gbook.php'
      );
      /* estos datos deben cambiarse según la configuracion de cada uno */
     var $password = "88a0b1be3a4a0e81bc21eb8f5a423ba4"; // codificada en MD5, se puede usar por ejemplo [url=http://www.md5encrypter.com/]http://www.md5encrypter.com/[/url] para codificar algo rapidamente
     
     var $enlace;
     
     function GBook() {
      if(empty($this->enlace))
      {
      $this->enlace = mysql_connect($this->sys["host"],$this->sys["user"],$this->sys["pass"]) or die("No se ha podido conectar a la base de datos");
      mysql_select_db($this->sys["db"],$this->enlace);
      return $this->enlace;
      }
     }
     
     function CheckAdmin($pass) {
      if(md5($pass)==$this->password)
      {
      setcookie("gbook_admin",md5($pass),time()+3600*24*7); // 1 semana de cookie
      header("Location: ".$this->sys['pagina']);
      }
     }
     
     function Mostrar() {
      $query = "SELECT * FROM ".$this->sys['table']." ORDER BY id DESC";
      $res = mysql_query($query) or die("No se pudo sacar informacion de la BD");
      while($row = mysql_fetch_array($res))
      {
      ?>
      <center><div id="tabla">
      <?php echo $row["autor"];?>
      el <?php echo date("d/m/Y",$row["fecha"]);?> a las
      <?php echo date("H:i",$row["fecha"]);?>
      <?php
      if($_COOKIE["gbook_admin"]==$this->password)
      { ?>
      <a href="borrar.php?id=<?php echo $row['id'];?>">Borrar</a> 
      <?php
      }
      ?>
      <hr />
      <?php echo $row["texto"];?>
      </div></center>
      <?php
      }
     }
     
     function Borrar($id)
     {
      if($_COOKIE["gbook_admin"]==$this->password)
      {
      $query = "DELETE FROM ".$this->sys["table"]." WHERE id = ".$id;
      mysql_query($query,$this->enlace) or die(mysql_error());
      header("Location: ".$this->sys["pagina"]);
      }
      else
      echo "No tienes permisos";
     }
     
     function Escribir($texto,$autor) {
      $texto = $this->LimpiarCadena($texto);
      $autor = $this->LimpiarCadena($autor);
      $fecha = time();
     
      $query = "INSERT INTO " .$this->sys['table']. " (texto, autor, fecha) VALUES ('$texto', '$autor', '$fecha')";
      mysql_query ($query, $this->enlace) or die(mysql_error());
      header("Location: ".$this->sys["pagina"]);
     }
     
     function Logout() {
      setcookie ("gbook_admin", "", time()-60000);
      header("Location: ".$this->sys['pagina']);
     }
     
     function LimpiarCadena($cadena)
     {
      $cadena = stripslashes($cadena);
      $cadena = strip_tags($cadena);
      $cadena = nl2br($cadena);
      $cadena = stripslashes($cadena);
      $cadena = mysql_real_escape_string($cadena);
      return $cadena;
     }
    } ?>
    Voy a explicar muy brevemente lo que hace cada método (función).
    GBook()
    Es el constructor de la clase, lo que hace es crear la conexión con la base de datos. Tiene el mismo nombre que la clase, de esta manera el método se convierte en el constructor y conecta automáticamente con la BD

    CheckAdmin()
    Esto codifica con md5 la contraseña que se le pasa y comprueba que es igual que el hash que se ha especificado en la configuracion de la clase. Si concuerdan crea una cookie con el hash de la contraseña.
    Mostrar()
    Imprime todas las firmas que se han dejado, y si el login es correcto muestra un enlace para borrar una firma en concreto.
    Borrar($id)
    Borra de la BD la firma con la ID que se le pasa a la función. Antes de eso comprueba que tengas permisos
    Escribir($texto,$autor)
    Escribe en la base de datos una nueva firma. A esta función se le pasan dos parámetros, que son el texto y el autor. La fecha la genera automáticamente.
    Logout()
    Elimina la cookie
    LimpiarCadena()
    Esto me lo encontré por ahí, no se si es la forma más segura de limpiar una cadena, pero me parece que funciona bien. No estoy puesto en este tema y tendré que investigar un poco para mejorar esta funcion.

    index.php (O el nombre que se le quiera dar. Si se le da otro debe cambiarse en class.gbook.php la variable $sys["pagina"])
    Código:
    <?php
    include("class.gbook.php");
    $libro = new GBook;
    if(!empty($_POST["pass"]))
     $libro->CheckAdmin($_POST["pass"]);
    if(isset($_GET["salir"]))
     $libro->Logout();
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "[url=http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd]http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd[/url]">
    <html xmlns="[url=http://www.w3.org/1999/xhtml]http://www.w3.org/1999/xhtml[/url]" xml:lang="es" lang="es">
    <head>
        <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
        <meta http-equiv="Content-Language" content="es-es" />
     <link rel="stylesheet" href="gbook_css.css" />
        <title>Clase GuestBook muy simple</title>
    </head>
    <center><form action="procesar.php" method="post">
    Autor
    <input class="form" type="text" name="autor"><br />
    <textarea class="form" name="texto"></textarea><br />
    <input class="form" type="submit" value="Firmar">
    </form><br /></center>
    <?php
    $libro->mostrar();
    ?>
    <?php
    if($_COOKIE["gbook_admin"]==$libro->password)
     echo "<center><a href=".$libro->sys['pagina']."?salir>Logout</a></center>";
    else
    {
    ?> <center><form action=<?php echo $libro->sys['pagina'];?> method="post">
     Administrar:
     <input class="form" type="password" name="pass">
     <input class="form" type="submit" value="OK">
     </form></center>
    <?php
    }
    ?>
    <body>
    </body>
    </html>
    Esto sería lo que el usuario vería. Para usar una clase en primer lugar debemos incluirla y crear un objeto, da igual el nombre. En este caso he usado la palabra libro. El objeto se crea de esta manera: $libro = new GBook;
    GBook es el nombre de la clase.
    Para acceder a los métodos del objeto se hace de la siguiente manera.
    $objeto->metodo();
    Un ejemplo con nuestro caso:
    $libro->mostrar();
    De esta manera se mostrarían todas las firmas existentes.
    Lo primero que se hace es comprobar si $_POST["pass"] tiene algo, y si lo tiene usa el método CheckAdmin($pass) con ese algo para comprobar si la contraseña es correcta y crear la cookie que lo confirme.
    Despues se comprueba si existe la variable $salir. Si existe llama al método Logout() que destruye la cookie del administrador.
    Mostramos ya el HTML, formulario de firma y por fin mostramos las firmas con $libro->mostrar();
    Despues de eso, si el login fue correcto mostramos un enlace para salir, y si no pues un formulario para entrar xD
    procesar.php
    Código:
    <?php
    if(!empty($_POST["texto"]) && !empty($_POST["autor"]))
    {
     include("class.gbook.php");
     $libro = new GBook;
     $libro->Escribir($_POST["texto"],$_POST["autor"]);
    }
    else
     echo "Debes rellenar todos los campos";
    ?>
    De nuevo incluimos la clase para poder usarla, creamos el objeto y usamos el metodo Escribir($texto,$autor). En este caso las variables $_POST["texto"] y $_POST["autor"] tienen la información, así que usamos el método Escribir($texto,$autor) con esas variables.
    borrar.php
    Código:
    <?php
    if(isset($_GET["id"]))
    {
      include("class.gbook.php");
     $libro = new GBook;
     $libro->Borrar($id);
    }
    else
     echo "Debes especificar una firma para borrarla.";
    ?>
    Si se ha especificado una ID llama al método Borrar($id) y la borra, claro XD

    Y eso es todo amigos. Una clase muy simple y básica que para los que estén comenzando con las clases (como yo) o quieran empezar les servira creo y espero que bastante.
    ¿Se puede mejorar?
    Todo se puede mejorar. ¿Alguna idea?

    Fuente: PHP
    Abelo
    Abelo
    Habitante del montón (clase media)
    Habitante del montón (clase media)


    Suscripción no activa
    Masculino
    Posts : 114
    HC£ : 302
    Edad : 28
    Registrad@ el día: : 10/04/2010
    Reputación : 17
    Busco : De todo un poco
    Medallitas : [PHP]Clase Libro de Invitados 2401011

    [PHP]Clase Libro de Invitados Empty Re: [PHP]Clase Libro de Invitados

    Mensaje por Abelo Lun Abr 19, 2010 12:54 am

    La verad no entendi nada [PHP]Clase Libro de Invitados Icon_eek
    iDavu
    iDavu
    Agente
    Agente


    Suscripción no activa
    Masculino
    Posts : 460
    HC£ : 221
    Edad : 28
    Registrad@ el día: : 28/03/2010
    Reputación : 17
    Busco : Forear y postear
    Medallitas : [PHP]Clase Libro de Invitados S016 [PHP]Clase Libro de Invitados Money

    [PHP]Clase Libro de Invitados Empty Re: [PHP]Clase Libro de Invitados

    Mensaje por iDavu Jue Abr 22, 2010 6:39 am

    Pues lo leí y no me pareció nada mal, buen aporte. [PHP]Clase Libro de Invitados 788937
    avatar
    davex
    Habitante conocido (clase media)
    Habitante conocido (clase media)


    Suscripción no activa
    Masculino
    Posts : 281
    HC£ : 364
    Edad : 33
    Registrad@ el día: : 02/10/2009
    Reputación : -12
    Busco : Desarrollar software
    Medallitas : Ninguna

    [PHP]Clase Libro de Invitados Empty Re: [PHP]Clase Libro de Invitados

    Mensaje por davex Vie Abr 23, 2010 9:41 pm

    bueno aunque esta bueno. yo solo lo que ago a utilizar el programa xampp para colocar la base de datos y se aga mas facil. porque solo pones el codigo SQL. que tenga coneccion con el php y el libro de invitados se procesa mas rapido y sin ninguna difilcutad. (la unica forma de que aga difilcutad es que tenga mal el iframe de php o SQL.)

    Contenido patrocinado


    [PHP]Clase Libro de Invitados Empty Re: [PHP]Clase Libro de Invitados

    Mensaje por Contenido patrocinado


      Fecha y hora actual: Jue Nov 21, 2024 9:32 pm