Un petit script de tchat utilisant php5 et javascript et Ajax.
AMÉLIORATION PRÉVUES :
=>Installation facile
=>Plusieurs design css
=>Message en privé
=>Création de salon
=>Liste des connectés
=>Modérateurs
=>Shootbox
Source / Exemple :
<?php
/**
define('s', 'localhost'); /* l'adresse du serveur */
define('u', 'USER'); /* nom de l'administrateur */
define('p', 'PASSWORD'); /* mot de passe de l'administrateur */
define('b', 'BDD'); /* nom de la base de donnees */
/* *
function redirection($url, $time=0) {
if (!headers_sent()) {
header("refresh: $time;url=$url");
exit;
}
else {
echo '<meta http-equiv="refresh" content="',$time,';url=',$url,'">';
}
}
/**
class Connexion {
/* Connexion a mysql */
public static function connect() {
$mysqli = new mysqli(s, u, p);
if (mysqli_connect_errno()) {
printf("La connexion mysql est impossible : %s\n", mysqli_connect_error());
exit();
}
if(!$mysqli->select_db(b)) {
printf("La connection à la base : ".$base." impossible : %s\n", mysqli_connect_error());
exit();
}
return $mysqli;
}
/* Connexion tchat */
public static function connect_tchat($pseudo) {
$_SESSION['pseudo'] = $pseudo;
redirection('chat.php');
}
}
/**
class Nettoyage {
// Nettoyer variable texte
public static function text($var) {
$var = filter_var($var, FILTER_SANITIZE_STRING);
return $var;
}
}
/**
class Message {
/* liste des messages tchat */
public static function liste_tchat() {
$Q = Connexion::connect()->query("SELECT * FROM message ORDER BY date DESC LIMIT 15");
$D = array();
while($R=$Q->fetch_assoc()) {
$D[]=$R;
}
for($I=count($D)-1; $I>=0;$I--) {
@$RES .= '<strong>'.$D[$I]['pseudo'].'</strong> : '.htmlentities($D[$I]['message']).'<br />';
}
if(!empty($RES)) {
return $RES;
}
else {
$RES = "Il n'y à aucun message.";
return $RES;
}
}
/* Ajout d'un message */
public static function ajout_message($pseudo, $message) {
if(Connexion::connect()->query("INSERT INTO message VALUE(NULL, '".Nettoyage::text($pseudo)."', '".Nettoyage::text($message)."', '".time()."')")) {
return true;
}
else {
return false;
}
}
}
?>
Conclusion :
Première fois que j'utilise l'ajax, il faut bien apprendre !
N'hésitez pas à me dire ce que vous en pensez, et à me faire part des amélioration possible.
9 mars 2014 à 11:30
Tu as ta réponse dans le fichier aide.html.
9 mars 2014 à 09:09
27 août 2013 à 16:48
Je reviens vers vous car nous n'avons pas trouvé réellement la solution au problème de rafraichissement de la page en Ajax qui est le véritable problème.
La solution serait que si, d'un poste client, on envoi (ou poste) un message, le serveur réagi et envoi un retour chez les autres personnes connectées au chat sans faire c'est tests asynchrone en Ajax.
Il y a plusieurs solutions, un serveur APE.
Lien : http://www.ape-project.org/docs/server/
Je vous avoue que c'est compliqué. Mais, sur tout les forums ou j'ai croisé une discussion similaire, ils se retournent souvent sur NodeJS et Socket.IO.
Et là (enfin la solution miracle :)) pour moi, le top.
Je bosse sur un serveur dédié et mon administrateur système m'a installé le serveur cela les doigts dans le nez (Linux). Sur mon poste (localhost) sur Windows, il m'a fallu 2 minutes et rien de plus.
Voici un très bon tuto et en plus en français :)
Lien : http://www.grafikart.fr/tutoriels/nodejs/nodejs-socketio-tchat-366
Pour faire simple, coté poste client et serveur, cela fonctionne uniquement en JavaScript.
Donc, si vous maitrisé le JavaScript ;)
Pour ceux qui maitrise l'object, imaginé qu'a chaque fois qu'un poste client ajoute un nouveau message, le même object s'incrémente et peut retourné la totalité de la discussion à un nouveau poste qui c'est connecté dans un temps ultérieur à la discussion et cela sans base de données.
:)
Bien à vous tous,
Stay
24 juin 2013 à 10:43
Je suis désolé ces derniers temps, je ne suis spas présent, pas mal de chose à réglé quelques soucis personnels font que je n'ai pas vraiment de temps.
Mais une fois que tout sera réglé, et que ça tournera un peu plus rond pour moi, je reviendrai ! "rire"
Cordialement.
23 juin 2013 à 23:24
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.