begin process at 2010 03 20 02:06:48
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Formulaires

 > MINI CHAT

MINI CHAT


 Information sur la source

Note :
6 / 10 - par 4 personnes
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Formulaires Classé sous :chat, php, minichat, script, angelz Niveau :Débutant Date de création :21/12/2006 Date de mise à jour :21/12/2006 23:12:17 Vu / téléchargé :19 787 / 1 600

Auteur : angelz

Ecrire un message privé
Commentaire sur cette source (32)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Bon je sais c'est surement deja sur le site,
mais c'est mon premier vrai code de A a Z grace au superbe tuto pour apprendre php du www.siteduzero.com (merci bcp a lui)
voila je l'ai realise apres avoir lu les 2 premier parti du cour et SANS le cour sous les yeux :) et miracle ca marche :)
enfin bref ma vie vous vous en foutez lol
par contre si vous avec des remarques (constructive les insulte je connais pas la peine d'en mettre :) ) pour ameliorer le code et donc ma fassons de programmer je suis tou ouie :)

Source

  • MISE A JOUR DU CODE
  • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  • <html xmlns="http://www.w3.org/1999/xhtml">
  • <head>
  • <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  • <META NAME="AUTHOR" CONTENT="www.angelz.be">
  • <META NAME="COPYRIGHT" CONTENT="Copyright (c) 2006 by AngelZ">
  • <META NAME="GENERATOR" CONTENT="powered by angelz.be - fabrice@angelz.be">
  • <title>Mini Chat AngelZ</title>
  • <style type="text/css">
  • <!--
  • .Style1 {
  • color: #FF0000;
  • font-weight: bold;
  • font-style: italic;
  • }
  • .Style2 {
  • color: #00FF00;
  • font-weight: bold;
  • font-style: italic;
  • }
  • body {
  • background-color: #000000;
  • }
  • .Style3 {
  • color: #FFFF00;
  • font-weight: bold;
  • font-style: italic;
  • }
  • .Style4 {
  • color: #FFFFFF;
  • font-weight: bold;
  • font-style: italic;
  • }
  • -->
  • </style>
  • </head>
  • <body>
  • <?php
  • // on verifie que les variable $_POST['pseudo'] et $_POST['message'] existe
  • if (isset($_POST['pseudo']) AND isset($_POST['message']))
  • {
  • // si oui on les enregistre dans les variables $pseudo et $message
  • $pseudo=$_POST['pseudo'];
  • $message=$_POST['message'];
  • // on se connecte a la BDD pour y enregistre dans la table
  • mysql_connect('localhost', 'root', "");
  • mysql_select_db('site_php_module');
  • // on enregistre dans la BDD les infos recupeter dans les variables $pseudo et $message
  • mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')");
  • }
  • // on se connecte a la BDD pour y lire dans la table
  • mysql_connect('localhost', 'root', "");
  • mysql_select_db('site_php_module');
  • // on va recupere les données dans la table minichat, on les classe par ordre DESCendant dans une LIMITe de 10 entree(les 10 derniere vu que c ds un ordre DESC) dans la variable $Data
  • $data=mysql_query("SELECT pseudo,message FROM minichat ORDER BY ID DESC LIMIT 0, 10") or die(mysql_error()); //
  • mysql_close(); //on ferme la connection MySql
  • // on passe en HTML
  • ?>
  • <CENTER>
  • <H1><p class="Style3">Mini Chat </p></H1>
  • <p>
  • <textarea cols="120" rows="30">
  • <?php
  • // on repasse en php :)
  • while (false !== ($donnee = mysql_fetch_array($data))) // on fait une boucle (on va chercher dans la Variable $data et on les classe dans ARRAY de la variable $donnee
  • {
  • ?>
  • <?php echo htmlentities($donnee['pseudo']); echo ">>>>"; echo htmlentities($donnee['message']); // on affiche les donnees recuilli grace a un echo
  • }
  • ?>
  • </textarea>
  • </p>
  • </CENTER>
  • <CENTER>
  • <p align="center">
  • <form action="minichat.php" method="post">
  • <span class="Style2">Pseudo :</span>
  • <?php // on verifi si la variable $pseudo existe si oui on affiche le pseudo a la place du champ text
  • if(!empty($pseudo))
  • echo '<span class="Style4">'.$pseudo.'</span><input type="hidden" name="pseudo" value="'.htmlentities($pseudo).'" />';
  • else // sinon on affiche le champ texte
  • echo '<input name="pseudo" type="text" />';
  • ?>
  • <span class="Style1">Message :</span>
  • <input name="message" type="text" size="100" />
  • <input type="submit" name="Submit" value="Envoyer" />
  • </form>
  • </CENTER>
  • <p align="center">
  • <a target="_blank" href="http://www.angelz.be">
  • www.angelz.be
  • </a>
  • </p>
  • </body>
  • </html>
MISE A JOUR DU CODE


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<META NAME="AUTHOR" CONTENT="www.angelz.be">
<META NAME="COPYRIGHT" CONTENT="Copyright (c) 2006 by AngelZ">
<META NAME="GENERATOR" CONTENT="powered by angelz.be - fabrice@angelz.be">
		
<title>Mini Chat AngelZ</title>
<style type="text/css">
<!--
.Style1 {
	color: #FF0000;
	font-weight: bold;
	font-style: italic;
}
.Style2 {
	color: #00FF00;
	font-weight: bold;
	font-style: italic;
}
body {
	background-color: #000000;
}
.Style3 {
	color: #FFFF00;
	font-weight: bold;
	font-style: italic;
}
.Style4 {
	color: #FFFFFF;
	font-weight: bold;
	font-style: italic;
}
-->
</style>
</head>

<body>

<?php
// on verifie que les variable $_POST['pseudo'] et $_POST['message'] existe 
if (isset($_POST['pseudo']) AND isset($_POST['message']))
{
// si oui on les enregistre dans les variables $pseudo et $message
$pseudo=$_POST['pseudo'];
$message=$_POST['message'];

// on se connecte a la BDD pour y enregistre dans la table
mysql_connect('localhost', 'root', "");
mysql_select_db('site_php_module');
// on enregistre dans la BDD les infos recupeter dans les variables $pseudo et $message
mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')");

}


// on se connecte a la BDD pour y lire dans la table
mysql_connect('localhost', 'root', "");
mysql_select_db('site_php_module');

// on va recupere les données dans la table minichat, on les classe par ordre DESCendant dans une LIMITe de 10 entree(les 10 derniere vu que c ds un ordre DESC) dans la variable $Data
$data=mysql_query("SELECT pseudo,message FROM minichat ORDER BY ID DESC LIMIT 0, 10") or die(mysql_error()); // 
mysql_close(); //on ferme la connection MySql
// on passe en HTML 
?>

<CENTER>
  <H1><p class="Style3">Mini Chat </p></H1>
  <p>
    <textarea cols="120" rows="30">
<?php
// on repasse en php :)

while (false !== ($donnee = mysql_fetch_array($data))) // on fait une boucle (on va chercher dans la Variable $data et on les classe dans ARRAY de la variable $donnee
{
?>

<?php echo htmlentities($donnee['pseudo']); echo ">>>>"; echo htmlentities($donnee['message']); // on affiche les donnees recuilli grace a un echo

}
?>
      </textarea>
    </p>
</CENTER>


<CENTER>
<p align="center">
<form action="minichat.php" method="post">
<span class="Style2">Pseudo :</span>
<?php // on verifi si la variable $pseudo existe si oui on affiche le pseudo a la place du champ text
if(!empty($pseudo))
echo '<span class="Style4">'.$pseudo.'</span><input type="hidden" name="pseudo" value="'.htmlentities($pseudo).'" />';
else // sinon on affiche le champ texte
echo '<input name="pseudo" type="text" />';
?>
<span class="Style1">Message :</span>
<input name="message" type="text" size="100" />
<input type="submit" name="Submit" value="Envoyer" />   
</form>

</CENTER>

		<p align="center">
			<a target="_blank" href="http://www.angelz.be">
				www.angelz.be
			</a>
		</p>
</body>
</html>

 Conclusion

Mise a jour du code grace a vos bon conseil

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

21 décembre 2006 23:09:30 :
MISE A JOUR DU CODE <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <META NAME="AUTHOR" CONTENT="www.angelz.be"> <META NAME="COPYRIGHT" CONTENT="Copyright (c) 2006 by AngelZ"> <META NAME="GENERATOR" CONTENT="powered by angelz.be - fabrice@angelz.be"> <title>Mini Chat AngelZ</title> <style type="text/css"> <!-- .Style1 { color: #FF0000; font-weight: bold; font-style: italic; } .Style2 { color: #00FF00; font-weight: bold; font-style: italic; } body { background-color: #000000; } .Style3 { color: #FFFF00; font-weight: bold; font-style: italic; } .Style4 { color: #FFFFFF; font-weight: bold; font-style: italic; } --> </style> </head> <body> <?php // on verifie que les variable $_POST['pseudo'] et $_POST['message'] existe if (isset($_POST['pseudo']) AND isset($_POST['message'])) { // si oui on les enregistre dans les variables $pseudo et $message $pseudo=$_POST['pseudo']; $message=$_POST['message']; // on se connecte a la BDD pour y enregistre dans la table mysql_connect('localhost', 'root', ""); mysql_select_db('site_php_module'); // on enregistre dans la BDD les infos recupeter dans les variables $pseudo et $message mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')"); } // on se connecte a la BDD pour y lire dans la table mysql_connect('localhost', 'root', ""); mysql_select_db('site_php_module'); // on va recupere les données dans la table minichat, on les classe par ordre DESCendant dans une LIMITe de 10 entree(les 10 derniere vu que c ds un ordre DESC) dans la variable $Data $data=mysql_query("SELECT pseudo,message FROM minichat ORDER BY ID DESC LIMIT 0, 10") or die(mysql_error()); // mysql_close(); //on ferme la connection MySql // on passe en HTML ?> <CENTER> <H1><p class="Style3">Mini Chat </p></H1> <p> <textarea cols="120" rows="30"> <?php // on repasse en php :) while (false !== ($donnee = mysql_fetch_array($data))) // on fait une boucle (on va chercher dans la Variable $data et on les classe dans ARRAY de la variable $donnee { ?> <?php echo htmlentities($donnee['pseudo']); echo ">>>>"; echo htmlentities($donnee['message']); // on affiche les donnees recuilli grace a un echo } ?> </textarea> </p> </CENTER> <CENTER> <p align="center"> <form action="minichat.php" method="post"> <span class="Style2">Pseudo :</span> <?php // on verifi si la variable $pseudo existe si oui on affiche le pseudo a la place du champ text if(!empty($pseudo)) echo '<span class="Style4">'.$pseudo.'</span><input type="hidden" name="pseudo" value="'.htmlentities($pseudo).'" />'; else // sinon on affiche le champ texte echo '<input name="pseudo" type="text" />'; ?> <span class="Style1">Message :</span> <input name="message" type="text" size="100" /> <input type="submit" name="Submit" value="Envoyer" /> </form> </CENTER> <p align="center"> <a target="_blank" href="http://www.angelz.be"> www.angelz.be </a> </p> </body> </html>
21 décembre 2006 23:12:17 :
MAJ du code mais seulement de se que j'ai compris ... copier/coller c pas genial

 Sources du même auteur

Source avec Zip ENVOI D UN MAIL SUR UNE PAGE WEB MULTIUTILISATEUR

 Sources de la même categorie

TESTEUR DE REGEX par hornetbzz
Source avec Zip SE SOUVENIRE D'UN VISITEUR GRACE A UN COOKIE par MoulouD1993
Source avec Zip Source avec une capture CAPTCHA PHP SIMPLE par toutoos
Source avec Zip POSTER, AFFICHER, ... DES NEWS SUR VOTRE SITE par TORA38
CLASS DE CONTRÔLE DE FORMULAIRE par baxterio

 Sources en rapport avec celle ci

Source avec Zip CLIENT CHAT (MESSAGERIE PRIVÉE) AJAX ET PHP par zniko07
Source avec Zip PHPMYSITEWEB par toughzaa
Source avec Zip RESERVATION EN LIGNE DE GITE par gochardl
Source avec Zip PHOENIX INTERPRETOR par windows972
Source avec une capture CHAT PHP/AJAX SIMPLE ET COMPACT par SuperChouquette

Commentaires et avis

Commentaire de amezghal le 21/12/2006 13:49:06

c trop basique, et trop lent,pense a utiliser AJAX.
- il ne faut po vérifier l'existence du pseudo chaque fois sa ralenti, pense aussi a voire les exemples existent dejà sur le site , yona qui sont tres complets.
allez bon prog

Commentaire de angelz le 21/12/2006 14:23:58

merci
c quoi AJAX ?
je debute vraiment sorry ;)

Commentaire de kankrelune le 21/12/2006 15:07:02

Hello... .. .

Bon ton code marche... ok... cependant comme tu t'en doute il y a beaucoups à dire... .. .

Tout d'abord ce script présente des failles que dis je des gouffres de sécurité... une belle faille à la sql injection... .. .

mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')");

Avec ça tu risque de te faire plomber ta base de données...

Et une belle faille xss permanente...

echo $donnee['pseudo'];?><? echo ">>>>";?><? echo $donnee['message'];

avec ça tu risque d'avoir des insertions défigurant ton site (au mieux) ou volant/réécrivant les cookies de ton site ou faisant une redirection sur un autre site... .. .

Donc dans l'ordre... .. .

déja met <?php et non pas <? ton code n'en sera que plus portable (compatible)... ensuite tu ouvre et referme 2 fois ta connection à mysql... c'est inutile et consome des resources pour rien... tu ouvre la connection tout au début du script et la ferme quand tu as finis tes requetes... .. .


if (isset($_POST['pseudo']) AND isset($_POST['message']))

Il serait bien de vérifier si un message est envoyé... non ? ça évitera les messages vides... donc...

if(isset($_POST['pseudo']) && !empty($_POST['pseudo']) && isset($_POST['message']) && !empty($_POST['message']))

Mais comme il serait bien d'éviter les message avec un espace dedans autant instancier $pseudo et $message avant... donc...

if(isset($_POST['pseudo']))
    $pseudo = trim($_POST['pseudo']);
        else
            $pseudo = '';

if(isset($_POST['message']))
    $message = trim($_POST['message']);
        else
            $message = '';

if(!empty($pseudo) && !empty($message))

voila qui est mieux... ensuite...

mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')");

alors ça c'est pas beau et c'est dangereux... il ne faut JAMAIS faire confiance aux données soumises par l'internaute et toujours les traiter comme des données potentiellement dangereuses... .. .

mysql_query('INSERT INTO minichat VALUES(\'\', \''.mysql_real_escape_string($pseudo).'\', \''.mysql_real_escape_string($message).'\')');

Au passage ton champs id ne sert strictement à rien vu que tu ne fera jamais de "SELECT ... WHERE id=valeur"... .. .

?>
<?

Ca non plus ça sert à rien... .. .

$data = mysql_query("SELECT * FROM minichat ORDER BY ID DESC LIMIT 0, 10")

Il ne faut pas faire de select * quand tu connais les champs à récupérer... c'est une perte de temps et de performances... donc...

$data = mysql_query('SELECT pseudo,message FROM minichat ORDER BY ID DESC LIMIT 0, 10')

Ensuite...

while ($donnee = mysql_fetch_array($data))

Et si ton tableau est vide ? ta boucle s'arrete... donc...

while(false !== ($donnee = mysql_fetch_array($data)))

Ensuite...

<? echo $donnee['pseudo'];?><? echo ">>>>";?><? echo $donnee['message'];  ?>

Bon je ne vais pas revenir sur le ?><?... tes echo multiple sont inutile et tu risque une attaque xss à afficher les données en brut sans les traiter... qu'est ce qui se passe si je poste du html et/ou du javascript ? donc...

<?php echo htmlentities($donnee['pseudo']).' a dit : '.htmlentities($donnee['message']);  ?>

<? // on verifi si la variable $pseudo existe
if (isset($pseudo)) { echo $pseudo;// si oui on affiche le pseudo a la place du champ text
}
else // sinon on affiche le champ texte
{?> </span><input name="pseudo" type="text" ><? }?>

Ca c'est pas con du tout mais j'aimerais bien savoir comment tu fais pour récupérer le pseudo à partir du second post... .. ?

<?php

if(!empty($pseudo))
    echo '<input type="hidden" name="pseudo" value="'.htmlentities($pseudo).'" />';
        else
            echo '<input name="pseudo" type="text" />';

?>

ton code n'est surement pas valide XHTML car les balise non refermées (br, input,etc..) doivent se finir par un /> et non pas juste un >

Tu fais un or die(...) pour les requetes... c'est un peu crade mais c'est bien... cependant tu ne le fais pas pour la connection à la base de données et la selection de la base... sinon il faudrait faire un garbage collector... parce que tu nettoie jamais ta table des vieux enregistrements donc au bout d'un moment ça risque d'être le bordel dans ta table... .. .

on reprend tout depuis le début...

<?php

// on se connecte a la BDD
mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('site_php_module') or die(mysql_error());

// on verifie que les variable $_POST['pseudo'] et $_POST['message'] existe
if(isset($_POST['pseudo']))
    $pseudo = trim($_POST['pseudo']);
        else
            $pseudo = '';

if(isset($_POST['message']))
    $message = trim($_POST['message']);
        else
            $message = '';

// un message a été posté ?
if(!empty($pseudo) && !empty($message))
{
if(time()%5 === 0) // garbage collector
{
// surement optimisable en une seule requete
$result = mysql_query('SELECT COUNT(pseudo) FROM  minichat');
$count = mysql_fetch_rows($result);

if($count[0] > 10)
mysql_query('DELETE FROM minichat LIMIT '.($count[0]-10));
}

// on enregistre dans la BDD les infos recupeter dans les variables $pseudo et $message
mysql_query('INSERT INTO minichat (`pseudo`,`message`) VALUES(\'\', \''.mysql_real_escape_string($pseudo).'\', \''.mysql_real_escape_string($message).'\')');
}

// on va recupere les données dans la table minichat, on les classe par ordre DESCendant dans une LIMITe de 10 entree(les 10 derniere vu que c ds un ordre DESC) dans la variable $Data
$result = mysql_query('SELECT pseudo,message FROM minichat ORDER BY ID DESC LIMIT 0, 10') or die(mysql_error()); //
mysql_close(); //on ferme la connection MySql

?>
<div align="center">
<h1 class="Style3">Mini Chat</h1>
<p>
<textarea cols="120" rows="30">
<?php

while(false !== ($row = mysql_fetch_assoc($result)))
echo htmlentities($row['pseudo']).' a dit : '.htmlentities($row['message']);

?>
</textarea>
    </p>
<p align="center">
<form action="minichat.php" method="post">
<span class="Style2">Pseudo :</span>
<?php // on verifi si la variable $pseudo existe si oui on affiche le pseudo a la place du champ text
if(!empty($pseudo))
echo '<span class="Style4">'.$pseudo.'</span><input type="hidden" name="pseudo" value="'.htmlentities($pseudo).'" />';
else // sinon on affiche le champ texte
echo '<input name="pseudo" type="text" />';
?>
<span class="Style1">Message :</span>
<input name="message" type="text" size="100" />
<input type="submit" name="Submit" value="Envoyer" />  
</form>
</p>
    <p align="center">
<a href="http://www.angelz.be" title="www.angelz.be">www.angelz.be</a>
</p>
</div>


Voili voilou... je met 4/10... .. .

@ tchaOo°

Commentaire de kankrelune le 21/12/2006 15:10:56

Pour répondre à amezghal...

Ajax c'est du détail... c'est pas utile d'autant plus quand on débute... faut arrêter de ne jurer que par Ajax c'est de la poudre aux yeux... qui plus est Ajax est basé sur du javascript ici c'est le php qui nous interesse... et tu fais quoi si le navigateur n'a pas le javascript d'activé... il faut donc mettre en place des alternatives et c'est bien trop compliqué pour un débutant... .. .

Quand au test du pseudo il est obligatoire (ça évite les floodeur sans nom) et c'est surement pas ça qui ralenti... .. .

@ tchaOo°

Commentaire de angelz le 21/12/2006 16:02:06

waou waou
encore bcp de chose a apprendre moi
merci de toute c correction, je v relier ca plus attentivement ce soir, j'avou que pas mal de chose m'echappe, mas cela doit etre normal au debut:)
mais merci pour tt ces conseils je v etudier ca

Commentaire de kankrelune le 21/12/2006 16:12:17

N'hésite pas à poser des questions sur ce qui t'échappe... c'est comme ça qu'on apprend... comme ça et avec la doc php... .. .

http://fr2.php.net/nom_de_la_fonction

@ tchaOo°

Commentaire de amezghal le 21/12/2006 17:16:44

AJAX n'est que du JavaScript, bon pour un chat en fait beaucoup de requettes sql, pour extraire les nouveaux messages, cela provoque un mauvais clignotement, se qui est po bien pour un chat.
le role d'AJAX c de faire ces operations mais en cache.

bon si tu veux en savoir  voici une bonne tuto:
http://gael-donat.developpez.com/web/intro-ajax/
bon prog

Commentaire de amezghal le 21/12/2006 17:30:47

autre chose pense a travaillé avec les sessions, pour éliminer le test du pseudo chaque fois, (yavai une tuto sur SDZ é_è), et met en considération les remarques de kankrelune,
n'hesiter po à poster une MAJ
bon prog

Commentaire de kankrelune le 21/12/2006 17:38:49

Ton commentaire concernant les requetes n'a pas lieu d'être sur ce script puisque le chat n'est pas rechargé... c'est un mauvais point d'ailleur il faut recharger la page pour voir les nouveaux message... qui plus est ajax n'empeche en rien les requetes elles sont juste effectuées en tache de fond... .. .

Ce que je trouve abhérant c'est que depuis un an ou deux les gens bavent sur des technologies bien plus vieilles que ça à cause d'un effet de mode... mieux vaut un chat bien codé sans ajax que mal codé avec !!! .. .

Oui ajax c'est bien mais encore faut il savoir s'en servir... qui plus est il est totalement injustifié de dire à un débutant en php d'utiliser Ajax... déja qu'il se concentre à apprendre le php il verra ensuite pour ajax... .. .

@ tchaOo°

Commentaire de angelz le 21/12/2006 23:06:17

voila jai retravailler un peu le code grace au info que vous m'avez donné, mais pas mal de chose m'echappe, par manque de connaissance je pense.
j'ai donc changer uniquement ce que j'ai compris pour le reste je crois que je vais d'abord finir le cour de SDZ pour appronfondir le reste et j'y reviendrai
merci beaucoup pour votre aide
a tres bientot car je ne laisse pas tombe ;)

Commentaire de amezghal le 21/12/2006 23:50:18

Bien fait dans cette MAJ mais ya une ptite remarque:
-il suffit de se connecter a la BD une seul fois. si tu vois bien tu trouves le contraire ( ligne 53, apres ligne 62).
bon prog

Commentaire de amezghal le 21/12/2006 23:55:59

