Commentaires comme sur un blog

Résolu
knorc Messages postés 11 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 1 juillet 2006 - 29 juin 2006 à 19:26
knorc Messages postés 11 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 1 juillet 2006 - 1 juil. 2006 à 09:54
Bonjour !
Je viens d'essayer de coder un petit script qui me permettrait de lire et poster les commentaires des visiteurs de mon site, un peu comme sur skyblog...
Voila le code :

post_comment.php
<html>
<head> 
   <title>Poster un commentaire</title>
<?
function RecordMessage($MessagesFile)
{
$nom= $_POST['nom'];
$commentaire=$_POST['commentaire'];
 
if (!file_exists($MessagesFile))
{
$pntFile1=fopen($MessagesFile,"w+");
$ret=fputs($pntFile1,"<HR>\r");
$ret=fclose($pntFile1);
}
 
$idlck=fopen($MessagesFile.".bak","w");
fclose($idlck);
 
$ret=copy($MessagesFile,$MessagesFile.".bak");
$pntFile1=fopen($MessagesFile,"w");
$pntFile2=fopen($MessagesFile.".bak","r");
// write the message
 
$commentaire= ereg_replace(chr(13),"
",$commentaire); // replace chr(13) by

$commentaire= str_replace("\'","'",$commentaire);
 $commentaire= str_replace('"','"',$commentaire);
 
if($commentaire&&$nom)
{
$ret=fputs($pntFile1," posté par $nom \r");
$ret =fputs($pntFile1,date("d/m/Y H:i"));
$ret= fputs($pntFile1,"
\r");
$ret=fputs($pntFile1,"
\r");
$ret=fputs($pntFile1," <CENTER>\r");
$ret=fputs($pntFile1," $commentaire \r");
$ret =fputs($pntFile1," </CENTER>\r");
$ret=fputs($pntFile1,"
\r");
$ret=fputs($pntFile1,"<HR>\r");
}
$contents = fread( $pntFile2, filesize( "$MessagesFile.bak" ) );
$ret =fputs($pntFile1,$contents);
$ret=fclose($pntFile2);
$ret=fclose($pntFile1);
$ret=unlink($MessagesFile.".bak");
}
?>



<?
$MessagesFile=('messages'.$id.'.txt');
$ecriture=RecordMessage($MessagesFile);
?>
 
<style>
a{
text-decoration:none;
}
</style>
 
<SCRIPT LANGUAGE="JavaScript">
function verifform(formulaire)
{ if(formulaire.commentaire.value "" || formulaire.nom.value "")
{
alert('Veuillez remplir tous les champs');
}
else
{
formulaire.submit();
}
}
</SCRIPT>
</head>









<center>
<form method="post" action="valide_comment.php">
Pseudo:

<?
if($pseudo == "")
{
echo "";
}
else
{
echo "";
}
?>


Commentaire :

<textarea name ="commentaire" cols= "40" rows="5"></textarea>


 
 </form>
</center>

</html>





read_comment.php
<html>
<head>
<title>Commentaires</title>

<?
function lit_actu($fichier)
{
$lecture=fopen($fichier, "r");
$chaine=fread($lecture,filesize($fichier));//lit le contenu du fichier
fclose($lecture);
return $chaine;
}
?>
</head>




<center>
<?
$actu=lit_actu('messages'.$id.'.txt');
?>

<?



if($actu "" || $actu " " || $actu == "<HR>
")
{
echo "Aucun commentaire posté !";
}
else
{
echo "$actu";
}
?>

</center>

</html>





valide_comment.php
<html>
<head> 
   <title>Poster un commentaire</title>

<style>
a{
text-decoration:none;
}
</style>
</head>



<center>

Votre commentaire a été ajouté !

<form>
</form>
</center>

</html>

J'affiche donc ensuite deux liens de ce type : post_comment.php?id =1 et read_comment.php?id= 1
Voila, comme je suis assez mauvais en php, j'aimerais que vous m'expliquiez mes erreurs et pourquoi ca ne fonctionne pas, les eventuelles failles...
Voila ce que ca affiche

Warning : fread() [function.fread]: Length parameter must be greater than 0. in /mnt/112/sdc/7/9/knorc/read_comment.php on line 10 

Warning: fread() [function.fread]: Length parameter must be greater than 0. in /mnt/112/sdc/7/9/knorc/post_comment.php on line 43

et d'autres trucs bizarres du genre...

Vous pouvez voir le script en fonctionnement sur =page&ac=page&id_page=1 mon site
Merci d'avance pour votre aide !!

7 réponses

knorc Messages postés 11 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 1 juillet 2006
1 juil. 2006 à 09:54
J'ai résolu le problème en mettant action="<?$PHP_SELF;?>" dans mon formulaire et ca semble marcher !
3
cedriclomb Messages postés 275 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 27 avril 2010 1
30 juin 2006 à 11:21
Est tu sur que ton fichier .bak n'est pas vide au moment de la lecture ?

Autre question Pourquoi n'a tu pas fait de sql ?
0
knorc Messages postés 11 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 1 juillet 2006
30 juin 2006 à 15:12
Je n'ai pas utilisé de sql parce que je pensais que c'était plus simple comme ca lol
Et vu que je débute je me suis inspiré de codes trouvés (enfin, tu sais comment on fais, quand on débute dans un langage...) et d'ailleurs je ne comprend pas la necessité de ces fichiers .bak, qui sont d'ailleurs bel et biens vide puisque je ne vois pas ce que je peux mettre dedans...
Desolé pour mon "nioubisme"
 
 
0
cedriclomb Messages postés 275 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 27 avril 2010 1
30 juin 2006 à 15:22
Bon alors de mettre le tous dans des fichiers persos je trouve que c'est beaucoup plus galere que 3 requettes sql

Le delete pour l'admin (optionnel)

Et sinon select et insert pour les utilisateurs afin de lire et d'écrire

Les fichiers bak sont vides dedans tu pourrait mettre tes messages par exemple le probleme c'est que la fonction fread cherche sur la longueur du fichier bak

Si tu veus je peux te filer un coup de main pour faire des requettes sql vites fait bien fait tu vas voir c'est pas sorcier est beaucoup moins galere surtout que a l'avenir tu pourra orienter ton site vers une administration entierement sql ce qui te permettra de te faire une admin avec un zoli éditeur de texte ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
knorc Messages postés 11 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 1 juillet 2006
30 juin 2006 à 17:22
J'ai modifié ma fonction en virant tout ce qui concerne les .bak::
<?
function RecordMessage($MessagesFile)
{
$nom= $_POST['nom'];
$commentaire=$_POST['commentaire'];
 
if (!file_exists($MessagesFile))
{
$pntFile1=fopen($MessagesFile,"a");
$ret=fputs($pntFile1,"<HR>\r");
$ret=fclose($pntFile1);
}
 
 
  
$pntFile1=fopen($MessagesFile,"a");



// write the message
 
$commentaire= ereg_replace(chr(13),"
",$commentaire); // replace chr(13) by

$commentaire= str_replace("\'","'",$commentaire);
 $commentaire= str_replace('"','"',$commentaire);
 
if($commentaire&&$nom)
{
$ret=fputs($pntFile1," posté par $nom \r");
$ret =fputs($pntFile1,date("d/m/Y H:i"));
$ret=fputs($pntFile1,"
\r");
$ret=fputs($pntFile1,"
\r");
$ret=fputs($pntFile1," <CENTER>\r");
$ret=fputs($pntFile1," $commentaire \r");
$ret =fputs($pntFile1," </CENTER>\r");
$ret=fputs($pntFile1,"
\r");
$ret=fputs($pntFile1,"<HR>\r");
}



 
$ret=fclose($pntFile1);



}
?>



J'ai aussi écrit quelque chose dans mes fichiers .txt
Du coup je n'ai plus de message d'erreur, mais le problème est que je n'arrive pas à écrire dans mes fichiers .txt
Cela vient peut-etre du fait que j'ai laissé les chmods en 644 ?
Si il n'y a pas d'autre solution, je veux bien que tu m'aide à faire des requetes cedriclomb s'il te plait.
Le seul truc c'est que mon site est un cms donc pour le panneau d'admin j'en voulais pas un de plus lol
Merci de ton aide !


 
0
cedriclomb Messages postés 275 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 27 avril 2010 1
30 juin 2006 à 19:56
C'est quoi comme CMS car la solution intelligente si ta un cms c'est de dévelloper un composant qui s'integre dans ton admin ou bien d'installer un qui existe ;)
0
knorc Messages postés 11 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 1 juillet 2006
30 juin 2006 à 20:55
Le CMS est Pwsphp mais le site n'existe plus car le successeur de Pwsphp s'appelle Kwsphp.
Enfin j'aimerais bien comprendre pourquoi je n'arrive pas à enregistrer dans mes .txt ......
0
Rejoignez-nous