NewbieContest

Programmation => Langages Web => Discussion démarrée par: comtezero le 02 Septembre 2005 à 21:57:41



Titre: [PHP] chatbox
Posté par: comtezero le 02 Septembre 2005 à 21:57:41
Bonsoir a tous ,

pour la création d'une chatbox , je me pose plusieurs question ,
-est-ce que je peux utiliser les fonctions fopen fwrite pour copier le message dans un .txt puis apres remplacer dans la chatbox par le message contenu dans le .txt , je suis sur la bonne voie de cette maniere ?
- Apres ce que je vois pas du tout c'est comment faire pour qu'un message n'écrase pas le précédent et s'inscrit autre part ( comme celui du site qui s'inscrit dans la boite superieur ) , quelqu'un peut me mettre sur la voie et me dire si il s'agit de la bonne méthode ?

Please


Titre: [PHP] chatbox
Posté par: kokotchy le 03 Septembre 2005 à 15:46:37
pourquoi ne pas stocké dans une base de donnée ?

si tu ouvres le fichier avec a+, tu vas écrire le message a la fin du fichier
$fp = fopen('fichier','a+');
fwrite($fp,'bonjour');
fclose($fp);


Titre: [PHP] chatbox
Posté par: comtezero le 04 Septembre 2005 à 11:21:27
Tu es sur que ca marche ,j'avais deja essayé mais ca n'avait pas marcher la c'est pareil alors que pour les challenges le fopen avait marchais mais ca ne se passe pas sur mon serveur ni en fwrite  , Free doit bloquer ca non ? vu que le chmod est aussi bloqué . Peut etre que ca marcherait en ecrivant dans un php et non txt .


Titre: [PHP] chatbox
Posté par: Folcan le 04 Septembre 2005 à 12:00:17
non ca fonctionne bien avec un .txt, sur NC c'est comme cela que c'est fais en tout cas !
Apres il ets vraiue que Free est en safe mode donc bloke peut etre ce type de commande. Il faudra alors passer par la base de donnée (qui a mon gout est plus simple, tu stock tu recupere).

Si tu veux faire avec un .txt, il faut tout dabord que ton script recupere linterité de ton .txt, le separe correctement (par ligne par exemple), puis ajoute a la fin.


Titre: [PHP] chatbox
Posté par: comtezero le 04 Septembre 2005 à 12:08:48
ok je vais le faire par la bdd , et je re-essayerais plus tard par mon txt . Ca ne ralentie pas trop le site par la base de données ?

Citation
Warning: fopen(http://zone2test.free.fr/test.txt): failed to open stream: HTTP wrapper does not support writeable connections. in /var/www/free.fr/2/b/zone2test/test2.php on line 2

Warning: fwrite(): supplied argument is not a valid stream resource in /var/www/free.fr/2/b/zone2test/test2.php on line 3

Warning: fclose(): supplied argument is not a valid stream resource in /var/www/free.fr/2/b/zone2test/test2.php on line 4
J'ai fait un test tou simple ca ne marche pas , pourtant elle n'a pas l'air d'etre interdite :
Code:
chown	chmod	get_current_user
php_uname putenv set_time_limit
getmyuid getmypid dl
ini_alter ini_restore ini_set
exec passthru system
popen pclose leak
mysql_list_dbs listen chgrp
disk_total_space disk_free_space rmdir
realpath tmpfile link
shell_exec proc_open chroot
openlog closelog syslog
flock socket_create_listen socket_accept
socket_listen sleep usleep
umask set_include_path restore_include_path
symlink
A moins que fopen soit pareil que popen .


Titre: [PHP] chatbox
Posté par: Perfect Slayer le 06 Septembre 2005 à 17:36:47
bah c'est tout bete par txt (c'est moi qui est codé le chat de NC)... Pour que ca efface pas son conten, il faut :

soit bien configurer les droits d'écriture (pointeur en fin du fichier, sinon il remplace le début du fichier)

soit recopier tout le contenu du fichier + le nouveau message (en passant, tu traites ce que tu récupère pour supprimer les messages trop vieux)

Voilà, avec ca, t'as le fonctionnement. Tu mets 3 fonctions (et pas plus lol) et ca marche bien. ++ Perfect Slayer


Titre: [PHP] chatbox
Posté par: comtezero le 06 Septembre 2005 à 19:44:05
oui mais j'ai l'impression que Free le bloque , les droits en écriture ne peuvent pas etre modifié par le ftp .  Meme le plus simple des scripts avec fwrite ne marche pas . Faudra que j'essaye sur un local .

merci


Titre: [PHP] chatbox
Posté par: comtezero le 10 Septembre 2005 à 11:27:01
Code:
$db = Mysql_Connect($serveur,$user,$password)OR Die('Erreur de connexion'.mysql_error());
 Mysql_Select_Db($basename,$db)OR Die('base inexistance ou non joignable'.mysql_error());
$sql="INSERT INTO chatbox VALUES ('','".$login."','".$time."','".$messg."')";
Mysql_Query($sql) OR Die('Erreur SQL !'.$sql.'<br />'.mysql_error());

header ("location:http://zone2test.free.fr/index.php");
J'ai un probleme , peut-etre vient t'il du header  , mais lorsque je veux inserer des données dans la BDD , il n'y a pas d'erreur et pas d'insertion , d'ou cela peut-il venir ?

A moins que le probleme  vient de ce script :
Code:
$db = Mysql_Connect($serveur,$user,$password)OR Die('Connexion impossible'.mysql_error());
Mysql_Select_Db($basename,$db)OR Die('base inexistance ou non joignable'.mysql_error());
$req = Mysql_Query("SELECT login,time,messg FROM chatbox order by id");
$res = mysql_fetch_array ($req);
{
$loginm = $res['login'] ;
$heurem = $res['time'] ;
$msg = $res['messg'] ;
Mais il m'affiche le pseudo , message et heure d'une fois ou j'avais essayé et  que ca avait marché .


Titre: [PHP] chatbox
Posté par: comtezero le 10 Septembre 2005 à 17:24:56
C'est résolu mais comment faire afficher plusieurs commentaire et non qu'un seul ?


Titre: [PHP] chatbox
Posté par: kokotchy le 12 Septembre 2005 à 21:12:35
avec free, je crois que tu ne peux pas ouvrir de fichier 'à l'extérieur'.

Pour ouvrir un fichier ligne par ligne, tu as le bete file qui mets dans un array avec pour chaque cellule une ligne du fichier.

pour ta question avec plusieurs commentaires, il faut faire une boucle ;)

$res = mysql_fetch_array ($req);
{
$loginm = $res['login'] ;
$heurem = $res['time'] ;
$msg = $res['messg'] ;

tu as le bloc avec $loginm qui ne sera jamais exécuté puisque il n'y a rien (pas de while, for, if, switch,...)


Titre: [PHP] chatbox
Posté par: comtezero le 14 Septembre 2005 à 20:00:43
bon merci des indications dès que j'ai un peu de temps je test ca .


Titre: [PHP] chatbox
Posté par: comtezero le 14 Septembre 2005 à 20:53:51
C'est bon un chtit :
Code:
for ( $i=0; $i<5; $i++){
$res = mysql_fetch_array ($req);
{
$loginm = $res['login'] ;
$heurem = $res['time'] ;
$msg = $res['messg'] ;}
Et ca marche , je vous fait tous la bise :P et merci


Titre: [PHP] chatbox
Posté par: kokotchy le 15 Septembre 2005 à 07:02:30
{
$loginm = $res['login'] ;
$heurem = $res['time'] ;
$msg = $res['messg'] ;}
normalement ca c'est censé ne rien faire oO
pourquoi dis-tu que ca marche ?

Et pourquoi faire une boucle avec for si tu peux limité les éléments avec le LIMIT de mysql ?


Titre: [PHP] chatbox
Posté par: comtezero le 15 Septembre 2005 à 17:17:33
pourtant ca marche nikel la boucle ca affiche plusieurs champ differents , comme celui de NC , a vrai dire le for me paraissait sympa et j'ai meme pas vu qu'il y avait un limit dans mysql , j'ai hésité avec while mais j'ai testé lui en premier et il marchais alors je n'ai pas plus chercher .


Titre: [PHP] chatbox
Posté par: Folcan le 15 Septembre 2005 à 22:49:43
Oui je comprend pas bien, la ca te fou juste dans des variables mais si tu ne les affichent pas derriere ca sert pas a grand chose...


Titre: [PHP] chatbox
Posté par: comtezero le 16 Septembre 2005 à 18:15:18
je n'ai mis que le script de la boucle sinon j'echo mes variables plus tard .


Titre: [PHP] chatbox
Posté par: popop le 14 Mai 2006 à 16:13:06
(ps:je tiens dabord à préciser que je suis encore un débutant  quiapprend le php!!)

Bon je vous explique mon probleme:
je suis en train de faire une chatbox ( pas d'en le ut de m'en servir tout de suite juste pour comprendre le fonctionnement).
mais je comprend pas un truc: quand je me sert de mysql_fetch_array() firefox me di ceci:"Fatal error: Call to undefined function: mysql_array()" pourtant je suis sur (en tout cas presque) de ne pas avoir fait d'erreur de script, de plus j'ai comparé avec un exemple type et il n'y a pas d'erreur possible :?
si quelqu'un pouvait m'expliquer d'ou vient le probleme **orthographe !** sympas :o


Titre: [PHP] chatbox
Posté par: the lsd le 14 Mai 2006 à 16:27:31
Ben moi je veux bien t'aider mais sans le code source c'est pas tres facile... ;)

Enjoy

The lsd


Titre: [PHP] chatbox
Posté par: popop le 14 Mai 2006 à 16:36:12
scuse **No Sms** oublié!!! :rolleyes:
ps:je rappel que j'ai fait ce script just pour comprendre le fonctionnement d'une chatbox pas pour en faite une toute belle...

<html>
<?php

if(isset($_POST['pseudo']) AND isset($_POST['message']))
{
     if($_POST['pseudo']!=NULL AND $_POST['message']!=NULL)

     {
    mysql_connect("localhost","root","");
         mysql_select_db("chat");
       $message = htmlentities ($_POST['message']);
$pseudo = htmlentities ($_POST['pseudo']);

mysql_query("INSERT INTO chat('ID', 'pseudo', 'message');
 VALUES('', '$pseudo', '$message')");
 mysql_close();
     }
}
 ?>
 <form action="chat.php" method="post">
pseudo:<input type="text" name="pseudo"/><br/>
message:<input type="text" name="message"/><br/>
<input type="submit" value="valider"/>
</form>
<?php
mysql_connect("localhost","root","");
         mysql_select_db("chat");
$reponse=mysql_query("SELECT * FROM chat ORDER BY ID DESC LIMIT 0‚10");
while($donnee= mysql_fetch_array($reponse) )
mysql_close();
{
?><p><strong><?php echo $donnee['pseudo'];?></strong>:<?php echo $donnee['message'];?></p>
<?php
}
?>
</html>

merci d'avance!!


Titre: [PHP] chatbox
Posté par: the lsd le 14 Mai 2006 à 17:56:02
Je pense que l'erreur peut venir de la :
Code:
while($donnee= mysql_fetch_array($reponse) )
mysql_close();
{
?><p><strong><?php echo $donnee['pseudo'];?></strong>:<?php echo $donnee['message'];?></p>
<?php
}
Tu ferme la connexion a la BDD avant de donner les variables  pseudo et message.
J'aurai mis un truc du genre :
Code:
while($donnee= mysql_fetch_array($reponse) )
{
?><p><strong><?php echo $donnee['pseudo'];?></strong>:<?php echo $donnee['message'];?></p>
<?php
}
mysql_close();
Apres je sais pas du tout ce n'est qu'une supposition parce que je n'est rien vu d'autre qui n'allait pas.

Enjoy

The lsd


Titre: [PHP] chatbox
Posté par: popop le 14 Mai 2006 à 20:11:54
bah jcomprend plus rien ce matin sa marchait pas la je réessaye et sa marche niquel :shock:
mais par contre je comprend pas pourquoi il ne m'affiche pas les dix derniers post?


Titre: [PHP] chatbox
Posté par: the lsd le 14 Mai 2006 à 22:32:29
Il te les affiche tous?
Tu as essayé sur FireFox et Internet Explorer ou juste sur un seul? Ca vient peut etre de la (je pense pas mais sait on jamais)

Enjoy

The lsd


Titre: [PHP] chatbox
Posté par: Shenryu le 15 Mai 2006 à 09:21:14
Euh juste un conseil pour que tes scripts soient moins longs à exécuter... Ouvre une seule fois la base et ferme la une seule fois... C'est sans doute le truc le plus long en php alors si tu l'exécute avant chaque requête tu n'en finira pas.

Tu peux également remplacer les AND par des &&... Je ne savais pas que AND existait en php d'ailleurs.

Il ne t'affiche pas les 10 derniers posts parce que ta boucle n'est pas bonne comme l'a montré the lsd dans son premier post. Regarde il t'a même mis la réponse ^^

Au passage, je te conseille de jeter un coup d'oeil pour la sécurité des données entrées dans ton input. Regarde du côté du magic quote (addslashes()), les manipulations de string histoire d'interdire certains caractères ou des les remplacer, mysql_real_escape_string(), htmlspecialchars() qui empêche l'interprétation du html...

Et n'oublies pas d'effacer le cache de ton navigateur (surtout ie), il arrive qu'il t'affiche la même chose alors que tu as changé ton code.


Titre: [PHP] chatbox
Posté par: popop le 15 Mai 2006 à 16:52:29
j'ai fait les modifications que vous m'avez dire c'est a dire que j'ai laissé qu'une seule ouverture de mysql et une seule fermeture qui se situe la ou lsd la mise mais sa ne m'affiche toujours pas les dix derniers post :rolleyes:


Titre: [PHP] chatbox
Posté par: the lsd le 15 Mai 2006 à 17:01:10
Tu es sur que les variables arrivent dans la base de données? Ca peut etre utile pour savoir si ca vient du script d'insertion de données ou du script d'affichage. Si elles sont bien dans la BDD c'est que ca vient de l'affichage.
A ta place je mettrai ca :
 
Code:
mysql_connect("localhost","root","") or DIE ("Erreur de connexion à la BDD pour l'insertion de données");
         mysql_select_db("chat") or DIE ("Erreur de connexion à la BDD pour l'insertion de données");
et :
Code:
mysql_connect("localhost","root","") or DIE ("Erreur de connexion à la BDD pour l'affichage de données");
         mysql_select_db("chat") or DIE ("Erreur de connexion à la BDD pour l'affichage de données");
Comme ca tu saura plus exactement d'ou ca peut venir

Enjoy

The lsd


Titre: [PHP] chatbox
Posté par: Shenryu le 16 Mai 2006 à 13:18:06
fais également des :
Code:
mysql_query("SELECT * ......") or DIE ("Erreur requête x");
Je te conseille de mettre le mysql_connect tout au début de ta page et le mysql_close tout à la fin de ta page. Comme ça il n'y aura pas d'erreurs théoriquement.

Est-ce que tu as vérifié que tes données étaient bien insérées dans la base.


Titre: [PHP] chatbox
Posté par: the lsd le 26 Mai 2006 à 08:37:52
Alors tu a trouvé ce qui clochait ou pas popop ?

Enjoy

The lsd