begin process at 2008 08 20 11:31:23
1 228 769 membres
141 nouveaux aujourd'hui
14 257 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LIVRE D'OR


Information sur la source

Catégorie :Divers Niveau : Débutant Date de création : 16/07/2004 Date de mise à jour : 19/07/2004 13:28:54 Vu / téléchargé: 4 814 / 441

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (22)
Ajouter un commentaire et/ou une note

Description

Un livre d'or très simple, n'utilisant pas de base de données.

Source

  • LIVRE.PHP
  • <!doctype html public "-//w3c//dtd html 4.0 transitional//en">
  • <html>
  • <head>
  • <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  • <title>Livre d'or</title>
  • <?
  • function RecordMessage($MessagesFile)
  • {
  • global $nom;
  • global $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),"<BR>",$commentaire); // replace chr(13) by <BR>
  • $commentaire= str_replace("\'","'",$commentaire);
  • $commentaire= str_replace('\"','"',$commentaire);
  • if($commentaire&&$nom)
  • {
  • $ret=fputs($pntFile1," <CENTER>\r");
  • $ret=fputs($pntFile1," <I>$commentaire</I>\r");
  • $ret=fputs($pntFile1," </CENTER>\r");
  • $ret=fputs($pntFile1,"</P>\r");
  • $ret=fputs($pntFile1,"<BR>\r");
  • $ret=fputs($pntFile1,"$nom ");
  • $ret=fputs($pntFile1,date("d/m/Y H:i"));
  • $ret=fputs($pntFile1,"<BR>\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");
  • }
  • ?>
  • <?
  • function lit_actu($fichier)
  • {
  • $lecture=fopen($fichier, "r");
  • $chaine=fread($lecture,filesize($fichier));//lit le contenu du fichier
  • fclose($lecture);
  • return $chaine;
  • }
  • ?>
  • <?
  • $MessagesFile=("messages.txt");
  • $ecriture=RecordMessage($MessagesFile);
  • ?>
  • <style>
  • a{
  • text-decoration:none;
  • }
  • </style>
  • <SCRIPT LANGUAGE="JavaScript">
  • function verifform(formulaire)
  • {
  • if(formulaire.commentaire.value == "" && formulaire.nom.value == "")
  • alert('Remplissez le formulaire !');
  • else
  • formulaire.submit();
  • }
  • </SCRIPT>
  • </head>
  • <body text="#000099" bgcolor="#E9E9E9" link="#000099" vlink="#000099" alink="#000099">
  • <center><table COLS=1 WIDTH="80%" >
  • <tr>
  • <td>
  • <center><h2>LIVRE D'OR</h2></center>
  • </td>
  • </tr>
  • </table></center>
  • <br>&nbsp;
  • <center><table COLS=1 WIDTH="80%">
  • <tr><td><center>
  • <form method="post" action="livre.php">
  • <b><font color="#000099">Votre nom ou pseudo</font></b><br>
  • <input type="text" name="nom" size="20" maxlength="40"><br><br>
  • <b>Veuillez taper votre message ci-dessous</b><br>
  • <textarea name="commentaire" cols="40" rows="5"></textarea>
  • <br><br>
  • <input type="button" value="envoyer" onClick="verifform(this.form)">
  • &nbsp;&nbsp;
  • <input type="reset" value="effacer">
  • </form>
  • </center>
  • </td></tr>
  • </table></center>
  • <center><h3>MESSAGES</h3></center>
  • <center><table COLS=1 WIDTH="50%" BGCOLOR="#FFFFFF" BORDER=0>
  • <tr>
  • <?
  • $actu=lit_actu("messages.txt");
  • ?>
  • <TD VALIGN=CENTER>
  • <b>
  • <? echo "$actu"; ?>
  • </b>
  • </TD></td>
  • </tr>
  • </table></center>
  • <br>&nbsp;
  • </body>
  • </html>
LIVRE.PHP

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
   <title>Livre d'or</title>
   <?
function RecordMessage($MessagesFile)
{
 global $nom;
 global $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),"<BR>",$commentaire); // replace chr(13) by <BR>
 $commentaire= str_replace("\'","'",$commentaire);
 $commentaire= str_replace('\"','"',$commentaire);

 if($commentaire&&$nom)
 {
 $ret=fputs($pntFile1," <CENTER>\r");
 $ret=fputs($pntFile1,"  <I>$commentaire</I>\r");
 $ret=fputs($pntFile1," </CENTER>\r");
 $ret=fputs($pntFile1,"</P>\r");
 $ret=fputs($pntFile1,"<BR>\r");
 $ret=fputs($pntFile1,"$nom ");
 $ret=fputs($pntFile1,date("d/m/Y H:i"));
 $ret=fputs($pntFile1,"<BR>\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");
}
?>
   <?
function lit_actu($fichier)
{
    $lecture=fopen($fichier, "r");
    $chaine=fread($lecture,filesize($fichier));//lit le contenu du fichier
    fclose($lecture);
    return $chaine;
}
     ?>

<?
$MessagesFile=("messages.txt");
$ecriture=RecordMessage($MessagesFile);
?>

  <style>
  a{
      text-decoration:none;
  }
  </style>
  <SCRIPT LANGUAGE="JavaScript">
  function verifform(formulaire)
  {
      if(formulaire.commentaire.value == "" && formulaire.nom.value == "")
      alert('Remplissez le formulaire !');
      else
      formulaire.submit();
  }
</SCRIPT>
</head>
<body text="#000099" bgcolor="#E9E9E9" link="#000099" vlink="#000099" alink="#000099">
<center><table COLS=1 WIDTH="80%" >
<tr>
<td>
<center><h2>LIVRE D'OR</h2></center>
</td>
</tr>
</table></center>
<br>&nbsp;
<center><table COLS=1 WIDTH="80%">
<tr><td><center>
<form method="post" action="livre.php">
<b><font color="#000099">Votre nom ou pseudo</font></b><br>
<input type="text" name="nom" size="20" maxlength="40"><br><br>
<b>Veuillez taper votre message ci-dessous</b><br>
<textarea name="commentaire" cols="40" rows="5"></textarea>
<br><br>
<input type="button" value="envoyer" onClick="verifform(this.form)">
&nbsp;&nbsp;
<input type="reset" value="effacer">
</form>
</center>
</td></tr>
</table></center>
<center><h3>MESSAGES</h3></center>
<center><table COLS=1 WIDTH="50%" BGCOLOR="#FFFFFF" BORDER=0>
<tr>
<?
$actu=lit_actu("messages.txt");
?>
<TD VALIGN=CENTER>
<b>
<? echo "$actu"; ?>
</b>
</TD></td>
</tr>
</table></center>
<br>&nbsp;
</body>
</html>

Conclusion

Suite aux conseils de GRenard, il semblerait que la méthode de déclaration de variables "global" n'est plus usitée pour des raisons de sécurité,  il conviendra donc d'utiliser la méthode $_POST.

$nom=$_POST['nom'];
$commentaire=$_POST['commentaire'];

à la place de :

global $nom;
global $commentaire;


Attention, cette méthode ne fonctionne pas chez Tiscali, mais fonctionne parfaitement chez Free.
A vous de tester pour les autres hébergeurs.
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

17 juillet 2004 07:57:53 :
17 juillet 2004 09:38:49 :
18 juillet 2004 09:15:54 :
19 juillet 2004 12:57:06 :
Suite aux conseils de coucou747, ajouter ces 2 lignes : $commentaire= str_replace("<'"," ",$commentaire); $commentaire= str_replace('>"'," ",$commentaire); dans le script pour le sécuriser.
19 juillet 2004 13:28:54 :
Rectificatif pour erreur de copier/coller : $commentaire= str_replace("<"," ",$commentaire); $commentaire= str_replace(">"," ",$commentaire);
  • signaler à un administrateur
    Commentaire de GRenard le 16/07/2004 08:23:48

    Il faut mettre une method au formulaire (GET ou POST) et ensuite utiliser les variables tableaux du système $_GET ou $_POST pour aller chercher ce qui a été envoyé par formulaire ou adresse web, mais pas directement $nom_de_la_variable.

    Petit conseil, essais de coder avec les variables suivantes :
    short_open_tag = Off
    register_globals = Off
    error_reporting = E_ALL

  • signaler à un administrateur
    Commentaire de familypm le 16/07/2004 08:50:28

    Je te remercie pour tes conseils.

    En fait c'est mon premier script, avec un Tag-Board qui utilise le même script, ils fonctionnent parfaitement tous les deux sur mon site, mais j'ai surement fait des erreurs, principalement au niveau de la sécurité.

    Je vais essayé de comprendre mes erreurs et les modifier.

  • signaler à un administrateur
    Commentaire de windu le 16/07/2004 09:56:21

    familypm->en fait les erreur que te signale GRenard sont dus a une "faille de sécurité" de PHP... depui PHP 4 & kelke pour recuperer tes variables tu dois utiliser les tableaux $_GET et $_POST car sinon si tu recupere la variable comme tu le fais n'importe qui peut transmettre une variable et fausser ton système voire le pirater le principe des tableaux superglobaux limitent l'accès des variables: $_GET ne représente que les variabler d'URL par ex.
    de toute facon, a part si tu change register_globals, tu es obligé d'utiliser les tableaux superglobaux sur toutes les nouvelle versions de PHP (depuis la version de correction mais je me souviens plus c'est laquelle exactement...)

  • signaler à un administrateur
    Commentaire de familypm le 17/07/2004 08:35:06

    J'ai modifié le script en utilisant  $_POST, j'espère avoir bien compris, en tous cas ça fonctionne toujours.
    Merci encore

  • signaler à un administrateur
    Commentaire de familypm le 17/07/2004 09:50:39

    En fin de compte, j'ai remis la méthode "global", car ça ne fonctionnait plus en ligne, (en revanche ça marchait en local ??), surement à cause des variables $nom et $commentaire qui se trouvent à différents endroits du script.

    J'ai tenté de modifier des $nom en $_POST['nom'] et des $commentaire en $_POST['commentaire'], j'avais encore plus d'erreurs.

    Je cherche encore.

  • signaler à un administrateur
    Commentaire de GRenard le 17/07/2004 10:28:06

    Pour tester jusqu'a temps que tu n'ailles plus d'erreur, va mettre dans ton php.ini les variables que j'ai mentionnées plus haut !
    Bonne Chance !

    (Lorsque tu fais une mise à jour, ne l'écrit pas dans "ton code" ou l'explication... écrit le dans l'espace alloué qui explique ta mise à jour !)

  • signaler à un administrateur
    Commentaire de familypm le 17/07/2004 11:27:41

    J'ai trouvé pourquoi ça marche en local et pas en ligne, sur le forum des webmasters de Tiscali mon hébergeur, en fait  le register_globals de Tiscali est sur ON et apparemment je ne suis pas le seul à avoir ce problème.

  • signaler à un administrateur
    Commentaire de GRenard le 18/07/2004 06:39:28

    S'il est sur ON, les variables $_ fonctionnent quand même...

  • signaler à un administrateur
    Commentaire de familypm le 18/07/2004 08:54:57

    Voici ce qui est répondu par le modérateur sur le forum des webmasters des pages perso de Tiscali.

    Question :

    J'ai fait mon petit portail, pour la reception ds données formulaires, j'ai
    l'habitude d'utiliser $_get['bob'] ou $_post['bob'] ou encore
    $_request['bob']... ici ça veut pas....
    Quel est donc le pourquoi du comment ? Problème de version ? Je vais tout
    de meme pas me taper toutes les conversions de $_request['bob'] en $bob...
    Merci pour la reponse
    et de rien pour l'effort de redaction...


    Réponse :

    C'est en effet un problème de version de PHP, celle installée ne prend pas
    les $_GET et $_POST mais directement les $variables.

    Merci de votre compréhension.


    C'est la raison pour laquelle je ne peux pas utiliser $_POST en ligne chez Tiscali, mais que ça fontionne très bien en local, même avec EasyPHP 1.6.

    Je le testerais chez Free, après modifications, sur un autre site.

    Je vais laisser mon script en l'état, libre à chacun de modifier la déclaration des variables, en fonction de son hébergeur.

    Merci encore pour les conseils, que je pense avoir compris.

  • signaler à un administrateur
    Commentaire de GRenard le 18/07/2004 10:19:40

    Attention, ces variables sont obligatoirement en majuscule...

    La version de PHP doit etre sacrément vieille pour ne pas accepter ces variables sur Tascali...
    Une chance que ce service est gratuit sinon tu aurais pus les poursuivres :P

    Pour savoir la version de PHP sur un serveur, tu fais un fichier avec ceci à l'intérieur
    <?php
    phpinfo();
    ?>

    Tu obtiendras pleins d'informations utiles ainsi que le numéro de la version...


    Si tu veux avoir une meilleur version chez toi, je te conseille d'installer Apache, mySQL et ensuite PHP4.3.8 (à ce jour)


    Bonne Chance :)

  • signaler à un administrateur
    Commentaire de coucou747 le 19/07/2004 10:24:18

    a moins que j'ai mal lu ton code source, c'est très dangereux de mettre ça dans ton site...
    si qqn met
    <?
    system("shutdown -h now")
    ?>
    dans ton livre d'or, ton serveur s'éteind... Bref, ton script prends le html et le php dans les commentaires que posteront les internautes => grosse faille de sécuritée...

    Sinon, c'est pas mal, t'as juste ça a ajouter, une ligne remplaçant les "<" par des espaces et une ligne remplacant les ">" par des espaces...

  • signaler à un administrateur
    Commentaire de familypm le 19/07/2004 13:37:56

    Bien vu !

    C'est rectifié.

    Merci beaucoup

  • signaler à un administrateur
    Commentaire de coucou747 le 23/07/2004 15:09:48

    en fait sans ça t'es un peu mal car la, je donne juste la solution pour éteindre un serveur a distance, mais évidement vous pensez bien que l'on pourrait facilement avec ça passer toutes les autres sécuritées et supprimer tout les fichier du serveur... (possèdant moi même un serveur perso, je suis solidaire... lol)
    sinon, bon code

  • signaler à un administrateur
    Commentaire de coucou747 le 23/07/2004 15:14:12

    au dessus, j'ai vu un commentaire te conseillant php 3...
    met php5 c'est un peu plus récent...

  • signaler à un administrateur
    Commentaire de coucou747 le 23/07/2004 15:14:25

    au dessus, j'ai vu un commentaire te conseillant php 3...
    met php5 c'est un peu plus récent...

  • signaler à un administrateur
    Commentaire de coucou747 le 23/07/2004 15:14:39

    au dessus, j'ai vu un commentaire te conseillant php 3...
    met php5 c'est un peu plus récent...

  • signaler à un administrateur
    Commentaire de coucou747 le 23/07/2004 18:45:43

    ça marche pas chez moi, je sais pas pourquois...

  • signaler à un administrateur
    Commentaire de familypm le 26/07/2004 10:52:39

    Si tu utilises EasyPHP 1.7, il faut déclarer les variables à l'aide de $_POST, comme dit dans un post précédent.

  • signaler à un administrateur
    Commentaire de coucou747 le 26/07/2004 10:57:22

    j'utilises apache, mais j'ai réussi a créer moi même un script de ce genre, alors je n'en ai as besoin (ce script m'a bien aider a aprendre le php)
    merci pour ta source

  • signaler à un administrateur
    Commentaire de choubess le 22/08/2004 17:52:00

    Je ne suis pas un crac en programmation mais je me demande comment le webmaster peut effacer un message à partir de ce scipt là?
    Un message en double par exemple puisque un seul suffit? !!
    Merci de ma répondre

    Le choubidou

  • signaler à un administrateur
    Commentaire de coucou747 le 22/08/2004 17:55:09

    lol c'ets un livre d'or pas un forum...
    et il a juste a récupérer/mofifier/remplacer le fichier contenant les messages

  • signaler à un administrateur
    Commentaire de MadM@tt le 11/11/2004 13:56:27

    Excusez moi mais je débute totalement en php et j'aimerais savoir comment utiliser le fichier .php :
    avec quoi le lit-on, ou alors est ce qu'il faut appeler les fonctions à partir d'une page web html ?

Ajouter un commentaire

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS