IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

copier mon livre d'or dans une autre page en rajoutant une information [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    Par défaut copier mon livre d'or dans une autre page en rajoutant une information
    Bonjour à toutes et à tous,

    Voici mon problème du jour.

    J'ai un livre d'or sans base MySQL qui écrit les messages dans un fichier txt
    après moult corrections ça fonctionne bien.
    J'aurais besoin de dupliquer en live les données sur une autre page pour y rajouter une donnée, l'ip du visiteur et du fait je ne veux pas qu'elle soit visible à tous les autres visiteurs du site.
    j'ai trois fichiers un writeguest.php, guestbook.php et un guestbook.txt

    voici les codes des deux fichiers :

    writeguest.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <head>
     
    <meta name="description" CONTENT="">
    <meta HTTP-EQUIV="IMAGETOOLBAR" content="no" SCROLLING="yes" >
    <meta name="keywords" CONTENT="">
    <head>
     
      <title></title>
     
    </head>
    <body>
     
     
    <?php
     
    //Ouverture du fichier en écriture
     
    $fp = fopen("/htdocs/livredor/guestbook.txt",a);
     
    //On convertit les caracteres html
     
    echo htmlspecialchars_decode(htmlentities($chaine, ENT_NOQUOTES, 'ISO-8859-1'));
     
    $nom = htmlspecialchars(stripslashes($_POST['nom']));
     
    $mail = htmlspecialchars(stripslashes($_POST['mail']));
     
    $message = htmlspecialchars(stripslashes($_POST['message']));
     
    $ipvisiteur = $_SERVER["REMOTE_ADDR"];
    $d = date ( "d/m/Y H:i:s" );
     
    function censorWords($find=array(),$text=null){
    $replace = ' **** ';
    return preg_replace($find,$replace,$text);
    }
     
    /*liste des mots a filtrer ou expression aussi longue que tu veux*/
    $file = 'guestbook.txt';
    $find = array(
    '/censuré\s/i',
    '/censuré\s/i',
    '/censuré\s/i',
    '/censuré\s/i',
    '/censuré\s/i',
    '/censuré\s/i',
    '/censuré\s/i',
    );
    $newmail = censorWords($find,$mail);
    $newnom = censorWords($find,$nom);
    $newmessage = censorWords($find,$message);
    $page = "";
    $page .= "&nbsp;<b>$newnom</b> &nbsp; $newmail<br> &nbsp;le:&nbsp; $d<br>&nbsp;$newmessage<br><hr>\n";
    //On rajoute le message
    fwrite($fp,"$page" ,strlen("$page"));
    //fermeture du fichier
     
    fclose($fp);
     
    ?>
     
    <?php include("guestbook.php"); ?>
    </body>
    </html>
    et le code guestbook.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    <!DOCTYPE html>
     
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <meta name="description" CONTENT="">
    <meta HTTP-EQUIV="IMAGETOOLBAR" content="no" SCROLLING="yes" >
    <meta name="keywords" CONTENT="">
    <head>
    <title>Livre d'or</title>
     
    <style type="text/css">
    	body { 
    		background: #000000; 
    		color: #000000;
    		font-family: Verdana ;
    	color:white;
    font-size:14px;
        }
     
    </style> 
    <style type="text/css">
    div.grande 
        { 
     
        width : 70%; 
        } 
    p{
      line-height:25px;
    }
     
    </style>
     
    </head>
    <body>
    <form method=post action=writeguest.php 
    onSubmit='if ( this.nom.value.length < 2 ) { return false ;}' >
      <BR><p align="center"><FONT FACE="gabriola" size="9" color="white">titre</FONT></BR><FONT FACE="gabriola" size="6" color="white">Livre d'or </FONT></p></FONT>	
     
    <table border="0" align="center"> 
    <tr><td><img src="test.jpg"></td><td>
     <Div>
    <table>
    <tr><td><FONT FACE="monotype corsiva" size="4" color="white">Nom :</FONT></td>
        <td><input type=text name=nom size=25 ></td></tr>
    <tr><td><FONT FACE="monotype corsiva" size="4" color="white">Mail :</FONT></td>
        <td><input type=text name=mail size=25 ></td></tr>
    <tr><td><FONT FACE="monotupe corsiva" size="4" color="white">Message:</FONT></td><td colspan=1>
            <textarea name=message rows=6 cols=47></textarea>
        </td></tr>
    </table>
    </Div>
     
    </td><td><img src="livre.jpg"></td></td></tr></table>
     
     
    <div style="text-align:center;"><INPUT border=0 src="envoyer.jpg" type=image name="sub" value="Envoyer" /></div>
    </form>
    <div style="text-align:center;"><a href="http://fils-de-saone.fr/index.htm"onMouseOver="window.status='';return true"><img src="bfermer.jpg"  BORDER="0" alt=""/></a></div>
     
    <div align="center" ><div class="grande" style="border:3px solid #000000; padding 1px;"><div style="text-align:left;"><FONT FACE="gabriola" size="6" color="white"  >Vos impressions, commentaires:</FONT></div></div>
    <div align="center" >
    <div class="grande" style="border:3px solid #FFFFFF; padding 3px;"><div style="text-align:left;">
     <?php include("guestbook.txt"); ?></div></div>
     
     
     
    </BR>
    <div style="text-align:center;"><a href="http://test.htm"onMouseOver="window.status='';return true"><img src="bfermer.jpg"  BORDER="0" alt=""/></a></div>
    <div style="text-align:center"><FONT face="gabriola" size="3"color="#FFFFF"><P> Tous drois reserv&eacute;s - All rights reserved, reproduction interdite</font>
    </body>
    </html>
    J'aurais donc besoin de récupérer la variable $ipvisiteur; dans la page copie en l'incérant comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $page .= "&nbsp;<b>$newnom</b> &nbsp; $newmail<br> &nbsp;le:&nbsp;$d:&nbsp;Ip:$ipvisiteur<br>&nbsp;$newmessage<br><hr>\n";?>
    J'ai donc pensé créer trois nouveaux fichiers guestbook2.php, writeguest2.php et guestbook2.txt en y ajoutant une session start ( dans les deux pages bien sur ) comme ceci
    dans les deux pages.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php 
    session_start(); 
    $_SESSION['mail'] = $newmail; 
    $_SESSION['nom'] = $newnom;
    $_SESSION['message'] = $newmessage;
    $_SESSION['ipvisiteur'] = $ipvisiteur;
    ?>
    <!DOCTYPE html>
    <head>
    Evidement ça ne fonctionne pas, quelqu'un peut-il m'explique peut être une méthode plus simple ou m'aider à réaliser cela en partant de cette idée de méthode ?
    Par avance merci à tous

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    seul le code d'affichage change. Les données du fichier texte non.

    writeguest.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $page .= "&nbsp;<b>$newnom</b> &nbsp; $newmail<br> &nbsp;le:&nbsp; $d<br>&nbsp;$newmessage<br><hr>\n";
    writeguest2.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $page .= "&nbsp;<b>$newnom</b> &nbsp; $newmail<br> &nbsp;le:&nbsp;$d:&nbsp;Ip:$ipvisiteur<br>&nbsp;$newmessage<br><hr>\n";
    C'est (presque) tout ce qu'il faut modifier.
    Il faut aussi changer les noms des fichiers (+ DANS le code aussi !) :
    • writeguest.php -> writeguest-ip.php
    • guestbook.php -> guestbook-ip.php
    Dernière modification par Invité ; 28/08/2013 à 13h13.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    Par défaut
    Bonjour Jreaux62, oui tout à fait mais dans une page ipguest.php par exemple

  4. #4
    Invité
    Invité(e)
    Par défaut
    1/ guestbook-ip.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    <!DOCTYPE html>
     
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <meta name="description" CONTENT="">
    <meta HTTP-EQUIV="IMAGETOOLBAR" content="no" SCROLLING="yes" >
    <meta name="keywords" CONTENT="">
    <head>
    <title>Livre d'or</title>
     
    <style type="text/css">
    	body { 
    		background: #000000; 
    		color: #000000;
    		font-family: Verdana ;
    	color:white;
    font-size:14px;
        }
     
    </style> 
    <style type="text/css">
    div.grande 
        { 
     
        width : 70%; 
        } 
    p{
      line-height:25px;
    }
     
    </style>
     
    </head>
    <body>
    <form method="post" action="writeguest-ip.php" 
    onSubmit='if ( this.nom.value.length < 2 ) { return false ;}' >
      <BR><p align="center"><FONT FACE="gabriola" size="9" color="white">titre</FONT></BR><FONT FACE="gabriola" size="6" color="white">Livre d'or </FONT></p></FONT>	
     
    <table border="0" align="center"> 
    <tr><td><img src="test.jpg"></td><td>
     <Div>
    <table>
    <tr><td><FONT FACE="monotype corsiva" size="4" color="white">Nom :</FONT></td>
        <td><input type=text name=nom size=25 ></td></tr>
    <tr><td><FONT FACE="monotype corsiva" size="4" color="white">Mail :</FONT></td>
        <td><input type=text name=mail size=25 ></td></tr>
    <tr><td><FONT FACE="monotupe corsiva" size="4" color="white">Message:</FONT></td><td colspan=1>
            <textarea name=message rows=6 cols=47></textarea>
        </td></tr>
    </table>
    </Div>
     
    </td><td><img src="livre.jpg"></td></td></tr></table>
     
     
    <div style="text-align:center;"><INPUT border=0 src="envoyer.jpg" type=image name="sub" value="Envoyer" /></div>
    </form>
    <div style="text-align:center;"><a href="http://fils-de-saone.fr/index.htm"onMouseOver="window.status='';return true"><img src="bfermer.jpg"  BORDER="0" alt=""/></a></div>
     
    <div align="center" ><div class="grande" style="border:3px solid #000000; padding 1px;"><div style="text-align:left;"><FONT FACE="gabriola" size="6" color="white"  >Vos impressions, commentaires:</FONT></div></div>
    <div align="center" >
    <div class="grande" style="border:3px solid #FFFFFF; padding 3px;"><div style="text-align:left;">
     <?php include("guestbook.txt"); ?></div></div>
     
     
     
    </BR>
    <div style="text-align:center;"><a href="http://test.htm"onMouseOver="window.status='';return true"><img src="bfermer.jpg"  BORDER="0" alt=""/></a></div>
    <div style="text-align:center"><FONT face="gabriola" size="3"color="#FFFFF"><P> Tous drois reserv&eacute;s - All rights reserved, reproduction interdite</font>
    </body>
    </html>
    1 ligne modifiée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form method="post" action="writeguest-ip.php"
    2/ writeguest-ip.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <head>
     
    <meta name="description" CONTENT="">
    <meta HTTP-EQUIV="IMAGETOOLBAR" content="no" SCROLLING="yes" >
    <meta name="keywords" CONTENT="">
    <head>
     
      <title></title>
     
    </head>
    <body>
     
     
    <?php
     
    //Ouverture du fichier en écriture
     
    $fp = fopen("/htdocs/livredor/guestbook.txt",a);
     
    //On convertit les caracteres html
     
    echo htmlspecialchars_decode(htmlentities($chaine, ENT_NOQUOTES, 'ISO-8859-1'));
     
    $nom = htmlspecialchars(stripslashes($_POST['nom']));
     
    $mail = htmlspecialchars(stripslashes($_POST['mail']));
     
    $message = htmlspecialchars(stripslashes($_POST['message']));
     
    $ipvisiteur = $_SERVER["REMOTE_ADDR"];
    $d = date ( "d/m/Y H:i:s" );
     
    function censorWords($find=array(),$text=null){
    $replace = ' **** ';
    return preg_replace($find,$replace,$text);
    }
     
    /*liste des mots a filtrer ou expression aussi longue que tu veux*/
    $file = 'guestbook.txt';
    $find = array(
    '/censuré\s/i',
    '/censuré\s/i',
    '/censuré\s/i',
    '/censuré\s/i',
    '/censuré\s/i',
    '/censuré\s/i',
    '/censuré\s/i',
    );
    $newmail = censorWords($find,$mail);
    $newnom = censorWords($find,$nom);
    $newmessage = censorWords($find,$message);
    $page = "";
    $page .= "&nbsp;<b>$newnom</b> &nbsp; $newmail<br> &nbsp;le:&nbsp;$d:&nbsp;Ip:$ipvisiteur<br>&nbsp;$newmessage<br><hr>\n";
    //On rajoute le message
    fwrite($fp,"$page" ,strlen("$page"));
    //fermeture du fichier
     
    fclose($fp);
     
    ?>
     
    <?php include("guestbook-ip.php"); ?>
    </body>
    </html>
    2 lignes modifiées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $page .= "&nbsp;<b>$newnom</b> &nbsp; $newmail<br> &nbsp;le:&nbsp;$d:&nbsp;Ip:$ipvisiteur<br>&nbsp;$newmessage<br><hr>\n";
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php include("guestbook-ip.php"); ?>
    Dernière modification par Invité ; 28/08/2013 à 13h11.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    Par défaut
    Je te remercie infiniment je suis de garde jusqu'à demain soir mais dès que je rentre je test et je reviens vers toi pour te rendre compte de mon avancé
    Encore merci à toi, bonne soirée

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    Par défaut
    Bonjour,
    En relisant la dernière réponse, je me dit comment avoir l'ip supplémentaire dans guets book-ip sans l'afficher dans guets book.php si l'on utilise la même source de stockage guets book.txt ?

  7. #7
    Invité
    Invité(e)
    Par défaut
    Comme tu l'as dit : à l'affichage !

    C'est ce qui est affiché qui est... visible !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ipvisiteur = $_SERVER["REMOTE_ADDR"];
    Pour l'afficher, et donc le rendre visible :
    Tant que tu n'as pas utilisé echo, l'IP n'est pas visible, car pas écrite dans le code html vu par l'internaute.

    Est-ce clair ?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    Par défaut
    Si j'ai bien compris, le fichier txt serra incrémenté pour chaques requetes de deux lignes, l'une sans adresse ip et l'autre avec cette dernière ?
    Et chaque fichier php afficheront la ligne concernée ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    Il suffit de tester, non ?

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    Par défaut
    Bonjour,
    Après des tests il s'avère que je retombe sur ce que j'avais fait à une variante près, à savoir que j'ai donc deux fois le poste d’incrémenté dans les deux pages.
    Soit le post dans guestbook.php et dans guestbook-ip.php sous la forme une fois sans ip et juste en dessous avec ip.
    Ce que je voudrais obtenir c'est une écriture simultané du message posté à partir de writeguest.php avec le message sans ip dans guestbook.php et uniquement le message dans guestbook-ip.php avec ip.
    Je te remercie de ton aide et te souhaite une exelente journée

  11. #11
    Invité
    Invité(e)
    Par défaut
    oups ! compris !
    je n'ai pas pris le temps de lire et comprendre le code.
    je pensais qu'il s'agissait juste d'afficher "à l'écran" !
    oublie tout ce que j'ai écrit...

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    Par défaut
    Ne t'excuses pas,
    c'est déjà bien gentil de ta part de prendre de ton temps pour m'aider.
    Je rencontre un problème de mise en forme, car mon raisonnement sur cette action serait de récupérer les variables après traitement dans la page writeguest.php ( d'où après recherches cette mise en place d'un code de récupération des dites variables )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php 
    session_start(); 
    $_SESSION['mail'] = $newmail; 
    $_SESSION['nom'] = $newnom;
    $_SESSION['message'] = $newmessage;
    $_SESSION['ipvisiteur'] = $ipvisiteur;
    ?>
    <!DOCTYPE html>
    <head>
    dans une page ip.php et retraité de façon analogue l'inscrire dans un nouveau fichier ip.txt et afficher le résultat dans une page par exemple page-ip.php.
    Il y a peut être plus simple ou éventuellement j'ai tout faux au niveau du choix de la méthode.
    Au plaisir de te lire

  13. #13
    Invité
    Invité(e)
    Par défaut
    Voilà ce qui m'a abusé (ou pas ?) :
    Citation Envoyé par scoubi77 Voir le message
    J'aurais besoin de dupliquer en live les données sur une autre page pour y rajouter une donnée, l'ip du visiteur
    OK.
    et du fait je ne veux pas qu'elle soit visible à tous les autres visiteurs du site.
    Bon.
    Je ne vois pas le problème d'enregistrer l'IP dans une seul et unique fichier texte !?!

    Puisqu'après, A L'AFFICHAGE, tu "montres" au visiteur ce que TU décides de lui montrer !
    Tu n'as PAS BESOIN d'un nouveau fichier ip.txt !

    [EDIT] Ah la vache, SI !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php include("guestbook.txt"); ?>

  14. #14
    Invité
    Invité(e)
    Par défaut
    En fait, c'est simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    <?php
    // ---------------------
    // 1/ RECUPERATION des DONNEES
    //On convertit les caracteres html
    echo htmlspecialchars_decode(htmlentities($chaine, ENT_NOQUOTES, 'ISO-8859-1'));
    $nom = htmlspecialchars(stripslashes($_POST['nom']));
    $mail = htmlspecialchars(stripslashes($_POST['mail']));
    $message = htmlspecialchars(stripslashes($_POST['message']));
    $ipvisiteur = $_SERVER["REMOTE_ADDR"];
    $d = date ( "d/m/Y H:i:s" );
    // ---------------------
    // 2/ CENSURE
    function censorWords($find=array(),$text=null){
    	$replace = ' **** ';
    	return preg_replace($find,$replace,$text);
    }
    /*liste des mots a filtrer ou expression aussi longue que tu veux*/
    $find = array(
    '/censuré\s/i',
    '/censuré\s/i',
    '/censuré\s/i',
    '/censuré\s/i',
    '/censuré\s/i',
    '/censuré\s/i',
    '/censuré\s/i',
    );
    $newmail = censorWords($find,$mail);
    $newnom = censorWords($find,$nom);
    $newmessage = censorWords($find,$message);
    // ---------------------
    // 3/ GESTBOOK - SANS IP
    //Ouverture du fichier en écriture
    $file = 'guestbook.txt';
    $fp = fopen("/htdocs/livredor/".$file,a);
    $page = "";
    $page .= "&nbsp;<b>$newnom</b> &nbsp; $newmail<br> &nbsp;le:&nbsp; $d<br>&nbsp;$newmessage<br><hr>\n";
    //On rajoute le message
    fwrite($fp,"$page" ,strlen("$page"));
    //fermeture du fichier
    fclose($fp);
    // ---------------------
    // 3/ GESTBOOK - AVEC IP
    //Ouverture du fichier en écriture
    $file = 'guestbook-ip.txt';
    $fp = fopen("/htdocs/livredor/".$file,a);
    $page = "";
    $page .= "&nbsp;<b>$newnom</b> &nbsp; $newmail<br> &nbsp;le:&nbsp;$d:&nbsp;Ip:$ipvisiteur<br>&nbsp;$newmessage<br><hr>\n";
    //On rajoute le message
    fwrite($fp,"$page" ,strlen("$page"));
    //fermeture du fichier
    fclose($fp);
    // ---------------------
    ?>

  15. #15
    Invité
    Invité(e)
    Par défaut
    Non, en fait, ce n'est pas si simple...
    Là, on crée 2 fichiers :
    • un sans aucun IP,
    • l'autre avec TOUS les IP.

    Ce qui n'est pas ce que tu veux montrer.

    LE problème vient de la gestion des fichiers texte et de leur mode d'affichage.
    Normalement, on ne s'y prend pas comme ça (avec juste un include du fichier texte).

    La méthode habituelle est :
    1/ A l'enregistrement :
    • on enregistre dans le fichier texte, sur chaque ligne : xxxx;yyyy;wwww;.........

    2/ A l'affichage :
    • lecture du fichier, ligne par ligne
    • on "explode" la ligne, pour récupérer un array des élements : xxxx yyyy wwww ..... ....
    • construction dynamique de l'affichage : on affiche ce qu'on veut (ip, pas ip,...) avec ajout des balises html.
    Alors, il devient simple de n'afficher l'IP QUE du visiteur, en masquant celles des autres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if($ipvisiteur == $_SERVER["REMOTE_ADDR"]){
       on affiche l'ip
    } else {
       on n'affiche pas l'ip
    }
    => FAQ PHP : Fichiers et dossiers
    => lecture ligne par ligne : file()
    Dernière modification par Invité ; 30/08/2013 à 09h56.

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    Par défaut
    Je te remercie,
    je vais tester cela ce soir en rajoutant donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // 3/ GESTBOOK - AVEC IP
    //Ouverture du fichier en écriture
    $file = 'guestbook-ip.txt';
    $fp = fopen("/htdocs/livredor/".$file,a);
    $page = "";
    $page .= "&nbsp;<b>$newnom</b> &nbsp; $newmail<br> &nbsp;le:&nbsp;$d:&nbsp;Ip:$ipvisiteur<br>&nbsp;$newmessage<br><hr>\n";
    //On rajoute le message
    fwrite($fp,"$page" ,strlen("$page"));
    //fermeture du fichier
    fclose($fp);
    Je te présente mes excuses, je me suis certainement mal exprimé

  17. #17
    Invité
    Invité(e)
    Par défaut
    NON.
    Lis mon message précédent.

    Il faut que tu changes de méthode.

    [EDIT] Tiens ? Je viens de retrouver d'où tu as sorti "ta" méthode... Elle date au moins de... 2010 !
    Dernière modification par Invité ; 30/08/2013 à 09h49.

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    Par défaut
    Très franchement je n'ai pas récupéré cette idée dans le post du lien que tu me propose, mais uniquement d'une réflexion personnelle au problème que je rencontre, je vais essayer de digérer tout cela.
    Le but est très simple en fait, pour des raisons de protection de la vie privée je ne veux pas afficher l'iP des visteurs.
    Mais en cas de problème avec un visiteur du livre d'or je veux être en mesure de pouvoir avoir une traçabilité éventuelle. Cette page n'auras aucun lien depuis le site, uniquement accessible depuis une url, c'est pour cela que je voudrais un copier/coller avec le rajout des ips
    Comprends tu mieux mon objectif ?
    Je vais quand même essayer d'envoyer un avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    // 3/ GESTBOOK - AVEC IP
    //Ouverture du fichier en écriture
    $file = 'guestbook-ip.txt';
    $fp = fopen("/htdocs/livredor/".$file,a);
    $page = "";
    $page .= "&nbsp;<b>$newnom</b> &nbsp; $newmail<br> &nbsp;le:&nbsp;$d:&nbsp;Ip:$ipvisiteur<br>&nbsp;$newmessage<br><hr>\n";
    //On rajoute le message
    fwrite($fp,"$page" ,strlen("$page"));
    //fermeture du fichier
    fclose($fp);
    en créant donc un autre fichier txt qui va récupérer l'info avec ip et reprendre l'affichage en le gérant avec writeguest-ip.php et gestbook-ip.php car enfait mon problème réside dans la récupération des champs, je test ce soir

    Merci pour tout

  19. #19
    Invité
    Invité(e)
    Par défaut
    Re.
    On va dire que j'avais du temps à perdre...

    Le fichier texte : livredor.txt

    Le fichier PHP (UNIQUE !) : livredor.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    <?php session_start();
    // ---------------------
    // GUESTBOOK
    	//$file 	= '/htdocs/livredor/livredor.txt';
    	$file		= 'livredor.txt';
    	$delimit 	= '-*-'; // délimiteur
    // ---------------------
    // si le fichier n'existe pas, on le crée.
    	if(!file_exists($file)){
    		$fp = fopen($file,'w+'); // Le "w+" créer le fichier si il n'existe pas
    	}
    // ---------------------
    // IP du visiteur
    	$ipvisiteur = $_SERVER["REMOTE_ADDR"];
    // ---------------------
    // Format d'affichage de la date (au choix)
    	//$date		= date ( "d/m/Y H:i:s" ); // avec les heures:minutes:secondes
    	$date		= date ( "d/m/Y à H:i" );
    	//$date		= date ( "d/m/Y" );
    // ---------------------
    // Initialisation
    	$nom		= '';
    	$message	= '';
    	$mail		= '';
    	$validForm	= true;
    	$MsgErreur	= '';
    // ---------------------
    // TRAITEMENT SI formulaire soumis
    if(isset($_POST['LivredorSubmit'], $_POST['antiF5'], $_SESSION['antiF5']) && $_POST['antiF5']==$_SESSION['antiF5'])
    {
    	// ---------------------
    	// RECUPERATION des DONNEES
    	//On convertit les caracteres html
    	$nom 		= (isset($_POST['nom']))?		htmlspecialchars(stripslashes(trim($_POST['nom']))) : '';
    	$mail 		= (isset($_POST['mail']))?		htmlspecialchars(stripslashes(trim($_POST['mail']))) : '';
    	// textarea : attention aux injections de code html !
    	$allowable_tags = '<a><b><em><ul><li>'; // (facultatif) on autorise ces balises (voir : http://php.net/manual/fr/function.strip-tags.php )
    	$message 	= (isset($_POST['message']))?	htmlspecialchars(stripslashes(trim(strip_tags($_POST['message'], $allowable_tags)))) : '';
    	$message 	= nl2br($message); // nl2br() : change les sauts de ligne tapés par le visiteur en <br />
    	// on enlève les sauts de ligne résiduels, pour l'écriture dans le fichier (sur une seule ligne)
    	$message 	= preg_replace("/(\r\n|\n|\r)/", " ", $message);
    	// ---------------------
    	// 2EME VERIFICATION : en PHP
    	// GESTION d'ERREURS
    	// -----------------------
    	// CENSURE
    	function censorWords($text){
    		/*liste des mots a filtrer ou expression aussi longue que tu veux*/
    		$find = array(
    		'/caca\s/i',
    		'/pipi\s/i',
    		'/prout\s/i',
    		'/censuré\s/i',
    		'/censuré\s/i',
    		'/censuré\s/i',
    		'/censuré\s/i',
    		);
    		$replace = ' **** ';
    		return preg_replace($find,$replace,$text);
    	}
    	// On censure
    	$newnom 	= censorWords($nom);
    	$newmessage = censorWords($message);
    	$newmail 	= censorWords($mail);
    	$champ_censure = array();
    	if ($nom!=$newnom) {			$champ_censure[] = 'Nom'; }
    	if ($message!=$newmessage) {	$champ_censure[] = 'Message'; }
    	if ($mail!=$newmail) {			$champ_censure[] = 'Email'; }
    	if(count($champ_censure)>0) {
    		$MsgErreur 	.= 'Ces champs ont été censurés : '.implode(', ',$champ_censure).'<br />';
    	}
    	// champs obligatoires
    	$champ_obligatoire = array();
    	if ($nom=='' || $newnom=='') {			$validForm = false;		$champ_obligatoire[] = 'Nom'; }
    	if ($message=='' || $newmessage=='') {	$validForm = false;		$champ_obligatoire[] = 'Message'; }
    	if(count($champ_obligatoire)>0) {
    		$MsgErreur 	.= 'Remplissez tous les champs obligatoires : '.implode(', ',$champ_obligatoire).'<br />';
    	}
    	// -----------------------
    	// Vérification du format de l'Email
    	if($mail!='' && !filter_var($mail, FILTER_VALIDATE_EMAIL)){
    		$validForm 	= false;
    		$MsgErreur 	.= 'Invalide Email !<br />';
    	}
    	// -----------------------
    	// OK SI PAS D'ERREUR
    	if($validForm === true)
    	{
    		// ---------------------
    		if($newnom!='' && $newmessage!='')
    		{
    			// ECRITURE dans le GESTBOOK
    			// ---------------------
    			//Ouverture du fichier en écriture
    			$fp 	= fopen($file,'a'); // 'a' : à la fin du fichier
    			$line 	= $newnom.$delimit.$newmessage.$delimit.$newmail.$delimit.$date.$delimit.$ipvisiteur."\n";
    			//On rajoute le message
    			fwrite($fp, $line, strlen($line));
    			//fermeture du fichier
    			fclose($fp);
    			// ---------------------
    		}
    		// ---------------------
    		// On vide
    		$nom 		= '';
    		$message 	= '';
    		$mail 		= '';
    	}
    }
    // ---------------------
    unset($_POST);
    // anti-F5 (évite de re-poster le formulaire en cas de F5 ("Actualiser la page")
    $_SESSION['antiF5'] = rand(100000,999999);
    // ------------------------------------------
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Livre d'Or</title>
     
    <style type="text/css">
    body {
    	background:#000000;
    	color:#000000;
    	font-family:Verdana ;
    	color:white;
    	font-size:14px;
    }
    div.grande {
    	width:70%; margin:20px auto; text-align:left;
    	border:3px solid #000000; padding:1px;
    }
    div.grande h1, div.grande h2 { margin:20px auto; text-align:center; }
    /* Formulaire */
    form#livredorform { margin:0px auto; }
    form#livredorform label { display:inline-block; min-width:25%; text-align:right; margin-right:10px; }
    form#livredorform p { line-height:25px; }
    form#livredorform p.errChamps { color:red; }
    /* Affichage */
    .livredor-nom { float:left; }
    .livredor-date {float:right }
    .livredor-message { margin:5px 30px;clear:both; }
    </style>
    <script type="text/javascript">
    // 1ERE VERIFICATION : en JavaScript
    function validLivredor(){
    	var error1 			= '';
    	var error2 			= '';
    	var setfocus 		= 0;
    	var idnom 			= document.getElementById('idnom');		// obligatoire
    	var idmessage 		= document.getElementById('idmessage');	// obligatoire
    	var idmail 			= document.getElementById('idmail');	// PAS obligatoire
     
    	// Vérification des champs obligatoires
    	if(idnom.value == '' || idnom.value.length < 2) {
    		error1 += '- Nom ou Pseudo\n';
    		if(setfocus == 0) { idnom.focus();  }
    		setfocus += 1;
    	}
    	if(idmessage.value=='') {
    		error1 += '- Message\n';
    		if(setfocus == 0) { idmessage.focus();  }
    		setfocus += 1;
    	}
    	// Vérification de l'email
    	if(idmail.value!='' && !isEmail( idmail.value )) {
    		error2 += '- Email invalide\n';
    		if(setfocus == 0) { idmail.focus();  }
    		setfocus += 1;
    	}
    	// erreur ?
    	if(error1!='' || error2!='') {
    		var msgerror = '';
    		if(error1!='') {
    			if(setfocus==1) { msgerror += 'Merci de remplir le champ obligatoire :\n'+error1; }
    			else { msgerror += 'Merci de remplir les champs obligatoires :\n'+error1; }
    		}
    		if(error2!='') {
    			msgerror += '\nErreur :\n'+error2;
    		}
    		alert(msgerror);
    		return false;
    	}
    	else {
    		document.submit();
    	}
    };
    // vérification EMAIL
    function isEmail( Email )
    {
    	var reg_mail 	= /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,5}$/
    	if( reg_mail.exec(Email)!=null )
    	{ return true; } else { return false; }
    };
    </script>
    </head>
    <body>
     
    <div class="grande">
    	<h1>Livre d'Or</h1>
     
    	<form id="livredorform" method="post" action="livredor.php" onsubmit="validLivredor(); return false;">
    			<input type="hidden" name="antiF5" value="<?php echo $_SESSION['antiF5']; ?>" />
    		<p>
    			<label for="idnom">Nom/Pseudo* :</label>
    			<input id="idnom" type="text" name="nom" value="<?php if(!$validForm) echo $nom; ?>" size="25" />
    		</p>
    		<p>
    			<label for="idmessage">Message* :</label>
    			<textarea id="idmessage" name="message" rows="5" cols="47"><?php if(!$validForm) echo $message; ?></textarea>
    		</p>
    		<p>
    			<label for="idmail">Mail :</label>
    			<input id="idmail" type="text" name="mail" value="<?php if(!$validForm) echo $mail; ?>" size="25" /> <i>(facultatif)</i>
    		</p>
    		<p>
    			<label>&nbsp;</label>
    			<input type="submit" name="LivredorSubmit" value="Envoyer" />
    		</p>
    	<?php if(!empty($MsgErreur)) { // erreur ? ?>
    		<p class="errChamps"><label>&nbsp;</label><?php echo $MsgErreur; ?></p>
    	<?php } ?>
    	</form>
     
    	<h2>Vos impressions, commentaires:</h2>
    <?php 
    // ---------------------
    // Affichage des commentaires du livre d'Or
    // ---------------------
    // LECTURE DU FICHIER TEXTE
    $lines = file($file);
    // FACULTATIF : reverse pour ordre ANTI-CHRONOLOGIQUE
    $lines = array_reverse($lines);
    // lecture ligne par ligne
    foreach($lines as $line) {
    	$line	= trim($line);
    	if(strlen($line)>0){
    		$vars	= explode($delimit,$line);
    		$nom 	= $vars[0];
    		$message = html_entity_decode($vars[1]);
    		$mail 	= $vars[2];
    		$date 	= $vars[3];
    		$ip 	= $vars[4];
    		$aff = '<p><span class="livredor-nom">De <b>'.$nom.'</b>';
    		if($mail!='') { $aff .= ' <i>('.$mail.')</i>'; }
    		$aff .= '</span><span class="livredor-date">';
    		// Affichage de l'IP UNIQUEMENT pour le visiteur
    		if($ipvisiteur == $ip) { $aff .= ' [IP : '.$ip.'] '; }
    		$aff .= '<i>le '.$date.'</i>';
    		$aff .= '</span></p>';
    		$aff .= '<p class="livredor-message">'.$message.'</p><hr/>';
    		echo $aff;
    	}
    }
    // ---------------------
    ?>
     
    </div>
     
    <div style="text-align:center;">Tous droits reservés - All rights reserved, reproduction interdite.</div>
    </body>
    </html>
    Dernière modification par Invité ; 22/11/2014 à 03h22.

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    Par défaut
    Un grand merci à toi,

    J'ai testé ton code mais il affiche l'ip dans le message.
    J'espère que tu ne m'en voudra pas ( je suis conscient du travail que tu as développé pour moi ) mais étant de nature obstiné J'ai donc retravaillé mon code en déclarant une deuxième écriture dans un guestbook-ip.txt et ça marche à merveille, j'ai bien le message dans guestbook.php sans l'ip et j'ai bien un copier/coller dans guestbook-ip.php
    avec l'ip, il ne me reste plus qu'à éliminer un dernier point disons d'ordre esthétique .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $page .= "&nbsp;<b>$newnom</b> &nbsp; $newmail<br> &nbsp;le:&nbsp; $d<br>&nbsp;$newmessage<br><hr>\n";
    j'ai mis un espace pour décoler le texte du cadre mais si il y a un retour à la ligne les lignes suivantes sont de nouveaux collées au bord du tableau !!!
    Ayant fait une recherche au préalable sur le '\n' c'est le LF (Line Feed) et '\r' le CR (carriage return). une idée ?
    un grand merci pour tout

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/02/2009, 09h43
  2. appel d'une autre frame à partir d'une autre classe
    Par oceane751 dans le forum AWT/Swing
    Réponses: 18
    Dernier message: 19/01/2008, 06h41
  3. variable d une page html vers une autre page html
    Par éloi_75 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/09/2007, 16h20
  4. Réponses: 18
    Dernier message: 22/02/2006, 14h53
  5. Réponses: 7
    Dernier message: 13/12/2005, 16h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo