Como dice el titulo , es un simple chat que se divide en 3 partes
install.php
<?php
//Datos para la DB
$host = "localhost";
$user = "root";
$pass = "";
$db = "chat";
echo "
<title>Instalacion de mini chat</title>
<br><br><b>Seguro que desea instalar mini chat</b><br><br>
<form action='' method=POST>
<input type=submit name=instalar value=Instalar>
</form>
<br><br>";
if (isset($_POST['instalar'])) {
if (mysql_connect($host,$user,$pass)) {
$todo2 = "create table $db.mensajes (
id_comentario int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
mensaje TEXT NOT NULL,
apodo VARCHAR(255) NOT NULL,
PRIMARY KEY (id_comentario));
";
if (@mysql_query($todo1)) {
echo "1";
if (@mysql_query($todo2)) {
echo "chat instalado<br>";
}
} else {
echo "error en la instalacion<br>";
}
} else {
echo "error en la conexion con la db<br>";
}
}
?>
admin.php
<?php
$host = "localhost";
$user = "root";
$pass = "";
$usera = "test";
$passa = "test";
if (isset($_GET['user'])) {
if ($_GET['user'] == $usera) {
if ($_GET['pass'] == $passa) {
@mysql_connect($host,$user,$pass);
$re = @mysql_query("select * from chat.mensajes");
if (is_numeric($_GET['id'])) {
if (@mysql_query("delete from chat.mensajes where id_comentario='".$_GET['id']."'")) {
echo "<script>alert('Comentario borrado');</script>";
}
}
while ($ver = @mysql_fetch_array($re)) {
echo "<a href=?user=".$usera."&pass=".$passa."&id=".$ver[0].">Borrar comentario ".$ver[0]."</a><br>";
}
}
}
}
?>
index.php
<?php
$db = "chat"; //
$host = "localhost";
$user = "root";
$pass = "";
echo "
<style>
.main {
word-wrap: break-word;
word-break:break-all;
margin : -287px 0px 0px -490px;
border : White solid 1px;
BORDER-COLOR: #00FF00;
}
td,body {
background-color:black;color:#00FF00;
}
input,textarea,select {
font: normal 10px Verdana, Arial, Helvetica,
sans-serif;
background-color:black;color:#00FF00;
border: solid 1px #00FF00;
border-color:#00FF00
}
</style>";
mysql_connect($host,$user,$pass);
mysql_select_db($db);
echo "<table border=0 width='300' style='table-layout: fixed'>";
echo "<td class=main><b>Mini Chat 0.2</b></td><tr>";
$sumo = mysql_query("SELECT MAX(id_comentario) FROM $db.mensajes");
$s = mysql_fetch_row($sumo);
foreach ($s as $d) {
$total = $d;
}
$test = $total - 10;
if ($test <= 0) {
next;
} else {
$resto = $test;
for ($i = 1; $i <= $resto; $i++) {
@mysql_query("DELETE FROM $db.mensajes where id_comentario='$i'");
}
}
$re = @mysql_query("select * from $db.mensajes order by id_comentario DESC");
while ($ver = @mysql_fetch_array($re)) {
echo "<td class=main><b>".$ver[2]."</b>:".$ver[1]."</td><tr>";
}
echo "<br><br><td class=main><br><b>Dejar mensaje</b><br><br>
<form action='' method=POST>
Apodo : <input type=text name=apodo size=25><br>
Texto : <input type=text name=msg size=25><br><br>
<input type=submit name=chatentro value=Mandar>
</form>
<td><tr>
<td class=main><b>Coded By Doddy H</b></td><tr>
</table>";
if (isset($_POST['chatentro'])) {
$sumo = mysql_query("SELECT MAX(id_comentario) FROM $db"."."."mensajes");
$s = mysql_fetch_row($sumo);
foreach ($s as $d) {
$x_id = $d+1;
}
$apodo = htmlentities(addslashes($_POST['apodo']));
$mensaje = htmlentities(addslashes($_POST['msg']));
$apodo = substr($apodo,0,70);
$mensaje = substr($mensaje,0,70);
$insultos = array("lammer","lamer","puto","noob");
foreach ($insultos as $con) {
$mensaje = str_replace($con,"#$!*",$mensaje);
$apodo = str_replace($con,"#$!*",$apodo);
}
@mysql_query("INSERT INTO $db"."."."mensajes"."("."id_comentario".","."apodo".","."mensaje".")values('".$x_id."','".$apodo."','".$mensaje."')");
echo '<meta http-equiv="refresh" content=0;URL=>';
}
?>
Esa serian las tres partes , el chat tiene las siguientes opciones
- Solo permite 10 mensajes por lo que borra por antiguedad
- Filtra malas palabras
Eso seria todo
Cualquier vulnerabilidad la reportan
men me dice "error en la instalacion" que habrá pasado?
gracias
-------------------
alguien puede ver que está pasando con el codigo?
gracias
edito:
ya lo arreglé, habia un error en la linea 31:
if (@mysql_query($todo1))
en vez de $todo1 era $todo2, pero ahora cuando estoy en el chat, me aparece, este error:
Notice: Use of undefined constant next - assumed 'next' in C:\xampp\htdocs\2\index.php on line 52 que puede ser?
si en esa linea hay:
linea del 51 al 54
if ($test <= 0) {
next;
} else {
$resto = $test;
vuelvo y edito, xD
le puse comillas a el next porque eso era lo que yo lei, xD y funcionó,pero ahora el admin.php no funciona, grax.
Soy yo de nuevo, hay alguna manera de que cuando ingrese a la pagina le pida el nick y este se quede con ese nick y en pantalla diga que nick está conectado?,
grax
Lo que quieres hacer si se puede.. es mas que todo con manejo de sesiones.
Dame un rato de tiempo que ando oxidado en PHP :) reviso los codigos que tengo
Te doy una posible idea de como hacerlo.
Puedes crear una tabla que contenga el nick de quien entro al chat y si todavía esta activo. Osea que cada vez que alguien entre al chat se tome el nick y se cambie el estado.
Muchas web lo que hacen para saber si alguien se desconecto es tomar el ultimo mensaje enviado y si hace mucho tiempo que no escribe nada, lo ponen como desconectado.
Debemos recordar que PHP se ejecuta al lado del servidor y no es posible de saber si alguien esta activo con exactitud, pero se puede tratar de confirmar con el tiempo con que el cliente genera una petición.
Otra buena forma es utilizando Javascript, así sabrías exactamente si el usuario esta activo. Seria combinando PHP, Javascript y un Gestor de Base de Datos.