Chat php/ajax simple et compact

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 757 fois - Téléchargée 20 fois

Contenu du snippet

Voici un petit script de chat php/ajax, j'ai 15 ans c'est la première source que je dépose ...

c'est un petit script de base pour les débutants, le script Ajax n'est pas très compliqué, je me suis aidé de ce site : http://www.xul.fr/xml-ajax.html pour l'Ajax car je n'y connaissait rien.
L'originalité est dans le faite que le script ne nécessite aucune base de donnée ni aucun fichier texte puisqu'il s'auto-modifie.

Le Script possédé désormais une gestion des utilisateurs, et un tout nouveau design.
Pour connecter un utilisateur, il suffit, soit de se rendre sur la page et la on vous demandera de choisir un pseudo, soit d'appeler la page et de faire passer le pseudo de l'utilisateur par l'url (PAGE.php?login=PSEUDO , les caractères majuscule sont à modifier.)

Ps: Je n'ai pas le temps de mettre les explications de mon script, je le ferais ce soir ou demain ...

merci de dire ce que vous en pensez et de mettre une note !

Source / Exemple :


<?php
session_start();
$page_name = basename( __FILE__ );

if(isset($_POST['login']))
{
	$_SESSION['authentification'] = 'oui';
	$_SESSION['login'] = $_POST['login'];
}
elseif (isset($_GET['login']) && !isset($_SESSION['authentification']))
{
	$_SESSION['authentification'] = 'oui';
	$_SESSION['login'] = $_POST['login'];
}

