[PHP] Sistema de Mensajes Privados

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:

Dargento

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
25 Feb 2012
Mensajes
114
Gracias strings, muy interesante. Me viene de 10 para analizarlo cómo funciona :encouragement:.
 

Mr. Nitro

1
Ro
Social Media
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
26 Mar 2012
Mensajes
7.725
muy interesante, pero, ¿en qué sitios de web podríamos implementarlo?
 
S

Strings

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:

Franyer Rivas

1
Pi
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Verificado por Binance
Suscripción a IA
Desde
11 Ago 2010
Mensajes
5.614
esta genial , muchas gracias por el aporte :encouragement:
 

Jhoubert

Beta
Verificado por Whatsapp
¡Ha verificado su Paypal!
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
19 Nov 2012
Mensajes
102
Se ve interesante... lo revisare... gracias por el aporte.. :D
 

Gustavito

Dseda
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
26 Abr 2013
Mensajes
1.213
Buen aporte gracias solo una consulta es asi: config-index.php o asi config/index.php ? Saludos.
 
S

Strings

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"); 
?>
 
Arriba