[PHP] Simple Chat By Doddy H

Iniciado por BigBear, Julio 03, 2011, 09:51:25 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Julio 03, 2011, 09:51:25 PM Ultima modificación: Marzo 27, 2014, 05:55:30 PM por Expermicid
Como dice el titulo , es un simple chat que se divide en 3 partes

install.php

Código: 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

Código: 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

Código: 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


Agosto 08, 2011, 09:11:54 PM #1 Ultima modificación: Agosto 10, 2011, 05:34:57 PM por Gh0st.C
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:
Código: php
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
Código: php
 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
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Llaman traidor a la persona que evito que caiga el foro, gente bruta!



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.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.