Tchat ajax

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Tchat ajax

Re: Tchat ajax

par pacphil » 08 janv. 2016, 18:06

Bonjour, quand j'ouvre la page du tchat le premier le pseudo est inscrit dans le fichier texte le message lui non et pour une seconde ligne il me mais message vide alors que l'on à écrit un message.

Voilà en gros

Re: Tchat ajax

par Ryle » 07 janv. 2016, 19:06

Bonjour,

"cela ne fonctionne pas" n'est pas une information suffisante pour permettre de résoudre un problème :)

Qu'est ce qui ne fonctionne pas ? le formulaire ne s'affiche pas ? il n'est pas envoyé ? le fichier n'est pas créé ? il est créé mais il est vide ? il existe et ne se rempli pas ? ... Qu'est ce que ton script est sensé faire et qu'est ce qu'il ne fait pas ?

Si tu passes l'url de traitement_chat.php directement dans ton navigateur, est-ce que cela affiche des messages d'erreur à l'écran ou dans les logs ? ou est-ce que le fichier est bien créé / complété avec les infos NULL / NULL ?

Dans le premier cas, faut voir de quel type d'erreur il s'agit et dans le second, c'est que le problème ne vient pas de l'enregistrement mais de la façon dont les données sont envoyées à ton script...

Re: Tchat ajax

par pacphil » 06 janv. 2016, 23:20

Bonsoir chez moi cela ne fonctionne pas

Re: Tchat ajax

par KriSpiX » 05 janv. 2016, 16:18

Ton code semble être fonctionnel. En tout cas chez moi ça fonctionne bien :)
Après avoir enlevé le "visibility:hidden" du textarea bien sur car sinon je ne vois pas l'intérêt du chat si on a pas l'endroit pour écrire.

Re: Tchat ajax

par jeremylevy » 05 janv. 2016, 00:25

Tu as ouvert le fichier pour voir ? Si oui il va falloir loger ce qui est passé au script PHP.

$_POST["messtext"] contient-il la valeur attendue ? Si non, c'est un problème de JS, donc mauvaise section.

++

Re: Tchat ajax

par pacphil » 04 janv. 2016, 23:13

oui

Re: Tchat ajax

par jeremylevy » 04 janv. 2016, 20:00

Salut,

Le message ne s'ajoute pas à ton fichier, c'est ça ?

++

Tchat ajax

par pacphil » 03 janv. 2016, 21:42

Bonjour j'essaye de mettre en place un tchat en fichier texte sans base de donnée , j'ai quelque soucis le pseudo ok le message de s'insert pas ?

ou une petite idée svp pour m'aidée et peut-être améliorer.

ps: je séparais les différents script une fois le bon fonctionnement

Code : Tout sélectionner

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Chat</title> <style type="text/css"> #conversation { width: 700px; height: 400px; border: black 1px solid; background-color:#FFFFFF; overflow-x: hidden; overflow-y: scroll; padding: 5px; margin-left: 10px; } fieldset { width: 730px; margin-left: 10px; background-color:#FEEBFD; border: black 1px solid; } </style> <script type="text/javascript"> //Fonction d'instance permettant de vérifier si le navigateur supporte l'objet XMLHTTPRequest function objet_XMLHttpRequest() { //On déclare une variable "mavariable" à null var mavariable = null; //Teste si le navigateur prend en charge les XMLHttpRequest if (window.XMLHttpRequest || window.ActiveXObject){ // Si Internet Explorer alors on utilise les ActiveX if(window.ActiveXObject){ //On teste IE7 ou supérieur try{ mavariable = new ActiveXObject("Msxml2.XMLHTTP"); } //Si une erreur est levée, alors c'est IE 6 ou inférieur catch(e){ mavariable = new ActiveXObject("Microsoft.XMLHTTP"); } } //Navigateurs récents (Firefox, Opéra, Chrome, Safari, ...) else{ mavariable = new XMLHttpRequest(); } } //XMLHttpRequest non supporté par le navigateur else{ alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest..."); return null; } //On retourne l'objet mavariable return mavariable; } //code d'envoi du chat function chat_ajax(){ //On déclare une variable var mavariable = objet_XMLHttpRequest(); //récupération des données var pseudo = encodeURIComponent(document.getElementById("pseudo").value); var messtext = encodeURIComponent(document.getElementById("messtext").value); //idem pour le message if(messtext == ''){ alert('Message vide!'); return false; } //On assigne une fonction à la propriété onreadystatechange mavariable.onreadystatechange = function(){ //Si l'attribut readyState renvoie 4 et que l'attribut status renvoie 200 if(mavariable.readyState == 4 && mavariable.status == 200){ //On affiche le résultat chargé dans l'attribut responseText qui est affiché dans un div nommé "conversation" document.getElementById("conversation").innerHTML=mavariable.responseText; //On vide le champ message document.getElementById("messtext").value=''; } }; //On déclare la méthode d'envoie mavariable.open("POST","traitement_chat.php",true); //On assigne un header mavariable.setRequestHeader("Content-type","application/x-www-form-urlencoded"); //On envoie mavariable.send("pseudo="+pseudo+"&messtext="+messtext); } //Fonction permettant de rafraichir le div "conversation" function refresh() { var xhr = objet_XMLHttpRequest(); xhr.onreadystatechange = function() { if(xhr.readyState == 4 && xhr.status == 200){ document.getElementById("conversation").innerHTML = xhr.responseText; } }; xhr.open("POST","tchat.txt", true); xhr.send(null); } //On lance la fonction toute les secondes setInterval("refresh()", 3000); </script> </head> <?PHP $htmlData = ''; if (!empty($_POST['messtext'])) { if (get_magic_quotes_gpc()) { $htmlData = stripslashes($_POST['messtext']); } else { $htmlData = $_POST['messtext']; } } ?> <script charset="utf-8" src="kindeditor-min.js"></script> <script charset="utf-8" src="lang/zh_CN.js"></script> <script> var editor; KindEditor.ready(function(K) { editor = K.create('textarea[name="messtext"]', { resizeType : 1, allowPreviewEmoticons : false, allowImageUpload : false, items : ['forecolor', 'hilitecolor', 'bold', 'italic','|', 'emoticons', 'link'] }); }); </script> <fieldset> <legend><h1>Tchat</h1></legend> <div id="conversation"></div><br /> <form method="post" id="monform"> <input type="hidden" id="pseudo" value="pseudo"> <?php echo $htmlData; ?> <textarea id="messtext" name="messtext" style="width:600px;height:20px;visibility:hidden;"> <?php echo htmlspecialchars($htmlData); ?></textarea> <input type="button" value="Envoyer" onclick="chat_ajax()"><br /><br /> </form> </fieldset> </body> </html>
traitement du Tchat

Code : Tout sélectionner

<?php //Vérification des données $pseudo = (isset($_POST["pseudo"])) ? $_POST["pseudo"] : NULL; $messtext = (isset($_POST["messtext"])) ? $_POST["messtext"] : NULL; //On créé une variable pour donner un nom au fichier $fichier = "tchat.txt"; //On ouvre le fichier. Si il n'existe pas il sera créé automatiquement $fichier_a_ouvrir = fopen ($fichier, "a+"); //On écrit dans le fichier fwrite($fichier_a_ouvrir, '<div class="bordure">'.$pseudo.' : '.$messtext.'</div>'); //On ferme la connexion fclose ($fichier_a_ouvrir); //On ouvre le fichier en lecture $fichier_a_ouvrir = fopen ($fichier, "r"); //On lit son contenu $contenu_du_fichier = fgets($fichier_a_ouvrir, 1024); //On affiche son contenu echo $contenu_du_fichier; //On ferme la connexion fclose ($fichier_a_ouvrir); ?>