[PHP] Sistema de Mensajes Privados

  • Autor Autor Strings
  • Fecha de inicio Fecha de inicio
S

Strings

Es un sistema de mensajes privados
Las caracteristicas que tiene son:

  1. Iniciar Session
  2. Registro
  3. Leer mensajes de terceros y eliminarlos
  4. Leer tus mensajes enviados y eliminarlos
  5. Crear nuevos mensajes.
  6. Logout

config/index.php
PHP:
<?php
    $connection = mysqli_connect("host","user","pass","db");
?>

Index.php:
PHP:
<?php
ob_start();
session_start();
require('config/index.php');

if(isset($_SESSION['username'])):
    header('Location: /mp.php');
else:
    if(isset($_POST['login'])):
        if(empty($_POST['username']) || empty($_POST['password'])):
	        echo 'Hay datos en blanco';
	    elseif(strlen($_POST['username']) > 30):
	        echo 'El usuario no puede tener mas de 30 caracteres';
	    else:
	        $login = mysqli_query($connection, "SELECT username,password FROM username WHERE username = '".mysqli_real_escape_string($connection, $_POST['username'])."' AND password = '".mysqli_real_escape_string($connection, hash('ripemd160', $_POST['password']))."'");
		    if($login1 = mysqli_fetch_assoc($login)):
		        $_SESSION['username'] = $_POST['username'];
			    header('Location: /mp.php');
	            echo 'Datos correctos';
		    else:
		        echo 'Datos incorrectos';
		    endif;
	    endif;
    endif;
endif;
?>
<form action="" method="post">
    <input name="username" type="text" placeholder="Introduce tu usuario"><br>
	<input name="password" type="password" placeholder="Introduce tu contraseña"><br>
	<input name="login" type="submit" value="Iniciar Session">
</form>

<a href="/register.php">Registrate</a>

register.php
PHP:
<?php
ob_start();
session_start();
require('config/index.php');

if(isset($_SESSION['username'])):
    header('Location: /mp.php');
else:
    if(isset($_POST['register'])):
	    if(empty($_POST['email']) || empty($_POST['username']) || empty($_POST['password'])):
		    echo 'No dejes campos en blanco';
	    elseif(strlen($_POST['email']) > 30):
		    echo 'El email no puede tener mas de 30 caracteres';
	    elseif(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)):
		    echo 'El email no es valido';
	    elseif(strlen($_POST['username']) > 30):
		    echo 'El username no puede tener mas de 30 caracteres';
	    else:
		    $email = mysqli_query($connection, "SELECT email FROM username WHERE email = '".mysqli_real_escape_string($connection, $_POST['email'])."'");
		    if($email1 = mysqli_fetch_assoc($email)):
			    echo 'El email ya existe';
		    else:
			    $user = mysqli_query($connection, "SELECT user FROM username WHERE user = '".mysqli_real_escape_string($connection, $_POST['username'])."'");
			    if($user1 = mysqli_fetch_assoc($user)):
				    echo 'El usuario ya existe';
			    else:
				    mysqli_query($connection, "INSERT INTO username(id,email,username,password,fecha,ip) VALUES ('', '".mysqli_real_escape_string($connection, $_POST['email'])."', '".mysqli_real_escape_string($connection, $_POST['username'])."', '".mysqli_real_escape_string($connection, hash('ripemd160', $_POST['password']))."', '".date("Y-m-d")."', '".$_SERVER['SERVER_ADDR']."')");
		            $_SESSION['username'] = $_POST['username'];
		            header('Location: /mp.php');
			    endif;
		    endif;
	    endif;
	endif;
endif;
?>
<form method="post">
    <input name="email" type="email" placeholder="Introduce tu email"><br>
    <input name="username" type="text" placeholder="Introduce tu usuario"><br>
	<input name="password" type="password" placeholder="Introduce tu contraseña"><br>
	<input name="register" type="submit" value="Registrate">
</form>

mp.php
PHP:
<link rel="stylesheet" href="http://rawgithub.com/cheeaun/mooeditable/master/Assets/MooEditable/MooEditable.css">
<script src="http://ajax.googleapis.com/ajax/libs/mootools/1.3.0/mootools-yui-compressed.js"></script>
<script src="http://rawgithub.com/cheeaun/mooeditable/master/Source/MooEditable/MooEditable.js"></script>
<script>
	window.addEvent('domready', function(){
		$('textarea-1').mooEditable();
	});
</script>
<?php
ob_start();
session_start();
require('config/index.php');

if(isset($_SESSION['username'])):
    if(@$_GET['action'] == 'delete-receptor' AND isset($_GET['id'])):
		$mensaje = mysqli_query($connection, "SELECT id,title,message FROM mp WHERE id = '".mysqli_real_escape_string($connection, $_GET['id'])."' AND receptor = '".$_SESSION['username']."'");
		if($mensaje1 = mysqli_fetch_assoc($mensaje)):
		    mysqli_query($connection, "DELETE FROM mp WHERE id = '".mysqli_real_escape_string($connection, $_GET['id'])."' AND receptor = '".$_SESSION['username']."'");
		    header('Location: ?action=recibido');
		else:
		    echo 'No puedes eliminar este mensaje<br>';
		endif;
	elseif(@$_GET['action'] == 'recibido' AND isset($_GET['id'])):
	    $mensaje = mysqli_query($connection, "SELECT id,title,message FROM mp WHERE id = '".mysqli_real_escape_string($connection, $_GET['id'])."' AND receptor = '".$_SESSION['username']."'");
		if($mensaje1 = mysqli_fetch_assoc($mensaje)):
		    mysqli_query($connection, "UPDATE mp SET leido = 'yes' WHERE id = '".mysqli_real_escape_string($connection, $_GET['id'])."' AND receptor = '".$_SESSION['username']."'");
			echo '<b>Titulo:</b> '.$mensaje1['title'].'<br><b>Mensaje:</b> '.$mensaje1['message'].'<br> <a href="?action=delete-receptor&id='.$mensaje1['id'].'">Eliminar mensaje</a><br>';
		else:
		    echo 'No puedes leer este mensaje<br>';
		endif;
	elseif(@$_GET['action'] == 'recibido'):
        echo '<b>Mensajes Recibidos:</b><br>';
        $receptor = mysqli_query($connection, "SELECT title FROM mp WHERE receptor = '".$_SESSION['username']."'");
	    if($receptor1 = mysqli_fetch_assoc($receptor)):
			$receptor1 = mysqli_query($connection, "SELECT id,title,leido FROM mp WHERE receptor = '".$_SESSION['username']."' ORDER BY leido");
			while($receptor2 = mysqli_fetch_assoc($receptor1)):
	            if($receptor2['leido'] == 'no'):
				    echo '<a href="?action=recibido&id='.$receptor2['id'].'">'.$receptor2['title'].'</a> <img src="http://i.imgur.com/VROg8Bx.png"></img><br>';
				else:
				    echo '<a href="?action=recibido&id='.$receptor2['id'].'">'.$receptor2['title'].'</a><br>';
				endif;
	        endwhile;
		else:
	        echo 'No haz enviado ningun mensaje<br><br>';
	    endif;
    elseif(@$_GET['action'] == 'delete-emisor' AND isset($_GET['id'])):
		$mensaje = mysqli_query($connection, "SELECT id,title,message FROM mp WHERE id = '".mysqli_real_escape_string($connection, $_GET['id'])."' AND emisor = '".$_SESSION['username']."'");
		if($mensaje1 = mysqli_fetch_assoc($mensaje)):
		    mysqli_query($connection, "DELETE FROM mp WHERE id = '".mysqli_real_escape_string($connection, $_GET['id'])."' AND emisor = '".$_SESSION['username']."'");
		    header('Location: ?action=enviado');
		else:
		    echo 'No puedes eliminar este mensaje<br>';
		endif;
	elseif(@$_GET['action'] == 'enviado' AND isset($_GET['id'])):
	    $mensaje = mysqli_query($connection, "SELECT id,title,message FROM mp WHERE id = '".mysqli_real_escape_string($connection, $_GET['id'])."' AND emisor = '".$_SESSION['username']."'");
		if($mensaje1 = mysqli_fetch_assoc($mensaje)):
			echo '<b>Titulo:</b> '.$mensaje1['title'].'<br><b>Mensaje:</b> '.$mensaje1['message'].' <a href="?action=delete-emisor&id='.$mensaje1['id'].'">Eliminar mensaje</a><br>';
		else:
		    echo 'No puedes leer este mensaje<br>';
		endif;
	elseif(@$_GET['action'] == 'enviado'):
        echo '<b>Mensajes Enviados:</b><br>';
        $emisor = mysqli_query($connection, "SELECT title FROM mp WHERE emisor = '".$_SESSION['username']."'");
	    if($emisor1 = mysqli_fetch_assoc($emisor)):
			$emisor1 = mysqli_query($connection, "SELECT id,title FROM mp WHERE emisor = '".$_SESSION['username']."'");
			while($emisor2 = mysqli_fetch_assoc($emisor1)):
	            echo '<a href="?action=enviado&id='.$emisor2['id'].'">'.$emisor2['title'].'</a><br>';
	        endwhile;
		else:
	        echo 'No haz enviado ningun mensaje<br><br>';
	    endif;
	elseif(@$_GET['action'] == 'create'):
	    if(isset($_POST['enviar'])):
		    if(empty($_POST['username']) || empty($_POST['title']) || empty($_POST['message'])):
			    echo 'Haz dejado campos en blanco';
			else:
				$email = mysqli_fetch_assoc(mysqli_query($connection, "SELECT email FROM username WHERE username = '".mysqli_real_escape_string($connection, $_POST['username'])."'"));
				if($email):
				        mysqli_query($connection, "INSERT INTO mp(id,emisor,receptor,title,message,leido,fecha,ip) VALUES ('', '".$_SESSION['username']."', '".mysqli_real_escape_string($connection, $_POST['username'])."', '".mysqli_real_escape_string($connection, $_POST['title'])."', '".mysqli_real_escape_string($connection, $_POST['message'])."', 'no', '".date("Y-m-d")."', '".$_SERVER['SERVER_ADDR']."')");
				        header('Location: ?action=enviado');
				else:
				        echo 'El usuario no existe';
				endif;
			endif;
		endif;
	    echo '<form action="" method="post">
		          <input name="username" placeholder="Usuario para enviarle el mensaje"><br>
			  <input name="title" value="Sin asunto"><br>
			  <textarea class="mooeditable" id="textarea-1" name="message" rows="10" cols="50">Mensaje</textarea><br>
			  <input name="enviar" type="submit" value="Enviar mensaje">
		    </form>';
	endif;
	    echo '<br><a href="?action=create">Enviar mensaje</a> | <a href="?action=recibido">Mensajes recibidos</a> | <a href="?action=enviado">Mensajes enviados</a> | <a href="/logout.php">Salir</a><hr>';
else:
    header('Location: /index.php');
endif;
?>

logout.php
PHP:
<?php
session_start();
session_destroy();
header('Location: /index.php');
?>


DB:
PHP:
CREATE TABLE IF NOT EXISTS `mp` (
  `id` mediumint(9) NOT NULL AUTO_INCREMENT,
  `emisor` varchar(30) NOT NULL,
  `receptor` varchar(30) DEFAULT NULL,
  `title` text NOT NULL,
  `message` text NOT NULL,
  `leido` enum('yes','no') NOT NULL,
  `fecha` varchar(10) DEFAULT NULL,
  `ip` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`id`)
)

CREATE TABLE IF NOT EXISTS `username` (
  `id` mediumint(9) NOT NULL AUTO_INCREMENT,
  `email` varchar(30) NOT NULL,
  `username` varchar(30) DEFAULT NULL,
  `password` varchar(40) DEFAULT NULL,
  `fecha` varchar(10) DEFAULT NULL,
  `ip` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`id`)
)
 
Última edición por un moderador:
Gracias strings, muy interesante. Me viene de 10 para analizarlo cómo funciona :encouragement:.
 
muy interesante, pero, ¿en qué sitios de web podríamos implementarlo?
 
Gracias strings, muy interesante. Me viene de 10 para analizarlo cómo funciona :encouragement:.
Gracias a ti por comentar, si quieres revisarlo el mp.php tienes que ordenarlo un poco mas porque esta todo muy junto y se te va hacer dificil entenderlo

muy interesante, pero, ¿en qué sitios de web podríamos implementarlo?
En un login donde puedas crear tus propias noticias, podrias implementar este sistema y en el sistema de noticias puedes poner mi sistema de paginacion http://forobeta.com/php/194436-sistema-de-paginacion.html para poner por ejemplo 10 noticias en cada pagina
 
Última edición por un moderador:
esta genial , muchas gracias por el aporte :encouragement:
 
Se ve interesante... lo revisare... gracias por el aporte.. 😀
 
Buen aporte gracias solo una consulta es asi: config-index.php o asi config/index.php ? Saludos.
 
Buen aporte gracias solo una consulta es asi: config-index.php o asi config/index.php ? Saludos.

Creas una carpeta llamada config, dentro de esa carpeta creas un archivo llamado index.php donde tendras que poner
PHP:
<?php 
    $connection = mysqli_connect("host","user","pass","db"); 
?>
 
Creas una carpeta llamada config, dentro de esa carpeta creas un archivo llamado index.php donde tendras que poner
PHP:
<?php 
    $connection = mysqli_connect("host","user","pass","db"); 
?>

Ok gracias no me di cuenta 🙂