Creare una Chat in PHP

Per creare una Chat in PHP abbiamo bisogno di un database in cui registrare i vari messaggi e il nome degli utenti che la usano.

Quindi se abbiamo bisogno di un database abbiamo bisogno anche di creare una tabella, per creare essa bisogna eseguire il seguente codice SQL nel proprio database che crea una tabella nel database di nome Chat.

CREATE TABLE Chat(names VARCHAR(30) NOT NULL, messages VARCHAR(1000) NOT NULL)

Ma ora iniziamo ad analizzare il codice sorgente di come sarà fatta la nostra chat.
Nel seguente codice dobbiamo riempire le configurazioni per accedere al database:

<?php
// Configurazioni
// Variabili di configurazione (indirizzo, username, password)
$mysql_host=””;
$mysql_username=””;
$mysql_password=””;
$mysql_database=””;
?>

Ovviamente bisogna mettere dentro i doppi apici il nome del server, l’username, la password e il nome del database.
Poi per connetterci al database dopo aver inserito i vari dati dobbiamo eseguire il seguente codice php:

<?php
// Connettiamoci a mysql e al database
$connect=mysql_connect($mysql_host, $mysql_username, $mysql_password);
$db=mysql_select_db($mysql_database, $connect);
if(!$connect){echo “<p>Impossibile connettersi al server!</p>”;}
if(!$db){echo “<p>Impossibile connettersi al database!</p>”;}
?>

Ora vediamo una parte della struttura html css e javascript per varie decorazioni.

<html>
<head>
<style type=”text/css”>
.chat {
background-color: transparent;
border: 1px solid;
height:300px;
width:300px;
overflow:auto;
}
</style>

Il codice nei tag style è CSS per decorare il nostro div in cui verrà ambientata la nostra chat.

<script type=”text/Javascript”>
function scroll()
{
var div=document.getElementById(‘chat’);
div.scrollTop=100000000;
}
</script>

Il codice nei tag script è un codice Javascript, serve a mettere lo scroll del div della chat in basso.

<meta http-equiv=”refresh” content=”15; url=<?php echo $_SERVER[‘PHP_SELF’]; ?>”>
</head>
<body OnLoad=”scroll();”>

Il tag meta serve in questo caso a ricaricare la pagina in cui si trova il file della nostra chat la variabile php $_SERVER[‘PHP_SELF’] equivale appunto alla pagina corrente della chat.
Mentre l’ OnLoad nel tag body richiama la funzione javascript scroll().

<center>
<p><font size=”10px;”>Chat</font></p>
<form action=”<?php echo $_SERVER[‘PHP_SELF’]; ?>” method=”POST”>
<div id=”chat” class=”chat”>
<?php
$name=$_POST[‘name’];
$message=$_POST[‘text’];
if ($name AND $message)
{
mysql_query(“INSERT INTO Chat VALUES (‘$name’, ‘$message’);”);
}

Inutile che mi soffermo su ogni tag html quindi passerò subito a descrivere il codice php.
Le variabili $name e $message servono a leggere nome e testo da scrivere nella chat e il codice SQL serve invece a inviare i dati al database.

echo “Benvenuto nella Chat”;
$query_select=mysql_query(“SELECT * FROM Chat”);
while($rows=mysql_fetch_array($query_select))
{

Il codice php ora invece serve a leggere tutto il contenuto della tabella Chat in cui abbiamo registrato ogni nome utente e messaggio di esso.

echo “<p align=”left”>{$rows[‘names’]}:</p><p></p>”;
$messages=htmlspecialchars($rows[‘messages’]);
/*
$messages=str_replace(“:)”, ” <img src=’./Chat/:).png’></img>”, $messages);
$messages=str_replace(“:(“, ” <img src=’./Chat/:(.png’></img>”, $messages);
$messages=str_replace(“=)”, ” <img src=’./Chat/=).png’></img>”, $messages);
$messages=str_replace(“=(“, ” <img src=’./Chat/=(.png’></img>”, $messages);
$messages=str_replace(“:|”, ” <img src=’./Chat/:|.png’></img>”, $messages);
$messages=str_replace(“:P”, ” <img src=’./Chat/:P.png’></img>”, $messages);
$messages=str_replace(“:D”, ” <img src=’./Chat/:D.png’></img>”, $messages);
$messages=str_replace(“D:”, ” <img src=’./Chat/D:.png’></img>”, $messages);
$messages=str_replace(“XD”, ” <img src=’./Chat/XD.png’></img>”, $messages);
$messages=str_replace(“xD”, ” <img src=’./Chat/xD.png’></img>”, $messages);
$messages=str_replace(“:/”, ” <img src=’./Chat/:||.png’></img>”, $messages);
*/
echo “<p align=”left”>$messages</p>”;
}
?>

Questo codice invece serve a stampare i dati nel nostro div. Ho messo in commento anche la modifica della variabile $messages che sostituisce i le faccine con delle immagini situate nella cartella “Chat” in modo tale che se uno volesse attivarle può liberamente come può anche lasciarle disattivate.

</div>
<table>
<tr>
<td>Nome:</td>

Il resto del codice è tutta struttra html ma volevo soffermarmi su questo tag input. Qui come potete vedere ho messo un codice php che stampa la variabile $name nel value del tag input in modo tale che un utente non deve riscrivere il proprio nome dopo averlo scritto.

<td><input type=”text” name=”name” value=”<?php echo $name; ?>”></td>
</tr>
<tr>
<td>Testo:</td>
<td><textarea name=”text”></textarea></td>
</tr>
<table>
<tr>
<td><input type=”submit” value=”Invia”></td>
<td><input type=”reset” value=”Resetta”></td>
</tr>
</table>
</form>
</center>
</body>
</html>

Ho creato anche un tool per cancellare il contenuto della chat.

<?php
//Configurazioni
$mysql_host=””;
$mysql_username=””;
$mysql_password=””;
$mysql_database=””;
$connect=mysql_connect($mysql_host, $mysql_username, $mysql_password);
$db=mysql_select_db($mysql_database, $connect);
if(!$connect){echo “Impossibile connettersi al server!”;}
if(!$db){echo “Impossibile connettersi al database!”;}

Ovviamente anche questo file contiene le configurazioni per accedere al database

mysql_query(“DROP TABLE Chat”) or die(mysql_error());
mysql_query(“CREATE TABLE Chat(names VARCHAR(30) NOT NULL, messages VARCHAR(1000) NOT NULL)”) or die(mysql_error());

Questo codice serve a cancellare la tabella Chat e ricrearne una vuota, per svuotarla.

$self=$_SERVER[‘PHP_SELF’];
$self=str_replace(“PulisciChat.php”, “Chat.php”, $self);
header(“location:$self”);
?>

Questo codice invece serve a tornare nella pagina della Chat ovviamente potete modificarlo a seconda di come chiamate i vostri file che compongono la chat.
Poi ovviamente uno può modificarla come vuole come ho fatto in questo sito http://www.usefulness.altervista.org/Chat.php

Download Chat