une autre remarque a la ligne 80 tu fermes la balise php,et juste apres tu le re ouvres.

==================================
{
?>
<?php echo htmlentities($donnee['pseudo']); echo ">>>>"; echo htmlentities($donnee['message']); // on affiche les donnees recuilli grace a un echo
}
?>
=================================
fo mieux ecrire:
================================
{
echo htmlentities($donnee['pseudo']); echo ">>>>"; echo htmlentities($donnee['message']); // on affiche les donnees recuilli grace a un echo
}
?>
===============================
bon prog

Commentaire de vilhjalms le 22/12/2006 03:32:01

Ce qui me fait rire c est la correction du 21/12/2006 23:09:30 sans parler du 21/12/2006 23:12:17 qui corrige lol

Commentaire de coucou747 le 22/12/2006 10:32:47

on n'est pas obligé d'utiliser ajax pour éviter le rechargement... sinon, les IRC cgis n'utiliseraient qu'ajax, or c'est bien plus vieux que ça...

Commentaire de kankrelune le 22/12/2006 10:33:53

Ton code présente toujours la faille à la SQL injection (la plus grave)... prend le code nettoyé que je t'ai mis... regarde le et plutot que de ne changer que ce que tu comprend demande des explications sur ce que tu ne comprend pas... .. .

@ amezghal

{
echo htmlentities($donnee['pseudo']).' >>>> '.htmlentities($donnee['message']);
}

@ tchaOo°

Commentaire de angelz le 22/12/2006 11:50:35

bon je vais alors demander.
la CONCACTATION je capte pas...
qlq peut eclerer ma lanterne
je c pas qd metre les . lol

sinon qu'est que la faille injection ainsi que la xss permanente?
-----------------------
mysql_query('INSERT INTO minichat VALUES(\'\', \''.mysql_real_escape_string($pseudo).'\', \''.mysql_real_escape_string($message).'\')');
-----------------------
mysql_real_escape_string >> c une fonction ?
merci bcp

Commentaire de malalam le 22/12/2006 12:06:27 administrateur CS

Hello,

- CONCACTNATION ça n'existe pas. Tu parles sans doute de concaténation. Dans ce cas, c'est le fait de "coller" deux chaînes pour n'en faire qu'une :
$a = 'hello';
$b = 'world';
$c = $a.$b;
echo $c;
$c est une concaténation de $a et de $b, et vaut 'hello world'. L'opérateur de concaténation en php est le point : .
Avec un echo, on peut ne pas concaténer, vu que c'est une structure fonctionnant comme une fonction: son but est d'afficher vers la sortie écran les paramètres qui lui sont passés:
echo $a, $b; // va afficher hello world
echo $a.$b // va afficher aussi hello world

Une injection sql est le fait d'injecter du code SQL dans une requête sql...heu...en gros, si tu as un formulaire qui demande un pseudo et un mot de passe, et que le mec te passe un truc qui est une requête sql à la place, c'est une injection. Si tu ne te prémunis pas de ça, tu peux avoir des problèmes. Je ne vais pas rentrer dans les détails de ce qui peut être fait, mais mysql_real_escape_string () est effectivement une fonction PHP permettant d'échapper automatiquement les données qui lui sont passées en paramètres. Notament l'apostrophe qui peut être utilisée dans le cadre d'une injection.
La XSS c'est du cross scripting. C'est une injection, mais ça s'applique aussi à des langages de scripts, pas qu'au sql.
A la place du pseudo ou du mot de passe ou du message, le mec peut balancer du html, ou du javascript, par exemple. Et ce code peut poser des problèmes...dans le meilleur des cas, à ton affichage. Dans le pire...bah...ça peut aller loin.
htmlentities () te prémunit de ça vu que ça transforme les tags html en entitéss html non interprétées. Donc, si on balance du javascript, il ne sera pas interprété, et sera simplement affiché.

Commentaire de malalam le 22/12/2006 12:10:13 administrateur CS

N'empêche, plus je vois de codes défiler, plus je me dis qu'un espace "présentation de codes de débutants" serait approprié.
Il faudrait un espace "codes utiles", qui sont de bons codes finalisés, correctement codés, et réutilisables, et un espace pour les débutants, montrant leurs codes dans le but d'être critiqués et corrigés.
Parce que je me suis posé la question sur ton ode : je le laisse, ou je le supprime...clairement, - désolé -, il n'a pas sa place en tant que code réutilisable. Mais il est intéressant de par les commentaires laissés par Kankrelune, concernant les corrections à y apporter. Bref, pédagogiquement, c'est intéressant. Mais les utilisateurs de CS risquent de s'y perdre.
Donc, en tant qu'admin, je préviens : ce code reste, mais n'a aucun intérêt pour une éventuelle réutilisation. IL a un intérêt didactique grâce aux corrections et remarques apportées par les membres, uniquement.
Et il reste.

Commentaire de kankrelune le 22/12/2006 12:44:11

Angelz... la doc php est ton amie... .. .

http://fr2.php.net/nom_de_la_fonction

Sinon rien à rajouter à ce qu'a dit Malalam... .. .

@ tchaOo°

Commentaire de coucou747 le 22/12/2006 13:38:42

injection sql, c'est détourner une requette pour lui donner un comportement anormal (violer des droits genre afficher des mots de passes, supprimer des données ...) on la fait en ajoutant du code dans des cookies, post ou get...

malalam, faudrait si possible aussi mettre une catégorie "codes à pomper tout faits" ou on ne verrait pas de librairies... Comme ça, on pourrait comparer les gens qui ne font que piquer des sources avec ceux qui codent vraiment, pour conclure que sur les 800 000 membres, peu sont ceux qui sont actifs et utiles...

Commentaire de Tartuffe le 22/12/2006 14:39:04

Sympa cette discussion...

Je voudrais revenir sur "mysql_real_escape_string"....
Au cas où effectivement la requête à une tête de type :
- select * from table where chp1=".$_post['mavariable']
je comprends l'intérêt de "mysql_real_escape_string".

Lorsqu'il y a  des traitements avant, type :
- if(strlen(trim($_post[mavariable]))<250 && strlen(trim($_post[mavariable]))>5)
{$variable_post="where chp1= ".(trim($_post[mavariable]));}
else
{$variable_post="";}
- select * from table $variable_post']
doit on utiliser "mysql_real_escape_string" ?

