Mi lista de blogs

Mostrando entradas con la etiqueta Programación en PHP - WEB - Agrega a tu web comentarios y mensajes privados. Mostrar todas las entradas
Mostrando entradas con la etiqueta Programación en PHP - WEB - Agrega a tu web comentarios y mensajes privados. Mostrar todas las entradas

martes, 29 de septiembre de 2015

Programación en PHP - WEB - Agrega a tu web comentarios y mensajes privados

Actualmente en las paginas web es muy frecuente querer agregar comentarios o mensajes privados. Como me lo han solicitado a mi correo, voy a postear el código.
Espero que les sea útil y de lo comprendan y sino me consultan.

Primero, vamos a crear las tablas en nuestra Base de Datos mysql. En el post anterior explique como crear las tablas y como crear una base. Con el código que les dejo solo deben ejecutarlas y ya tendrán las tablas. Luego les dejare los php para armar el procedimiento.

Paso 1

-- phpMyAdmin SQL Dump
-- --------------------------------------------------------
-- Estructura de tabla para la tabla `comentarios`
--

CREATE TABLE IF NOT EXISTS `comentarios` (
  `idcomentario` INT(11) NOT NULL AUTO_INCREMENT,
  `idnombre` INT(11) NOT NULL,
  `nombre` VARCHAR(11) NOT NULL,
  `idperfil` INT(11) NOT NULL,
  `fecha` DATE NOT NULL,
  `comentario` longtext NOT NULL,
  PRIMARY KEY  (`idcomentario`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=33 ;

--
-- Aplicar en la base de datos para la tabla `comentarios`
--

INSERT INTO `comentarios` (`idcomentario`, `idnombre`, `nombre`, `idperfil`, `fecha`, `comentario`) VALUES
(32, 1, 'Felipe', 2, '0000-00-00', 'Te deje muchos mensajes '),
(31, 3, 'Maria', 2, '0000-00-00', 'si recien me conecto'),
(30, 3, 'Maria', 1, '0000-00-00', 'estas?'),
(29, 2, 'Felipe', 3, '0000-00-00', 'si claro'),
(28, 2, 'Felipe', 1, '0000-00-00', 'Holaaa'),
(27, 1, 'Felipe', 3, '0000-00-00', 'hola, estas ahi?'),
(26, 1, 'Felipe', 2, '0000-00-00', 'Holaaa');

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `mensajes`
--

CREATE TABLE IF NOT EXISTS `mensajes` (
  `idmensaje` INT(11) NOT NULL AUTO_INCREMENT,
  `nombre` longtext NOT NULL,
  `mensaje` longtext NOT NULL,
  `asunto` longtext NOT NULL,
  `idnombre` INT(11) NOT NULL,
  `receptor` longtext NOT NULL,
  `idreceptor` INT(11) NOT NULL,
  PRIMARY KEY  (`idmensaje`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 ;

--
-- Aplicar en la base de datos para la tabla `mensajes`
--

INSERT INTO `mensajes` (`idmensaje`, `nombre`, `mensaje`, `asunto`, `idnombre`, `receptor`, `idreceptor`) VALUES
(11, 'Felipe', 'hola', 'Hola', 1, 'Felipe', 2),
(10, 'Felipe', 'lalalala', 'estas', 2, 'Felipe', 1),
(6, 'maria', 'creo que si', 'Hola', 3, 'Felipe', 2),
(7, 'Felipe', 'sdfasdfasdfasdf', 'Holasdkàsdf', 1, 'Felipe', 2),
(8, 'Felipe', 'afdsfsdfasdfasdfasdf', '131234', 1, 'Felipe', 2),
(9, 'Felipe', 'dasdfsdfsdf', 'juuuujujujujujuj', 1, 'Felirpe', 2);

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `pruebas`
--

CREATE TABLE IF NOT EXISTS `pruebas` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `nick` VARCHAR(20) NOT NULL,
  `pass` VARCHAR(32) NOT NULL,
  `mail` VARCHAR(40) NOT NULL,
  `codigo` VARCHAR(20) NOT NULL,
  `estado` INT(1) NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `nick` (`nick`,`pass`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

--
-- Aplicar en la base de datos para la tabla `pruebas`
--

INSERT INTO `pruebas` (`id`, `nick`, `pass`, `mail`, `codigo`, `estado`) VALUES
(1, 'Felipe', 'e10adc3949ba59abbe56e057f20f883e', 'felipe_gonza@hotmail.com', '4ea2ffdde8b28', 1),
(2, 'Felipe', 'e10adc3949ba59abbe56e057f20f883e', 'asd@asd.asd', '4ea4c6f353ecb', 1),
(3, 'maria', 'e10adc3949ba59abbe56e057f20f883e', 'maria@hotmail.com', '4ea598a2632ed', 1);

Paso 2

perfil.php

<?php
include("conexion.php");
if($_SESSION['logeado'] == true){
    $id = $_GET['id'];
    if(isset($id)){//compruebo si id tiene valor
    $resultado = mysql_query("SELECT nick, mail FROM pruebas WHERE (id = '$id')");
    $fila = mysql_fetch_array($resultado);
    if($_SESSION['nick'] == $fila['nick']){/* perfil de usuario logeado cuando id tiene valor, y si la sesion en que estoy logeado coincide con la de los datos trtaidos por la id, estoy en mi perfil*/
        echo "Este es su perfil ".$_SESSION['nick'];
        ?>
        </br></br>
        <a href="<?php $_SERVER['PHP_SELF']?>?desconectar=1">Salir</a>
        </br>
        </br>
        <a href="<?php $_SERVER['PHP_SELF']?>?borrar=1">Eliminar cuenta</a>
        </br>
        </br>
        <a href="<?php $_SERVER['PHP_SELF']?>?cambiar=1">Cambiar contrasea</a>
        </br>
        </br>
        <a href="leermensaje.php">Leer mensajes privados</a>
        <?php
        $idperfil = $_GET['id'];
        $resultado = mysql_query("SELECT nombre, fecha, comentario, idnombre FROM comentarios WHERE (idperfil = '$idperfil')");
        while($fila = mysql_fetch_array($resultado)){
            echo "<br/>";
            echo "<br/>";
            echo "Nombre: <a href='perfil.php?id=".$fila['idnombre']."'>".$fila['nombre']."</a>";
            echo "<br/>";
            echo "----";
            echo "<br/>";
            echo "Comentario: ".$fila['comentario'];
            echo "<br/>";
            echo "---------------------------------------";
            echo "<br/>";
          }
        }
    else{/*perfil de otro usuario, porque el nick, no coincide con el de la persona logeada*/
        echo "Este es el perfil de ".$fila['nick'].", y su mail es ".$fila['mail'];
        ?>
        </br>
        </br>
        <a href="enviarmensaje.php">Enviar mensaje privado</a>
        </br>
        <?php
        $_SESSION['idreceptor'] = $_GET['id'];
        if(isset($_POST['mandar'])){
            if(isset($_POST['comentario'])){
                $comentario = $_POST['comentario'];
                $nombre = $_SESSION['nick'];
                $fecha = time();
                $datofecha = date("d-m-Y" , $fecha);
                $idperfil = $_GET['id'];
                $idnombre = $_SESSION['id'];
                if(mysql_query("INSERT INTO comentarios (comentario,nombre,fecha,idperfil,idnombre) VALUES ('$comentario','$nombre','$datofecha','$idperfil','$idnombre')")){
                    echo "<br/>";
                    echo "<br/>";
                    echo " Comentario subido con exito";
                }
                else{
                    echo "Hubo un fallo al poner el comentario, por favor vuelva a intentarlo";
                }
            }
            else{
                echo "Debe introducir un comentario";
            }
        }
        ?>
        <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Perfil</title>
        </head>
        <body>
        <br/>
        Deja tu comentario!
        <form method="post" action="perfil.php?id=<?php echo $_GET['id']; ?>">
        <textarea name="comentario"></textarea>
        <input type="submit" name="mandar">
        </form>
        </body>
        </html>
    <?php
        $idperfil = $_GET['id'];
        $resultado = mysql_query("SELECT nombre, fecha, comentario, idnombre FROM comentarios WHERE (idperfil = '$idperfil')");
        while($fila = mysql_fetch_array($resultado)){
            echo "<br/>";
            echo "<br/>";
            echo "Nombre: <a href='perfil.php?id=".$fila['idnombre']."'>".$fila['nombre']."</a>";
            echo "<br/>";
            echo "----";
            echo "<br/>";
            echo "Comentario: ".$fila['comentario'];
            echo "<br/>";
            echo "---------------------------------------";
            echo "<br/>";
          }
    }
  }
  else{//perfil de usuario logeado cuando id no tiene valor
        echo "Este es su perfil ".$_SESSION['nick'];
        ?>
        </br></br>
        <a href="<?php $_SERVER['PHP_SELF']?>?desconectar=1">Salir</a>
        </br>
        </br>
        <a href="<?php $_SERVER['PHP_SELF']?>?borrar=1">Eliminar cuenta</a>
        </br>
        </br>
        <a href="<?php $_SERVER['PHP_SELF']?>?cambiar=1">Cambiar contrasea</a>
        </br>
        </br>
        <a href="leermensaje.php">Leer mensajes privados</a>      
        <?php
        $nick = $_SESSION['nick'];
        $resultado = mysql_query("SELECT id FROM pruebas WHERE (nick = '$nick')");
        $fila = mysql_fetch_array($resultado);
        $idperfil = $fila['id'];
        $resultado = mysql_query("SELECT nombre, fecha, comentario, idnombre FROM comentarios WHERE (idperfil = '$idperfil')");
        while($fila = mysql_fetch_array($resultado)){
            echo "<br/>";
            echo "<br/>";
            echo "Nombre: <a href='perfil.php?id=".$fila['idnombre']."'>".$fila['nombre']."</a>";
            echo "<br/>";
            echo "----";
            echo "<br/>";
            echo "Comentario: ".$fila['comentario'];
            echo "<br/>";
            echo "---------------------------------------";
            echo "<br/>";
        }
  }
}
else{
    echo "Tienes que estar logeado para estar aqui";
}
?>

PASO 3 

login.php

<?php
include("conexion.php");
if(isset($_POST['enviar']))
{
    $nick = $_POST['nick'];
    $pass = $_POST['pass'];
    if(isset($nick) && isset($pass))
    {
        $resultado = mysql_query("SELECT nick, pass ,estado, id FROM pruebas WHERE (nick = '$nick') AND (pass = md5('$pass'))");
        if(mysql_num_rows($resultado) > 0)
        {
            $fila = mysql_fetch_array($resultado);
            if($fila['estado'] == 1){
                $_SESSION['nick'] = $nick;
                $_SESSION['logeado'] = true;
                $_SESSION['id'] = $fila['id'];
            }
            else{
                echo "Su cuenta no a sido activada";
            }
        }
        else{
        echo "Usuario o contraseña incorrectos.";
        }
    }
    else{
    echo "Usuario o contraseña incorrectos.";
    }
}
?>
<?php
if($_SESSION['logeado'] == true){//abre logeo
echo "Usted ".$_SESSION['nick']." esta logeado";
?>
</br></br>
<a href="<?php $_SERVER['PHP_SELF']?>?desconectar=1">Salir</a>
</br>
</br>
<a href="<?php $_SERVER['PHP_SELF']?>?borrar=1">Eliminar cuenta</a>
</br>
</br>
<a href="<?php $_SERVER['PHP_SELF']?>?cambiar=1">Cambiar contraseña</a>
</br>
</br>
<a href="leermensaje.php">Leer mensajes privados</a>
<?php
    $nick = $_SESSION['nick'];
    $resultado = mysql_query("SELECT id FROM pruebas WHERE (nick = '$nick')");
    $fila = mysql_fetch_array($resultado);
    $idperfil = $fila['id'];
    $resultado = mysql_query("SELECT nombre, fecha, comentario, idnombre FROM comentarios WHERE (idperfil = '$idperfil')");
    while($fila = mysql_fetch_array($resultado)){
    echo "<br/>";
    echo "<br/>";
    echo "Nombre: <a href='perfil.php?id=".$fila['idnombre']."'>".$fila['nombre']."</a>";
    echo "<br/>";
    echo "----";
    echo "<br/>";
    echo "Comentario: ".$fila['comentario'];
    echo "<br/>";
    echo "---------------------------------------";
    echo "<br/>";
    }
}//if donde termina el logeo
else{
?>
<html>
<head>
<title>Login</title>
</head>
<body>
<form method="post" action="login.php">
Nick:<input type="text" name="nick">
Password:<input type="password" name="pass">
<input type="submit" name="enviar">
</form>
<a href="<?php $_SESSION['PHP_SELF']?>?recordar=1">Recordar contraseña</a>
</body>
</html>
<?php
}
?>

PASO 4

leermensaje.php

<?php
include("conexion.php");
if($_SESSION['logeado'] == true){
    if(empty($_GET['idmensaje'])){
        $id = $_SESSION['id'];
        $nick = $_SESSION['nick'];
        $resultado = mysql_query("SELECT * FROM mensajes WHERE (idreceptor = '$id')");
        echo "<table width='737' height='31' border='1'>";
        echo "<tr>";
        echo "<td width='109'>De:</td>";
        echo "<td width='265'>Asunto:</td>";
        echo "<td width='400'>Mensaje:</td>";
        echo "</tr>";
        echo "</table>";
        while($fila = mysql_fetch_array($resultado)){
        echo "<table width='737' height='31' border='1'>";
        echo "<tr>";
        echo "<td width='109'><a href='leermensaje.php?idmensaje=".$fila['idmensaje']."'>".$fila['nombre']."</a></td>";
        echo "<td width='265'>".$fila['asunto']."</td>";
        echo "<td width='400'>".$fila['mensaje']."</td>";
        echo "</tr>";
        echo "</table>";
        }
    }
    else{
        $idmensaje = $_GET['idmensaje'];
        $resultado = mysql_query("SELECT nombre, mensaje, asunto FROM mensajes WHERE (idmensaje = '$idmensaje')");
        $fila = mysql_fetch_array($resultado);
        echo "De: ".$fila['nombre'];
        echo "<br />";
        echo "--------------------------------------------------------------------------------";
        echo "<br />";
        echo "Asunto: ".$fila['asunto'];
        echo "<br />";
        echo "--------------------------------------------------------------------------------";
        echo "<br />";
        echo "Mensaje: ".$fila['mensaje'];
    }
}
else{
    echo "Debe estar logeado para estar aqui";
}
?>

PASO 5

registro.php

<?php
include("conexion.php");
if(isset($_POST['registro']))
{
  if(($_POST['nick'] != '') && ($_POST['pass'] != '') && ($_POST['mail'] != ''))
  {
   if($_POST['pass'] == $_POST['confpass'])
    {
     $nick = $_POST['nick'];
     $pass = md5($_POST['pass']);
     $mail = $_POST['mail'];
      $resultado = mysql_query("SELECT nick, mail FROM pruebas WHERE (nick = '$nick') OR (mail = '$mail')");
      $fila = mysql_fetch_array($resultado);
      if($fila['nick'] == $nick)
      {
      echo "El nick esta en uso";
      }
      elseif($fila['mail'] == $mail)
      {
      echo "El mail esta en uso";
      }
      else
      {
      if(eregi("@" , $mail)){
      $codigo= uniqid();
      mysql_query("insert into pruebas(nick,pass,mail,codigo,estado) values                                         ('$nick','$pass','$mail','$codigo',0)");
      echo 'Los datos han sido enviados correctamente';
      }
      else
      echo "Mail no valido";
      }
    }
    else
    {
    echo 'Las contraseñas no coinciden';
    }
  }
    else
    {
    echo 'Debera completar todos los campos';
    }
}
if($_SESSION['logeado'] == true){
echo "Usted esta logeado";
}
else{
?>
<html>
<head>
<title>Registro</title>
</head>
<body>
<form method="post" action="registro.php">
nick
<input type="text" name="nick" value="<?php echo $_POST['nick'];?>">
pass
<input type="password" name="pass">
confirmar contraseña
<input type="password" name="confpass">
mail
<input type="text" name="mail" value="<?php echo $_POST['mail'];?>">
<input type="submit" value="enviar" name="registro">
</form>
</body>
</html>
<?php
}
?>

PASO 6

enviarmensaje.php

<?php
include("conexion.php");
if($_SESSION['logeado'] == true){
    if(isset($_POST['mandar'])){
        if(isset($_POST['asunto']) && isset($_POST['mensaje'])){
            $id = $_SESSION['idreceptor'];
            $resultado = mysql_query("SELECT nick, id FROM pruebas WHERE (id = '$id')");
            $fila = mysql_fetch_array($resultado);
                $idreceptor = $fila['id'];
                $receptor = $fila['nick'];
                $idnombre = $_SESSION['id'];
                $nombre = $_SESSION['nick'];
                $asunto = $_POST['asunto'];
                $mensaje = $_POST['mensaje'];
                if(mysql_query("INSERT INTO mensajes (nombre,mensaje,asunto,idnombre,receptor,idreceptor) VALUES ('$nombre', '$mensaje', '$asunto', '$idnombre', '$receptor', '$idreceptor')")){
                    echo "Mensaje enviado con exito";
                }
                else{
                    echo "Error al enviar el mensaje, por favor vuelva a intentarlo";
                }
        }
        else{
            echo "Debe rellenar todos los campos para enviar un mensaje privado";
        }
    }
    ?>
    <html>
    <head>
    <title>Enviar mensaje</title>
    </head>
    <body>
    <form method="post" action="enviarmensaje.php">
    Asunto<input type="text" name="asunto" />
    Mensaje<textarea name="mensaje"></textarea>
    <input type="submit" name="mandar" />
    </form>
    </body>
    </html>
    <?php
}
else{
    echo "Para enviar un mensaje debe estar logeado";
}
?>

PASO 7

confirmar.php

<?php
include("conexion.php");
$codigo = $_GET['codigo'];
$resultado = mysql_query("SELECT estado FROM pruebas WHERE (codigo = '$codigo')");
$fila = mysql_fetch_array($resultado);
if($fila['estado'] == 0){
    $estado = 1;
    if(mysql_query("UPDATE pruebas SET estado = '$estado' WHERE (codigo = '$codigo')")){
        echo "Su cuenta a sido activada";
    }
    else{
    echo "Se a producido un error, por favor vuelva a cargar la pagina";
    }
}
?>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Confirmar cuenta</title>
</head>
<body>
</body>
</html>