begin process at 2012 02 15 04:39:12
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > LIVRE D'OR

LIVRE D'OR


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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é :5 707 / 486

Auteur : familypm

Ecrire un message privé
Site perso
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.

 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

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);

 Sources du même auteur

Source avec Zip Source avec une capture PHORTAIL V 2.0
Source avec Zip TAG-BOARD

 Sources de la même categorie

Source avec Zip COMPTEUR DE CLIQUE PHP AVEC JQUERY par devgoneti
Source avec Zip LIVRE D'OR SIMPLE (POUR DÉBUTANT) par devgoneti
Source avec Zip SCRIPT TRAVAUX POUR VOTRE SITE par FleuryK
Source avec Zip Source avec une capture EL COYOTOS LIVRE D'OR PHP 5 par elcoyotos
COMPTEUR DE VISITE - FICHIER TXT - CODE MINIMAL par SuperChouquette

Commentaires et avis

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

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.

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...)

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

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.

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 !)

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.

Commentaire de GRenard le 18/07/2004 06:39:28

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

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.

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 :)

Commentaire de coucou747 le 19/07/2004 10:24:18 administrateur CS

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...

Commentaire de familypm le 19/07/2004 13:37:56

Bien vu !

C'est rectifié.

Merci beaucoup

Commentaire de coucou747 le 23/07/2004 15:09:48 administrateur CS

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

Commentaire de coucou747 le 23/07/2004 15:14:12 administrateur CS

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

Commentaire de coucou747 le 23/07/2004 15:14:25 administrateur CS

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

Commentaire de coucou747 le 23/07/2004 15:14:39 administrateur CS

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

Commentaire de coucou747 le 23/07/2004 18:45:43 administrateur CS

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

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.

Commentaire de coucou747 le 26/07/2004 10:57:22 administrateur CS

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

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

Commentaire de coucou747 le 22/08/2004 17:55:09 administrateur CS

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

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




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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,061 sec (4)

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