if (isset($_SESSION['authentification']))
{
$login = $_SESSION['login'];
}
elseif (!isset($_SESSION['authentification']) && !isset($_GET['action']))
{
echo '<html><head>
<title>Petit Chat - By Chouquette</title>
<style type="text/css">* {margin:0px; padding:0px;}
body {background:url('.$page_name.'?action=fond) repeat-x #2fb4ff;}
#identification {position: absolute; width: 300px; margin-left: -150px; left: 50%; height: 80px; margin-top: -60px; top: 50%; border: 1px solid #000000; background-color: #eee; padding:5px;}
body,td,th {font-family: Verdana; font-size: 11px;}
p {margin-top: 0px; margin-bottom: 0px; line-height: 150%}
</style>
</head><body>
<img style="margin-left:5px;" src="'.$page_name.'?action=logo" width="387" height="200" />
<div id="identification">
<form method="post" action="'.$page_name.'">
  <p>Login :</p><input type="text" name="login" id="login" />
  <p><input type="submit" style=" margin-top:8px;" name="button" id="button" value="Envoyer" /></p>
</form>
</body></html>';

exit();

}

$message_garde = 50;
$tempsdeconnect = 15;

$chat='a:0:{}';

$enligne='a:0:{}';

$chat = stripslashes($chat);
$chat = unserialize($chat);
$enligne = stripslashes($enligne);
$enligne = unserialize($enligne);

$images = array( 
"fond" => 
"R0lGODlhA1wwiwLEXDBcMC+0/y+z/7Hb9TCz/zK1/zW2/jq3/j+4/kW6/Uy9/VO//FvB/GLD+2fF+2rG+27H+nLI+nbK+nvL+YDM+YbO+IzQ+JHS+JbT95zV96HX9qbY9qva9q7b9f///1wwXDBcMFwwXDBcMCH5BAFcMFwwHVwwLFwwXDBcMFwwA1wwiwJcMAX/oCCOZGmeXCI3qqrQcrALz3Rt33i9cXu//cCgcEgsGo8/jXLJbDqf0Kj0mVFmrtisdsvter9XjFicGZvP6LR6nb6Y3Zc4Jk6v2+/4vF5vscT7gIGCg4SFhBUVfYiLjI2Oj5CRiBQVlBSXmJmam5ydnp+YE5eiE6Wmp6ipqquqEqUSsLGys7S1trIRubq7vL2+vhC5EMPExcbHyMnEDw8Qzc/M0dLT1NMO1w4P19rY3d7f3g0NDuLl5ufo6egMDA3s7uzx8vP09fb38wv6+/z9/v9cMAMKBKhAn4KDCBMqXFzIsKHDhxAXJkCYoKLFixgzatzIsaPHBAgqXCIYSbKkyZMoU9WqXFzJ0uSBkS8RHJhJs6bNmzhz6tx508ABA0CDCh1KtKjRo0iLFjBQYCnTpk+bSp1KtarVq1ivEiDQdKvXr2DDih37dVwwgQFozxJcMDBcMFwwW7dv4cp123au21wwAeTmtbsXL19cMH3v+oW7d65fvHkHIwbMWHHixoXtNmZM+K5eyZYrHx4MuLDiy4kjY/58OPPizo8zUz5NmbBnwaVFe+Z8ubZo1KYtBw59+nbrz39fG6ZdubjexX1DT+48Wblr2KZp895teDh11cU530aM3Lht4b9rG++dO0AIXDA7",
"logo" =>
"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");

function secureArray($item)
{
$item=addslashes($item);
$item= str_replace("<script",' ',$item);
$item= str_replace("rn",'<br />',$item);
return $item;
} 

function ChangerVar($modifier,$remplacement,$variable)
{
	$fichier = '';
	$tableau = file($modifier);
	while(list($cle,$val) = each($tableau))
	{
		$fichier .= $val;
	}
	$fichier = str_replace("<","<",$fichier);
	$fichier = str_replace(">",">",$fichier);
	preg_match_all("/".$variable."=(.*);/",$fichier,$matches, PREG_SET_ORDER);
	foreach ($matches as $message)
	{
	   $fichier = str_replace($message[0],"".$variable."='".$remplacement."';",$fichier);
	}
	$fichier = str_replace("<","<",$fichier);
	$fichier = str_replace(">",">",$fichier);
	
	$fichieredit = fopen($modifier,"w+");
	fwrite($fichieredit,$fichier);  
	fclose($fichieredit);
	
}

if (isset($_GET['action'])) {
  
  switch ($_GET['action']) {

  case "nouveau_message":
	
	$key = 'pasconnecte';
	for ($numero = 0; $numero < count($enligne); $numero++)
	{
		if($login == $enligne[$numero][0])
		{
		$key = 'connecte';
		$enligne[$numero][0] = $login;
		$enligne[$numero][1] = time();
		$enligne = serialize($enligne);
		ChangerVar($page_name,SecureArray($enligne),'enligne');
		$enligne = unserialize($enligne);
		}
	}

	
	if($key == 'pasconnecte')
	{ 
	$nbrenligne = count($enligne);
	$enligne[$nbrenligne][0] = $login;
	$enligne[$nbrenligne][1] =  time();
	$enligne = serialize($enligne);
	ChangerVar($page_name,SecureArray($enligne),'enligne');
	}

	for ($numero = 0; $numero < count($chat); $numero++)
	{
		echo $chat[$numero][1].'  -  '.stripslashes(urldecode($chat[$numero][2])).'     -     <strong>'.stripslashes(urldecode($chat[$numero][0])).'</strong><br />
';
	}
		exit();
	break;

	case "vider":
		ChangerVar($page_name,secureArray('a:0:{}'),'chat');
	break;

	case "poster":
		$nbr = count($chat);
		
		$chat[$nbr][0] = SecureArray(urlencode($login));
		$chat[$nbr][1] = date('d/m/y h:i:s');
		$chat[$nbr][2] = SecureArray(urlencode($_POST['message']));
		if($nbr >= $message_garde) { array_shift($chat); }
		$chat = serialize($chat);
		ChangerVar($page_name,SecureArray($chat),'chat');
		$chat = unserialize($chat);
		exit();
	break;

	case "enligne" :
		$cache = array();
		echo "<select class='UserOnline' size=\"20\">";
		for ($numero = 0; $numero < count($enligne); $numero++)
		{
	
			if($enligne[$numero][1] > time() - $tempsdeconnect )
			{
			$cachenbr = count($cache);
			$cache[$cachenbr][0] = $enligne[$numero][0];
			$cache[$cachenbr][1] = $enligne[$numero][1];
			echo "<option>".$enligne[$numero][0]."</option>
";
			}
		}
		echo "</select>";
		$cache = serialize($cache);
		ChangerVar($page_name,SecureArray($cache),'enligne');
		exit();
	break;
	
	case "fond" :
	header("Content-type: gif");
	echo stripslashes(base64_decode($images['fond']));
	break;

    case "logo" :
	header("Content-type: gif");
	echo stripslashes(base64_decode($images['logo']));
	break;

    }
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>Chouquette - Chat Ajax/PHP</title>
<style type="text/css">

body {
font:Verdana;
font-size:12px;
background:url(<?php echo $page_name.'?action=fond'; ?>) repeat-x #2fb4ff;
font-family: Verdana;
}

#chat {
width:810px;
margin-top:160px;
position:absolute;
margin-left: -405px;
left: 50%;

}

.UserOnline {
width:150px;
height:300px;
float:right;
background-color: #000000;
color : #FFFFFF;
border:none;
}

#utilisateurs {
width:150px;
height:300px;
float:right;
overflow:hidden;
border: 1px solid #FFFFFF;
background-color: #000000;
}

#texte {
width:650px;
height:300px;
overflow-y: auto;
border: 1px solid #FFFFFF;
background-color: #000000;
color : #FFFFFF;
}

#message {
height:40px;
width:810px;
margin-top:10px;
background-color: #000000;
color : #FFFFFF;
}
<!--

  • {
margin:0px; padding:0px; } li { margin-left:15px; } .menuitems{ padding-left:15px; padding-right:10px; } p { margin-top: 0px; margin-bottom: 0px; line-height: 150%} input,textarea,select { border: 1px solid #FFFFFF; font-weight: bold; font-size: 10px; font-family: verdana; } input { border:1px solid #000000; } hr { color: #0093e6; background-color: #0093e6; height: 5px; } </style> <script language="javascript" type="text/javascript"> var actualise = 1000; // temps entre chaque rechargement des messages function httprequest() // fonction nécessaires pour les requêtes Ajax { var xmlhttp=false; try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");} catch (e){ try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {xmlhttp = false;} } if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp = new XMLHttpRequest(); } return xmlhttp; } function envoyer() { var texte = document.getElementById('message').value; while(texte.indexOf("&") > 0 || texte.indexOf("+") > 0) { texte = texte.replace("&","%26"); texte = texte.replace("+","%2B"); } // Envoi de la requete var envoyer = httprequest(); envoyer.open("POST", '<?php echo $page_name; ?>?action=poster', true); envoyer.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); envoyer.send('message='+texte); } function vider() { var vider = httprequest(); vider.open("GET","<?php echo $page_name; ?>?action=vider",true); vider.send(null); } function Message() { var message = httprequest(); message.open("GET","<?php echo $page_name; ?>?action=nouveau_message",true); message.onreadystatechange = function() { if (message.readyState == 4) { if(message.status == 200) { document.getElementById('texte').innerHTML = message.responseText;} } } message.send(null); setTimeout("Message()",actualise); } function Utilisateurs() { var utilisateur = httprequest(); utilisateur.open("GET","<?php echo $page_name; ?>?action=enligne",true); utilisateur.onreadystatechange = function() { if (utilisateur.readyState == 4) { if(utilisateur.status == 200) { document.getElementById("utilisateurs").innerHTML = utilisateur.responseText;} } } utilisateur.send(null); setTimeout("Utilisateurs()",5000); } </script> </head> <body onLoad="Message();Utilisateurs();"> <div id="chat"> <div id='utilisateurs'></div> <div id='texte'></div> <p> <textarea id="message" cols="80" rows="3"></textarea> </p> <p>&nbsp;</p> <p> <input type="button" onClick="envoyer()" value="Envoyer"> <input type="button" onClick="vider()" value="Vider les messages"> </p> </div> <img src="<?php echo $page_name.'?action=logo'; ?>" width="387" height="200"> </body> </html>

A voir également

Ajouter un commentaire

Commentaires

jantosze
Messages postés
72
Date d'inscription
mercredi 29 mai 2013
Statut
Membre
Dernière intervention
15 mai 2009
-
Salut,

En première lecture qq rems de forme:
- partie PHP : sur la série des if(@$_GET['action']... J’aurai tendance à utiliser un switch / case avec une gestion du default, je trouve que cela apporte en lisibilité.
-partie JS: bien les 2 try sur ActiveXObject j'en mettrai un aussi sur le if qui suit,
if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp = new XMLHttpRequest(); } par
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
xmlhttp = false;
}
}
return xmlhttp;
} Du fait de readyState 4 mettre une trace d'erreur pour if( mesage.status 200 ) { ... } else { "il y a un problem avec request err_num:"+message.status);Faire un test sur var XXXX httprequest(); car dans ton code tu peux avoir NULL; De même initialiser var xmlhttp false qui est réservé aux ops BOOL je préfère NULL.

Cdt
JAN
neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
13 -
Salut,

"partie PHP : sur la série des if(@$_GET['action']... J'aurai tendance à utiliser un switch / case avec une gestion du default, je trouve que cela apporte en lisibilité."

...mais fait perdre en performances. D'un autre côté, une série de blocs if, c'est pas optimisé. Mieux vaut utiliser un if ... elseif ... else en prenant soin de mettre en premier l'action qui a le plus de chances de se produire.
Une boucle switch doit parcourir tous les cas possibles avant de se décider. Une boucle if elseif else les parcourt les uns après les autres, et sort dès que le bon a été trouvé.
Et puis les @$_GET c'est moche, très moche.
Mieux vaut une boucle comme ça :

if (isset($_GET['action'])) {
if ($_GET['action'] == 'nouveau_message') {
// ...
}
elseif ($_GET['action'] == 'vider') {
// ...
}
elseif ($_GET['action'] == 'poster') {
// ...
}
}

Sinon, petite remarque : c'est
et non pas
Il y a un espace entre le `r` et le `/`

Maintenant, pour que ce chat puisse être plus facilement intégrable dans un site, il faut penser à séparer le code PHP du code HTML et faire en sorte qu'on puisse, justement, facilement intégrer ça où on veut.
jantosze
Messages postés
72
Date d'inscription
mercredi 29 mai 2013
Statut
Membre
Dernière intervention
15 mai 2009
-
NEIGEDHIVER je ne partage pas ton avis sur le fonctionnement du switch:
" Dans une commande switch , une condition n'est évaluée qu'une fois, et le résultat est comparé à chaque case . Dans une structure elseif , les conditions sont évaluées à chaque comparaison. Si votre condition est plus compliquée qu'une simple comparaison, ou bien fait partie d'une boucle, switch sera plus rapide. "
lire http://www.manuelphp.com/php/control-structures.switch.php par exemple.

cdt
JAN
neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
13 -
Au temps pour moi...
cs_SuperChouquette
Messages postés
37
Date d'inscription
dimanche 24 février 2008
Statut
Membre
Dernière intervention
18 mai 2010
-
merci pour vos conseil !
Sinon pour l'intégration dans un site, le webmaster peut mettre une frame, le but était que le script tienne dans un fichier, sans base de données, sans fichier texte qui se créé à coté.
Je vais aussi ajouté la gestion des utilisateur, j'ai finit le script ! en tous les cas merci pour vos conseils !

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.