Base de datos (baneo - name - pass) + registro + chat + redi
Working locally, you can insert more tables such as level, gp, cash, gold, avatar, photo among other things, these files do not include facebook sdk, you can ban if you want, you are working on what is the Sdk + Files, attentive, thanks

archivos:
http://ya.mba/Ev

ejemplo:
http://ya.mba/Eu

credits:
JuLiAnChz

Code:
Que crearemos 
Crearemos un sencillo chat, crearemos un inicio de sesion y un registro de usuarios para ponerlo mas interesante, tambien crearemos un rango ( Admin ), un sistema de baneo, un sistema de publicar un mensaje de bienvenida, otorgar privilegios a un usuario ( convertirlo en admin ).El chat estará situado con un iframe, es algo obsoleto pero te servirá para que aprendas mucho. Tambien detectaremos si el usuario esta conectado o desconectado, esto lo interpretaremos con 1 y 0, 1 = Online y 0 = Offline.

Que necesitamos 
Necesitamos un interpretador de php ( Apache ) y conocimientos basicos de programación. Y si se te facilita un editor de texto avanzado como notepad++, netbeans 7.0, etc.

Bueno manos a la obra !!


Primero que todo aclaro algo si tienes Xampp, debes crear los archivos .php dentro de la carpeta htdocs, si usas appserv guardas los ficheros en la carpeta www para que puedan ser publicados y vistos en la dirección httplocalhost. creamos un archivo llamado index.php, este inicio tendra un formulario de registro en html aquí está

index.php

html
head
titleRegistrotitle
head
body
h1Bienvenidoh1
form method=POST action=regis_user.php
br
Nombrebr
input type=text name=nombre size=20
br
Apellidos
br
input type=text name=apellidos size=20
br
Login
br
input type=text name=login size=20
br
Password
br
input type=password name=pass1 size=20
br
Re-Password
br
input type=password name=pass2 size=20
br
Email
br
input type=text name=email size=20
br
input type=submit value=Enviar
br
form
labela href=login.phpYa estas registradoalabel


Como ven este formulario se esta dirigiendo a un archivo llamado regis_user.php, este archivo se encargara de inyectar al usuario a la base de datos. PERO QUE ..... NO HEMOS CREADO LA BASE DE DATOS!!, sencillo en tu phpmyadmin crea una base de datos llamada sistemas y en sql inserta el siguiente código

CREATE TABLE `bienvenida` (
   `mensaje` varchar(400) NOT NULL
) ENGINE=Aria DEFAULT CHARSET=utf8;


