aplicación de chat en php

 

eugeniaperez.es

aplicación con conexión a bd

  • Creo una BD llamada chat y dos tablas:

eugeniaperez.es

aplicación con conexión a bd

  • Establece una FK de mensaje a usuario:

eugeniaperez.es

aplicación con conexión a bd

  • Creamos un usuario:

eugeniaperez.es

sha1(admin)

chat

simple login 

(Descargamos del aula las versiones del chat)

eugeniaperez.es

vamos a poner en práctica la sintaxis de php....

Viendo una manera no tan buena de hacer las cosas

eugeniaperez.es

para el 15 de noviembre debemos 

entregar la funcionalidad básica y las validaciones. No es necesario que realicéis ampliaciones todavía ni que lo subamos por FTP a un espacio de hosting.

eugeniaperez.es

chat

  • Ver los distintos ficheros PHP:
    • Login / Logout 
  • Comprobación y acceso a BD: comprobar
  • Zona protegida ->
    • listado de mensajes
    • inserción de mensajes

eugeniaperez.es

chat

  • Para almacenar valores que vamos a necesitar a lo largo de la sesión tenemos la variable $_SESSION.
  • Por ejemplo, el $_SESSION["nombre"] y el $_SESSION["id"] de usuario.
  • Un $_POST se pierde de una pantalla a otra, pero $_SESSION PERDURA.
  • Para poder utilizarlo debemos llamar a session_start();

eugeniaperez.es

BLOG

  • Realizamos el mismo proyecto aplicado al blog.
  • Súbelo a Bitbucket y vete haciendo commit de las diferentes versiones.
  • Creamos la BD del blog.
    • ​Tabla usuario
    • Tabla post

eugeniaperez.es

BLOG

  • Intentamos hacer una pantalla de login que se dirija a una parte privada que liste los posts de los usuarios. En principio solo tendremos un usuario que será el administrador.

eugeniaperez.es

BLOG

  • Introducimos el usuario administrador.
    Cabe tener en cuenta que la contraseña irá encriptada en sha1.
  • Este será nuestro index.php

eugeniaperez.es

BLOG

A continuación creamos logincontroller.php, que permitirá garantizar que las credenciales son correctas.
Para ello:

  • Se abre la conexión a BD: @mysql_connect("localhost", "root", ""
  • Seleccionar la BD a utilizar: mysql_select_db(“blog")
  • Componer la SELECT que compruebe al usuario en la BD
  • Ejecutar la consulta: mysql_query y almacenar su resultado. Si la consulta genera resultado:
    • if (mysql_num_rows($result) > 0) 

eugeniaperez.es

BLOG

Cargamos un array asociativo que tiene como claves las columnas de la tabla y como valores los propios de los registros.

  • Correcto: se guarda en sesión y se redirige a la parte privada.
  • No correcto: se redirige a la parte pública (index) pasando por GET un error.

eugeniaperez.es

BLOG

Si todo ha ido correcto, el usuario se encuentra en la base de datos se le envía a esta pantalla (en caso contrario se mantiene en la pantalla de login y se muestra un error):

eugeniaperez.es

BLOG

Esta pantalla recogerá todos los posts de la BD y los listará. Para ello:

  • Mismo proceso para conexión a BD.
  • Creamos un post de prueba.
  • Se ejecuta la SELECT
  • Se compone una tabla que irá mostrando los posts del array asociativo, que luego se mostrarán en una tabla (thead, tbody, tr, th, td. Border, colspan, etc…).
  • Como estamos mostrando el $_SESSION["nombre"] del usuario, necesitaremos iniciar la sesión.

eugeniaperez.es

BLOG

eugeniaperez.es

Hacemos el logout.php: finalizamos sesión (session_start, session_destroy) y redirigimos.


Importante: la zona de admin es privada… Luego se debe restringir su acceso: 
 

 

//Si el usuario no está en sesión, lo redirigimos de nuevo a la página de login
if (!isset($_SESSION["nombre"])) {
    header("Location: index.php?error=1");
}

BLOG

Añadiendo funcionalidad:

Listado de posts:

         El enlace redireccionará a la propia página.

Escribir nuevo:

         Redirige a esta página ->

Editar perfil: pendiente

eugeniaperez.es

BLOG

Creamos la página insertarpost.php, que contendrá un formulario de inserción. Para ello:
Importante: es privado… Luego se debe restringir su acceso.
Se crea el formulario de inserción.
Un controlador del post, que acceda a BD e inserte un post:
 

 

¡Hemos finalizado la primera versión de nuestro blog!

eugeniaperez.es

$sql = "INSERT INTO posts (titulo, contenido) 
VALUES('" . $_POST["titulo"] . "','" . $_POST["contenido"] . "')";

CHAT

SIMPLE LOGIN V.2

eugeniaperez.es

CHAT

Cargamos el simple_login V2 
Modificar un mensaje: PASO POR GET: modificar.php?id=" . $registro["id"] 
Si existe un isset($_GET["id"]) => Hago una SELECT por ID, para cargarlo en los campos.
Cuando pulse sobre el botón => Comprobar si hay paso por POST:
if (isset($_POST["texto"])) ->Entonces se actualiza el mensaje (UPDATE)
Redireccionamos a la parte privada

 

eugeniaperez.es

CHAT

Comprobar:
      Borrar un mensaje: PASO POR GET: borrar.php?id=" . $registro["id"] 
Si existe un isset($_GET["id"]) => 
       Me conecto a BD
       Hago un DELETE por id
Redireccionamos a la parte privada

 

eugeniaperez.es

blog

  • Volvamos a nuestra práctica del blog
  • Vamos a incorporar el modificar (modificar.php)
  • Y el borrar (borrar.php)

 

eugeniaperez.es

CHAT

SIMPLE LOGIN V3

 

eugeniaperez.es

CHAT

  • Vamos a ver como mostrar la información de usuario, en perfil.php (a través de un SELECT contra BD)
  • Y la modificación del perfil en modificarPerfil.php:
    • Lo primero es cargar los campos del usuario correctamente.
    • Para ello, SELECT por el id de usuario en SESSION.
    • También un UPDATE en caso de que se envíe información por POST -> al hacer clic sobre el formulario.
    • Se redirige a protegida finalmente.

 

eugeniaperez.es

BLOG

  • Creamos el Acerca de...
  • Modificar el perfil

Solo nos quedaría el listado de posts inicial...

Vamos a hacerlo sobre la práctica del chat...

REALIZA UN COMMIT DEL PROYECTO A TU REPOSITORIO DE BITBUCKET

 

 

eugeniaperez.es

Made with Slides.com