Muy buenas Taringueros.
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.
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 http://localhost/. creamos un archivo llamado index.php, este inicio tendra un formulario de registro en html aquí está:
index.php
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:
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:
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
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
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
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
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
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
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
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
Bueno eso es todo, como saben cualquier duda o sugerencia bien y pueden hacermelo saber por comentarios, mensajes no respondo. Muchas gracias por su atención y esperen mas muy pronto .
UN EJEMPLO AQUI

JuLiAnChz
Bienvenido a todo sobre PHP.
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 http://localhost/. creamos un archivo llamado index.php, este inicio tendra un formulario de registro en html aquí está:
index.php
<html>
<head>
<title>Registro</title>
</head>
<body>
<h1>Bienvenido</h1>
<form method="POST" action="regis_user.php">
<br>
Nombre<br>
<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>
<label><a href="login.php">Ya estas registrado?</a></label>
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=MyISAM 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ón</a>";
} 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("Location:usuarios.php");
} else {
?>
<h1>Identificacion</h1>
<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>
<label><a href="index.php">Deseas registrarte?</a></label>
<?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("Location:user.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("Location:login.php");
} else {
echo "";
echo "<h1>Pagina Principal</h1>";
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 "</strong><br>";
echo "<a href='logout.php'>Cerrar Sesion</a>";
echo "";
}
$sql = "UPDATE usuarios SET estado=1 WHERE login='".$_SESSION['login']."'";
mysql_query($sql);
?>
<title>Bienvenido</title>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="400"><iframe src="mensajes.php" width="700" height="300" scrolling="no"></iframe></td>
</tr>
<tr>
<td align="center"><form id="form1" name="form1" method="post" action="ejecutar.php">
<label></label>
<label></label>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<label>
<?php $alias = $_SESSION['login']; echo $alias." dice :"; ?>
</label></td>
<td bgcolor="#FFFFFF">Mensaje<br>
<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=4><br>
<input type="submit" name="submit" value="Enviar">
</td>
</tr>
</table>
</form></td>
</tr>
</table>
<?php
if($rango['rango'] >= 5){
echo "Panel Administrativo.<br>";
echo "Que deseas realizar?<br>";
?>
<i>Recuerda escribir todo con exactitud.<br></i>
<form method="post">
<select name="sel">
<option selected>Elejir</option>
<option>Banear una cuenta</option>
<option>Dar rango</option>
<option>Cambiar mensaje de bienvenida</option>
</select><br>
Nick :<input type="text" name="nick" size="10"><br>
Valor :<input type="text" name="valor" size="10"><br>
<input type="submit" value="Realizar"><br>
<?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'>Regresar</a>";
}
?>
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($registros>15) {
mysql_query("delete from mensajes where id=$repri");
}
}
header("Location:user.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('refresh:2; url=mensajes.php');
?>
<link href="estilo.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
body {
background-color: #CDC1C5;
}
-->
</style><table 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'])."</span><br>";
}
?></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("Location:login.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 "<center>La sesion ah sido cerrada con exito, si deseas identificarte entra <a href='login.php'>AQUI</a>";
echo "</center>";
}
?>
Bueno eso es todo, como saben cualquier duda o sugerencia bien y pueden hacermelo saber por comentarios, mensajes no respondo. Muchas gracias por su atención y esperen mas muy pronto .
UN EJEMPLO AQUI

JuLiAnChz