CREATE TABLE `mensajes` (
  `id` int(2) NOT NULL auto_increment,
  `alias` varchar(20) NOT NULL,
  `mensaje` varchar(120) NOT NULL,
  `ip` varchar(20) NOT NULL,
  `fecha` varchar(20) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=24 ;

CREATE TABLE `usuarios` (
  `id` int(4) NOT NULL auto_increment,
  `nombre` text,
  `apellidos` text,
  `login` varchar(40) NOT NULL,
  `password` varchar(80) NOT NULL,
  `email` text,
  `estado` int(11) NOT NULL default '0',
  `banned` int(11) NOT NULL default '0',
  `rango` int(11) NOT NULL default '0',
  UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;


Perfecto!!! ahora si podremos continuar con nuestro chat, en que íbamos...... ah si regis_user.php este se encargara de inyectar en la base de datos los datos puestos por el usuario en el formulario anterior. el codigo de este archivo es el siguiente

regis_user.php
php
include(config.php);
$nombre = htmlspecialchars(trim($_POST['nombre']));
$apell = htmlspecialchars(trim($_POST['apellidos']));
$login = htmlspecialchars(trim($_POST['login']));
$pass1 = trim($_POST['pass1']);
$pass2 = trim($_POST['pass2']);
$email = htmlspecialchars(trim($_POST['email']));
$link = mysql_connect($datos[0],$datos[1],$datos[2]);
$query = sprintf(SELECT login FROM usuarios WHERE usuarios.login='%s',
mysql_real_escape_string($login));
$result = mysql_db_query($datos[3],$query,$link);
if(mysql_num_rows($result)){
    echo usuario ya existente, porfavor intentalo de nuevo.;
} else {
mysql_free_result($result);
if($pass1 != $pass2){
echo Los passwords deben coincidir, por favor intentalo de nuevo.;
} else {
$pass1 = sha1(md5($pass1));
$query = sprintf(INSERT INTO usuarios (nombre, apellidos, login, password, email) VALUES ('%s','%s','%s','%s','%s'),
mysql_real_escape_string($nombre) , mysql_real_escape_string($apell),
mysql_real_escape_string($login) , mysql_real_escape_string($pass1),
mysql_real_escape_string($email));
$result = mysql_db_query($datos[3],$query,$link);
if(mysql_affected_rows()){
echo usuario introducido correctamente.br;
echo a href='login.php'Iniciar Sesióna;
} else {
echo Error introduciendo el usuario;
}
}
}



Pero como ven estamos incluyendo un archivo llamado config.php este se encarga de la contraseña, el nombre de usuario y el nombre de la base de datos, el codigo es el siguiente 

config.php

php
$datos = array('0' = 'localhost',
              '1' = 'root',
              '2' = 'password',
              '3' = 'sistemas');




Bien ahora creamos el archivo que permitira que si una persona ya esta registrada pueda ingresar al chat, llamaremos este archivo login.php y el codigo será el siguiente.

login.php

php
session_start();
if(isset($SESSION)){
header(Locationusuarios.php);
} else {

h1Identificacionh1
form action=inicio_sesion.php method=post
login
br
input type=text name=login
br
Password
br
input type=password name=pass
br
input type=submit value=Ingresar
form
labela href=index.phpDeseas registrartealabel
php
}



Bien anteriormente en login.php vemos que es un formulario de ingreso pero tenemos un condicional (if) este lo que hace es verificar si la persona que ingrese a esta seccion esta logeada o no, si lo esta lo mandara a la zona de usuarios y si no lo esta pedira que por favor se identifique.

Bien ahora crearemos otro archivo llamado inicio_sesion.php este lo que hará es verificar si el usuario esta registrado en la base de datos y si lo esta su sesion estara iniciada, el codigo de este archivo es 

inicio_sesion.php

php
session_start();
include(config.php);
$login = htmlspecialchars(trim($_POST['login']));
$pass = sha1(md5(trim($_POST['pass'])));
$link = mysql_connect($datos[0],$datos[1],$datos[2]);
$query = sprintf(SELECT nombre,apellidos,login,password,email FROM usuarios WHERE login='%s'and password='%s',
mysql_real_escape_string($login), mysql_real_escape_string($pass));
$result = mysql_db_query($datos[3],$query,$link);
if(mysql_num_rows($result)){
$array = mysql_fetch_array($result);
$_SESSION[login] = $array[login];
$_SESSION[nombre] = $array[nombre];
$_SESSION[apellidos] = $array[apellidos];
$_SESSION[email] = $array[email];
header(Locationuser.php);
} else {
echo Login o password incorrectos.;
}





Ahora crearemos la pagina principal que contendrá todo, esta pagina la llamo user.php esta pagina tendra todo el chat y si es administrador un pequeño panel administrativo,, tambien enviara a la base de datos un 1 para indicar que el usuario esta conectado. El código de este archivo es 

user.php

php
session_start();
include(config.php);
mysql_connect($datos[0],$datos[1],$datos[2]);
mysql_select_db($datos[3]);
$bd = SELECT banned FROM usuarios WHERE login='.$_SESSION['login'].';
$rank = SELECT rango FROM usuarios WHERE login='.$_SESSION['login'].';
$res = mysql_query($rank);
$rango = mysql_fetch_array($res);
$result = mysql_query($bd);
$ban = mysql_fetch_array($result);
if($ban[banned] == 0){
if(!isset($_SESSION)){
header(Locationlogin.php);
} else {
echo ;
echo h1Pagina Principalh1;
echo Bienvenido a la zona de usuarios strong;
echo $_SESSION[nombre]. .$_SESSION[apellidos].br;
echo strong Has ingresado con el nick  strong ;
echo $_SESSION[login];
echo strongbr;
echo a href='logout.php'Cerrar Sesiona;
echo ;
}
$sql = UPDATE usuarios SET estado=1 WHERE login='.$_SESSION['login'].';
mysql_query($sql);

titleBienvenidotitle
table width=400 border=0 align=center cellpadding=0 cellspacing=0
tr
td width=400iframe src=mensajes.php width=700 height=300 scrolling=noiframetd
tr
tr
td align=centerform id=form1 name=form1 method=post action=ejecutar.php
labellabel
labellabel
table width=100% border=0 cellspacing=0 cellpadding=0
tr
td
label
php $alias = $_SESSION['login']; echo $alias. dice ; 
labeltd
td bgcolor=#FFFFFFMensajebr
    script
    contenido_textarea = 
    num_caracteres_permitidos = 100
    
    function valida_longitud(){
        num_caracteres = document.forms[0].mensaje.value.length 

   if (num_caracteres  num_caracteres_permitidos){ 
      document.forms[0].mensaje.value = contenido_textarea 
   }else{ 
      contenido_textarea = document.forms[0].mensaje.value    
   } 

   if (num_caracteres = num_caracteres_permitidos){ 
      document.forms[0].caracteres.style.color=#ff0000; 
   }else{ 
      document.forms[0].caracteres.style.color=#000000; 
   } 

   cuenta() 
} 
function cuenta(){ 
   document.forms[0].caracteres.value=document.forms[0].mensaje.value.length 
} 
    
    script
textarea name=mensaje cols=40 rows=5 onKeyDown=valida_longitud() onKeyUp=valida_longitud()textarea
br input type=text name=caracteres size=4br
input type=submit name=submit value=Enviar
td
tr
table
formtd
tr
table
php
if($rango['rango'] = 5){
echo Panel Administrativo.br;
echo Que deseas realizarbr;

iRecuerda escribir todo con exactitud.bri
form method=post
select name=sel
option selectedElejiroption
optionBanear una cuentaoption
optionDar rangooption
optionCambiar mensaje de bienvenidaoption
selectbr
Nick input type=text name=nick size=10br
Valor input type=text name=valor size=10br
input type=submit value=Realizarbr
php
$nick = $_POST['nick'];
$valor = $_POST['valor'];
$sel = $_POST['sel'];
switch($sel){
case(Banear una cuenta)
$sql = UPDATE usuarios SET banned='.$valor.' WHERE login='.$nick.';
mysql_query($sql);
echo El usuario .$nick. ah sido baneado con exito.;
break;
case(Dar rango)
$sql = UPDATE usuarios SET rango='.$valor.' WHERE login='.$nick.';
mysql_query($sql);
echo El usuario .$nick. se le ah asignado nivel .$valor;
break;
case(Cambiar mensaje de bienvenida)
$sql = UPDATE bienvenida SET mensaje='.$valor.'; 
mysql_query($sql);
echo Mensaje de bienvenida cambiado a font color='green'.$valor.font.;
break;
default
echo Selecciona porfavor;
}
echo form;
}

php
}else{
    echo La cuenta ah sido baneada por motivos de seguridad.a href='index.php'Regresara;
}




Ahora creamos otro archivo llamado ejecutar.php este se encarga de recibir los mensajes que los usuarios envien y guardarlos en una base de datos eh aquí el código

ejecutar.php

php
session_start();
$mensaje=$_POST['mensaje'];
$alias = $_SESSION['login'];
$ip=$_SERVER['REMOTE_ADDR'];
$fecha=date(H-i-s);
if($alias!= and $mensaje!=) {
mysql_connect(localhost,root,28927420);
mysql_select_db(sistemas);
mysql_query(insert into mensajes(alias,mensaje,ip,fecha) values('$alias','$mensaje','$ip','$fecha'));
$conteo=mysql_query(select count() from mensajes group by fecha);
$primero=mysql_query(select min(id) from mensajes);
$repri=mysql_result($primero,0);
$registros=mysql_num_rows($conteo);
if($registros15) {
mysql_query(delete from mensajes where id=$repri);
}
}
header(Locationuser.php);





Ahora crearemos un archivo que se llame mensajes.php este se encarga de llamar de la base de datos los mensajes que los usuarios envían y los imprime. el código aquí

mensajes.php

php
session_start();
include(config.php);
mysql_connect($datos[0],$datos[1],$datos[2]);
mysql_select_db($datos[3]);
header('refresh2; url=mensajes.php');

link href=estilo.css rel=stylesheet type=textcss 
style type=textcss
!--
body {
    background-color #CDC1C5;
}
--
styletable width=202 border=0 cellspacing=0 cellpadding=0
Sala principal...             
                
php
$sql = SELECT  FROM bienvenida;
$query = mysql_query($sql);
$bnv = mysql_fetch_array($query);
echo font color='red'.$bnv[0]. FONT--font color='green' .$_SESSION['login'].font;

hr
  tr
    td width=202
   php
                $rank = SELECT rango FROM usuarios WHERE login='.$_SESSION['login'].';
                $res = mysql_query($rank);
                $rango = mysql_fetch_array($res);
        $re=mysql_query(select  from mensajes order by id desc);
                
        while($f=mysql_fetch_array($re)){
                
        echo scpan class='fecha'span.$f['fecha'].  span class='usuario'.$f['alias'].span   span class='mensaje'.htmlentities($f['mensaje']).spanbr;
        
                }
                
        td
  tr
table



Le daré un poquito de diseño con css, la verdad soy muy malo cuando se trata de diseño asi que por eso es algo muy sencillo el archivo css se llamara estilo.css y su código es

estilo.css

.fecha {
font-family Arial, Helvetica, sans-serif;
font-size 10px;
color #000000;
}
.mensaje {
font-family Arial, Helvetica, sans-serif;
font-size 11px;
color #000000;
}
.usuario {
font-family Arial,Helvetica, sans-serif;
font-size 11px;
color #000000;
font-weight bold;
}
.fechagm {
font-family Arial, Helvetica, sans-serif;
font-size 10px;
color #FF0000;
}
.mensajegm {
font-family Arial, Helvetica, sans-serif;
font-size 11px;
color orange;
}
.usuariogm {
font-family Arial,Helvetica, sans-serif;
font-size 11px;
color #3D9140;
font-weight bold;
}



Bien ahora para terminar crearemos el ultimo archivo y es el que hará que el usuario destruya su sesion y mande a la base de datos que esta desconectado(0 = offline), este archivo lo llamo logout.php y su código es 

logout.php

php
session_start();
if(!isset($_SESSION)){
header(Locationlogin.php);
} else {
include(config.php);
mysql_connect($datos[0],$datos[1],$datos[2]);
$db = mysql_select_db($datos[3]);
$sql = UPDATE usuarios SET estado=0 WHERE login='.$_SESSION['login'].';
mysql_query($sql);
session_unset();
session_destroy();
echo centerLa sesion ah sido cerrada con exito, si deseas identificarte entra a href='login.php'AQUIa;
echo center;
}

Last edited by Ale (2017-05-07 02:09:11)