par
captain caverne » 30 mai 2005, 20:09
bonjour Fab
Je ne crois pas avoir touché au code et c'est bien là ce qui m'interpelle car en lisant les commentaires de ceux qui ont testé le code de Damien tout parait effectivement fonctionner.
Le code que j'ai mis dans mon repertoire racine est le suivant
Code : Tout sélectionner
<!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" lang="fr" xml:lang="fr">
<head>
<title>Exemple d'utilisation des fichiers en PHP</title>
<link rel="stylesheet" type="text/css" media="all" href="exemples.css" />
</head>
<body>
<h1>Exemple d'utilisation des fichiers en PHP</h1>
<?
set_magic_quotes_runtime(0);
// nom du fichier
$fichier = '9_fichier.txt';
switch ($_POST['action'])
{
case "ecrire":
// on formate nos données
// voir le tutorial sur les fonctions, si besoin
// Raison : ne jamais faire confiance à des données transmises par un utilisateur
function formate_machaine($chaine)
{
// on supprime les \n et les |
$chaine = str_replace('\n', '', $chaine);
$chaine = str_replace('|', '', $chaine);
// on supprime les tags html et php
$chaine = strip_tags($chaine);
// on supprime les espaces superflus au début et à la fin
$chaine = trim($chaine);
// on coupe la chaine a 100 caracteres
$chaine = substr($chaine, 0, 100);
// renvoi nouvelle valeur
return $chaine;
}
$nom = formate_machaine($_POST['nom']);
$commentaire = formate_machaine($_POST['commentaire']);
if($nom != '' and $commentaire != '')
{
// on verifie taille du fichier
// si le fichier fait plus de 3Ko on le vide
if(filesize($fichier) > 3000) $mode = 'w'; else $mode = 'a';
$fp = fopen($fichier, $mode); // ouverture du fichier en écriture
fputs($fp, "$nom|$commentaire"); // on écrit le nom et email dans le fichier en les séparant par |
fputs($fp, "\n"); // on va a la ligne
fclose($fp);
echo '<p>Nom et email ajoutés !</p>';
echo '<p><a href="'.$_SERVER['PHP_SELF'].'">Retour</a></p>';
}
else
{
echo '<p>Erreur, veuillez remplir les deux champs !</p>';
echo '<p><a href="'.$_SERVER['PHP_SELF'].'">Retour</a></p>';
}
break;
default:
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" name="ecriture">
<input type="hidden" name="action" value="ecrire" />
<table summary="Ecriture dans le fichier">
<tr class="titre">
<td colspan="2">Ecriture dans le fichier</td>
</tr>
<tr>
<td>Nom</td>
<td>
<input type="text" name="nom" size="30" maxlength="30" />
</td>
</tr>
<tr>
<td>Petit commentaire</td>
<td>
<input type="text" name="commentaire" size="30" maxlength="100" />
</td>
</tr>
<tr>
<td> </td>
<td>
<input type="submit" name="envoyer" value="Et Hop!" />
</td>
</tr>
</table>
</form>
<table summary="Lecture du fichier">
<tr class="titre">
<td colspan="2">Lecture du fichier</td>
</tr>
<?
if(file_exists($fichier))
{
$fp = fopen($fichier, 'r'); // le fichier existe, on l'ouvre
while (!feof($fp)) // On parcours le fichier
{
$ligne = fgets($fp, 4096); // On se déplace d'une ligne
$liste = explode('|', $ligne); // Champs séparés par |
$nom = htmlentities($liste[0]); // Pour convertir les caractères en équivalent html
$commentaire = htmlentities($liste[1]);
if(get_magic_quotes_gpc())
{
$nom = stripslashes($nom); // fera l'objet d'un tutorial
$commentaire = stripslashes($commentaire);
}
if($nom != '' and $commentaire != '')
{
echo '<tr>';
echo '<td>' . $nom . '</td>';
echo '<td>' . $commentaire . '</td>';
echo '</tr>';
}
}
fclose($fp);
}
else{ // le fichier n'existe pas
echo '<p>Fichier introuvable ! Lecture stoppée.</p>';
}
?>
</table>
<?
break;
}
?>
</body>
</html>
Si tu as une idée...
[b]bonjour Fab[/b]
Je ne crois pas avoir touché au code et c'est bien là ce qui m'interpelle car en lisant les commentaires de ceux qui ont testé le code de Damien tout parait effectivement fonctionner.
Le code que j'ai mis dans mon repertoire racine est le suivant
[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" lang="fr" xml:lang="fr">
<head>
<title>Exemple d'utilisation des fichiers en PHP</title>
<link rel="stylesheet" type="text/css" media="all" href="exemples.css" />
</head>
<body>
<h1>Exemple d'utilisation des fichiers en PHP</h1>
<?
set_magic_quotes_runtime(0);
// nom du fichier
$fichier = '9_fichier.txt';
switch ($_POST['action'])
{
case "ecrire":
// on formate nos données
// voir le tutorial sur les fonctions, si besoin
// Raison : ne jamais faire confiance à des données transmises par un utilisateur
function formate_machaine($chaine)
{
// on supprime les \n et les |
$chaine = str_replace('\n', '', $chaine);
$chaine = str_replace('|', '', $chaine);
// on supprime les tags html et php
$chaine = strip_tags($chaine);
// on supprime les espaces superflus au début et à la fin
$chaine = trim($chaine);
// on coupe la chaine a 100 caracteres
$chaine = substr($chaine, 0, 100);
// renvoi nouvelle valeur
return $chaine;
}
$nom = formate_machaine($_POST['nom']);
$commentaire = formate_machaine($_POST['commentaire']);
if($nom != '' and $commentaire != '')
{
// on verifie taille du fichier
// si le fichier fait plus de 3Ko on le vide
if(filesize($fichier) > 3000) $mode = 'w'; else $mode = 'a';
$fp = fopen($fichier, $mode); // ouverture du fichier en écriture
fputs($fp, "$nom|$commentaire"); // on écrit le nom et email dans le fichier en les séparant par |
fputs($fp, "\n"); // on va a la ligne
fclose($fp);
echo '<p>Nom et email ajoutés !</p>';
echo '<p><a href="'.$_SERVER['PHP_SELF'].'">Retour</a></p>';
}
else
{
echo '<p>Erreur, veuillez remplir les deux champs !</p>';
echo '<p><a href="'.$_SERVER['PHP_SELF'].'">Retour</a></p>';
}
break;
default:
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" name="ecriture">
<input type="hidden" name="action" value="ecrire" />
<table summary="Ecriture dans le fichier">
<tr class="titre">
<td colspan="2">Ecriture dans le fichier</td>
</tr>
<tr>
<td>Nom</td>
<td>
<input type="text" name="nom" size="30" maxlength="30" />
</td>
</tr>
<tr>
<td>Petit commentaire</td>
<td>
<input type="text" name="commentaire" size="30" maxlength="100" />
</td>
</tr>
<tr>
<td> </td>
<td>
<input type="submit" name="envoyer" value="Et Hop!" />
</td>
</tr>
</table>
</form>
<table summary="Lecture du fichier">
<tr class="titre">
<td colspan="2">Lecture du fichier</td>
</tr>
<?
if(file_exists($fichier))
{
$fp = fopen($fichier, 'r'); // le fichier existe, on l'ouvre
while (!feof($fp)) // On parcours le fichier
{
$ligne = fgets($fp, 4096); // On se déplace d'une ligne
$liste = explode('|', $ligne); // Champs séparés par |
$nom = htmlentities($liste[0]); // Pour convertir les caractères en équivalent html
$commentaire = htmlentities($liste[1]);
if(get_magic_quotes_gpc())
{
$nom = stripslashes($nom); // fera l'objet d'un tutorial
$commentaire = stripslashes($commentaire);
}
if($nom != '' and $commentaire != '')
{
echo '<tr>';
echo '<td>' . $nom . '</td>';
echo '<td>' . $commentaire . '</td>';
echo '</tr>';
}
}
fclose($fp);
}
else{ // le fichier n'existe pas
echo '<p>Fichier introuvable ! Lecture stoppée.</p>';
}
?>
</table>
<?
break;
}
?>
</body>
</html>[/code]
Si tu as une idée...