Et dans l'absolu, doit on TOUJOURS utiliser "mysql_real_escape_string" avec des requêtes construitent avec des variables GET et POST ?

Commentaire de malalam le 22/12/2006 15:09:20 administrateur CS

tartuffe => il y a plusieurs façons de voir les choses ;-)
Tu peux toujours vérifier tout ce que tu veux via PHP, grâce aux fonctions de base. Même si là, dans ton exemple, je vois mal ce que tu sécurises dans le cadre d'une requête sql basée sur des données utilisateur : trim () ne fait pas grandchose si ce n'est supprimer les caractères invisibles en début et en fin de chaîne. Ca ne sécurise rien du tout. "'", l'apostrophe est pour mysql, comme pour php d'ailleurs, un caractère à échapper. IL y en a d'autres avec mysql. Des caractères qui, potnetiellement, peuvent permettre à un utilisateur peu scrupuleux de détourner une requête, comme le souligne Couou. trim () ne t'aidera pas, là.
On peut toujours panser à addslashes (), qui est LA fonction d'échappement de caractère de PHP. Tu m'aurais mis cette fonction dans cet exemple, j'aurais compris...mais ce n'est pas le cas.
Néanmoins, addslashes () ne prend en compte que les caractères posant potentiellement un problème  avec PHP, pas avec mysql (même si, pour le moment, ce sont les mêmes, grosso modo). mysq_real_escape_string (), lui, est basé sur l'api mysql pour php, et donc, évoluera en fonction du moteur de mysql. Bref, il sera toujours à jour...pour mysql, contrairement à addslashes () qui lui se fiche éperduement de mysql.

Commentaire de angelz le 22/12/2006 15:17:11

merci merci pour ces infos encore bcp bcp a apprende :)
sinon pour "repondre" a malalam, je suis entierement d'accord avec toi.
ce code je le savais n'est evidement pas la pour etre reutilise, je pense que des chat tt fait ici il doit y en avoir deja pas mal lol
je l'ai poster pour comme tu dis avoir des conseils de pro :)
c'est comme ca que je pense pouvoir progresser
mais pq pas cree en effet une section debutant car je trouve se site et les gens qui y reponde tres complet et competant en plus (enfin je crois lol)
merci de laisse le code qui je pense pourra en aider d'autre qui debute :)

pour le reste je lire ca trnaquillement ce soir :)
merci encore a tous
j'ai plus apris en 2 jour avec vous qu'en 2 semaine de lecture lol

Commentaire de malalam le 22/12/2006 15:27:39 administrateur CS

Angelz => il y a de nombreuses années, j'ai aussi débuter. Il y a pas mal de codes ici dont je suis l'auteur, et dont je ne suis pas fier... ;-)
Je sais à quel point il est difficile de débuter. Certes, PHP est un langage répandu, extrèmement bien documenté (je parle là de la bible : php.net), et que l'on peut trouver sur le net énormément de ressources (resources en anglais hein...), de tutoriaux, d'aide sur divers forums...le problème est qu'il y a en réalité peu de tutoriaux aboutis et bien codés (beaucoup sont vieux, à la décharge de leurs créateurs...donc ce n'est pas forcément leur faute. Sauf que PHP a beaucoup évolué, les créateurs de ces tutos aussi...mais que leurs tutos, pas forcément. Et je ne dirai pas ce que je pense des tuto du Site du Zéro.).  Que sur les forums, ce ne sont pas forcément des "phpistes" réellement bons qui répondent...et que les ressources, de la même manière, ne sont pas forcément correctement codées.
Et pour un débutant, malheureusement, il est difficile, voire impossible, de faire un tri...vu qu'il débute!

Donc...bon courage, Angelz... ;-) Un conseil quand même, tu apprendras plus en lisant la doc sur php.net que n'importe où ailleurs. Elle fait foi.

Commentaire de younes371 le 22/12/2006 17:29:40

en reponse à kankrelune , ajax, ça peut etre avec du php/mysql....,
et pour tout le monde et sutout l auteur , voici un tuto tres bien, et c avec ce tuto que j ai bien appris ajax :
http://www.siteduzero.com/tuto-3-7876-1-application-ajax-facile-avec-php-et-xajax.html

il contient aussi un mini-chat simple.

Commentaire de kankrelune le 22/12/2006 18:35:37

Merci mais je sais bien ce que sont les requêtes asynchrones le terme ajax commence à me gonfler... depuis deux ans c'est le terme à la mode utilisé (pour ne pas dire tartiné) à toute les sauces bien souvent pour rien... chez moi ajax c'est pour récurer les chiottes... lOoOl... ...

Pour revenir au sujet ajax c'est du javascript dont les xmlhttprequest... après le traitement de fond peut biensur être en php mais aussi en asp, ruby, coldfusion, etc... quel que soit le langage utilisé en tache de fond le code javascript générant les xmlhttprequest ne changera pas, hormis l'extension du fichier appelé... en conclusion ajax n'est pas et ne sera jamais du php (voir différence langage interprété coté client/coté serveur)... .. . ;o)

@ tchaOo°

Commentaire de malalam le 22/12/2006 20:33:00 administrateur CS

En réponse à Younes => Ajax, c'est du javascript, point barre. Du javascript qui appelle un script serveur, qui lui peut être en de nombreux langages, dont PHP.
Ajax, pour soutenir Kankrelune, c'est un ancronyme qui, grosso merdo, est un mot un peu plus sexy pour parler d'une méthode permettant de réaliser des requêtes xmlhttp.
Mais la base, c'est le javascript.
Donc, la remarque de Kankrelune concernant le "et si javascript est désactivé? Ajax nécessite une méthode alternative, n'utilisant pas javascript, et qui n'est pas forcément à la portée du débutant" est parfaitement juste.
Ou alors, si tu as trouvé une méthode pour faire de l'Ajax, sans javascript, avec uniquement du php et du sql, fais en part à la communauté, s'il te plait, tu deviendras vite célêbre :-)

Commentaire de younes371 le 22/12/2006 20:37:47

bah poour apprendre ajax facilement,(comme c etait le cas pour moi).
veuillez aller voir :
http://www.siteduzero.com/tuto-3-7876-1-application-ajax-facile-avec-php-et-xajax.html
le site principal est :
www.xajaxproject.org/
et si vous avez des problèmes ou des remarques :
http://community.xajaxproject.org/
Bon courage.

Commentaire de kankrelune le 23/12/2006 19:07:09

$kankrelune->mode('groumf',true);

Et xajax ça génère quoi... du... du... du javascript... .. .

Bref je ne dirais qu'une chose... BOULET !!! .. .

$kankrelune->mode('groumf',false);

Désolé Malalam... mais y a des fois je ne puis m'empêcher... ça soulage... .. .

Sans rancune aucune... et noyeux Joël à tous... .. .

@ tchaOo°

Commentaire de younes371 le 25/12/2006 22:16:52

Bonjour,
en fait, je me suis trompé, je sais pas kes k il m a arrivé pour dire une betise,
normalement ajax c du javascript et ...,
mais la bibliotheque XAJAX, nous facilite la tache pour programmer  en php et c'est a elle de convertir en javascript...
Je voulais dire ça au debut, mais ...
Bon courage

Commentaire de carpiste92 le 30/01/2008 10:48:43

bonjour
je cherche un exemple MINI CHAT
merci
thierry--92@hotmail.fr

Commentaire de cirkooo le 24/07/2009 11:40:49

Merci,ce script fonctionne, et çà, c'est énorme, merci beaucoup, car l'ayant pris ailleurs, je cherchais l'erreur (que je n'ai toujours pas trouvé d'ailleurs) depuis des mois. Merci, beaucoup, on peut tester, essayer, modifer.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

FICHIER TEXTE [ par webmathis ] Je suis entrain de développer un chat en PHP avec stockage dans un fichier texte, mais il me manque un petit script. j'aimerais qu'au bout de 6 lignes Chat PHP : déconnexion d'utilisateur [ par mouahaha ] Salut &#224; tous... Je suis en train de programmer un petit chat en php/sql, et je me retrouve face &#224; un probl&#232;me de taille : quand les uti Chat Php-flash [ par TomQuick ] Bonjour, j'ai un site web (http://tomquick-games.tk), et dessus, j'ai un chat flash-php. Le probl&#232;me, c'est que mon chat enregistre les messages Fonction javascript dans PHP [ par Vautour013 ] Bonjour, Est-il possible d'appeler une fonction javascript dans un script php et de retourner une valeur (ou un tableau) dans une variable du script PHP script d'horloge [ par maxetime ] Salut a tous,J'ai un probleme avec un script PHP/javascript le probleme en fait est que rien affiche j'ai une page blanche. Mon but est d'avoir l'heur Aide pour chat en PHP [ par thieryandco ] Salut &#224; tous !J'ai cr&#233;er un chat en PHP, simple &#224; utiliser et &#224; programmer (sans base de donn&#233;e).Mon seul probl&#232;me est q Pb avec script php avec manip sur base mysql [ par saccomabi ] &nbsp;Bonjour,j'utilise le dernier Wamp tout fonctionne phphmyadmin et autres. Lorsque je veux &#233;crire un script php avec une connection ou autre script php lisant un fichier externe du type .txt .xcl ou autres [ par NoBoDy62 ] bonjour,je cherche a mettre en place un petit script php fesant ceci:-envoyer un e-mail sous la forme d'un fichier .htmlDonc il y aurai: -&nbsp;un bou probleme formulaire [ par q1proust77 ] bonjour tout est dans le titre quand je clique sur submit il me met ca :Notice: Undefined variable: allopass in c:\program files\easyphp1-8\www\test\f script php sou linux ?? [ par robert_zo ] <TD id=HB_Focus_Element vAlign=top width="100%" background="" height=250 UNSELECTAB


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,108 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales