Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    boolbo
    Guest

    Problemi con caratteri speciali in PHP

    Salve a tutti,

    Scrivo qui nel forum dedicato al PHP perchè ho appena installato sul mio sito uno script molto semplice per un guestbook.
    http://it.marcolodovichi.com/guestbo...book.php?row=0

    Vi sono sostanzialmente due campi, uno per il nome dell'autore del messaggio inviato ed uno per il messaggio (per il mio guestbook non mi interessano altri dati) lo script non necessita di database, ma registra tutto su un file di testo.
    E' uno script semplice, ma molto funzionale....ha solo un problema, cioè che inserendo l'apostofo nel testo del messaggio questo viene male interpretato poi dal PHP cioè:

    Se io scrivo la frase:
    "Che cosa c'è?"

    Lo script poi la interpreta pubblicandola sulla pagina in questo modo:
    "Che cosa c\'è?"

    Per carità non è un problema di sicurezza o nulla di così grave, potremmo definirlo un vezzo grafico di layout...però visto che l'italiano fa molto uso di apostrofi, sarebbe meglio nno lo facesse.

    Qualcuno saprebbe dirmi se è possibile e come è possibile evitare questo in PHP?

    Posto il codice file readbook.php
    ----------------------------------
    Codice PHP:
    <?php

     $fileName 
    file ("guestbook.txt");
     
    $rows count ($fileName);
      
     if (
    $rows 10)
     {
         if (!isset (
    $row) )
         {
             
    $row 0;
         }
     
         print (
    "<table><tr><td width=\"50%\">");
      
         if (
    $row 0)
         {
            echo 
    "<div><< <a href=\"readbook.php?row=" . ($row 10) . "\">Next 10</a></div>";
        }
        
        print (
    "</td><td width=\"50%\">");

         if ( (
    $rows $row) > 10)
         {
            echo 
    "<div><a href=\"readbook.php?row=" . ($row 10) . "\">Previous 10</a> >></div>";
        }
            
        print (
    "</td></tr></table>");

           for (
    $i $row$i < ($row 10); $i++)
        {
            echo 
    $fileName [$i];
        }
     }
     else
     {
          for (
    $i=0$i $rows$i++)
          {
              echo 
    $fileName [$i];
          }
     }
      
    ?>
    Codice file addbook.php
    ---------------------------------------
    Codice PHP:
    <?php
     
    if ($message != ''
     {
      
    $message str_replace ("\n","
    "
    ,$message);
      
    $message strip_tags ($message'
    '
    );

      
    $newRow '<div>' . ($message) .
              
    '
    [b]' 
    date('d.m.Y H:i') . ' - ' strip_tags ($name) .
              
    '[/b]</div><hr width="100%" size="1">';
                
      
    $oldRows join (''file (guestbook.txt') );
      $fileName = fopen ('
    guestbook.txt', 'w');
      fputs ($fileName, $newRow . chr(13) . chr(10) . $oldRows);
      fclose ($fileName);
     }
     
     include ("readbook.php");
    ?>
    E infine il codice del modulo di invio messaggio
    -------------------------------------------------
    codice:
    <div>
    <form action="addbook.php" method="post">
    Message
    
    
    <textarea name="message" cols="50" rows="7"></textarea>
    
    
    Name
    
    
    <input type="text" name="name" size="48">
    
    
    <input type="submit" value=" Submit ">
    </form>
    </div>

  2. #2

    Re: Problemi con caratteri speciali in PHP

    basta che stampi stripslashes($message);

  3. #3
    boolbo
    Guest
    In questo modo sul file addbook.php ??
    if ($message != '')
    {
    $message = str_replace ("\n","
    ",$message);
    $message = strip_tags ($message, '
    ');
    $message = stripslashes($message);

    o meglio sul codice:

    Codice PHP:
    <?php
     
    if ($message != ''
     {
      
    $message str_replace ("\n","
    "
    ,$message);
      
    $message strip_tags ($message'
    '
    );
      
    $message stripslashes($message);

      
    $newRow '<div>' . ($message) .
              
    '
    [b]' 
    date('d.m.Y H:i') . ' - ' strip_tags ($name) .
              
    '[/b]</div><hr width="100%" size="1">';
                
      
    $oldRows join (''file (guestbook.txt') );
      $fileName = fopen ('
    guestbook.txt', 'w');
      fputs ($fileName, $newRow . chr(13) . chr(10) . $oldRows);
      fclose ($fileName);
     }
     
     include ("readbook.php");
    ?>

  4. #4
    no, meglio tenerli con l'escape e stamparli solo senza

  5. #5
    boolbo
    Guest
    Originariamente inviato da Eyescream
    no, meglio tenerli con l'escape e stamparli solo senza
    Ho provato come ti avevo detto...ed effettivamente toglie quel problema. Ma ora questo tuo messaggio non so se ho creato qualche problema al momento invisibile. Cioè tu dove lo metteresti se non lì?

  6. #6
    nell'altro file

    echo stripslashes($fileName [$i]);

  7. #7
    boolbo
    Guest
    Uhm quindi in questo modo:

    for ($i = $row; $i < ($row + 10); $i++)
    {
    echo stripslashes( $fileName [$i]) ;
    }
    }
    else
    {
    for ($i=0; $i < $rows; $i++)
    {
    echo stripslashes( $fileName [$i]) ;
    }
    }

    o meglio nel codice completo:

    Codice PHP:
    <?php

     $fileName 
    file ("guestbook.txt");
     
    $rows count ($fileName);
      
     if (
    $rows 10)
     {
         if (!isset (
    $row) )
         {
             
    $row 0;
         }
     
         print (
    "<table><tr><td width=\"50%\">");
      
         if (
    $row 0)
         {
            echo 
    "<div><< <a href=\"readbook.php?row=" . ($row 10) . "\">Next 10</a></div>";
        }
        
        print (
    "</td><td width=\"50%\">");

         if ( (
    $rows $row) > 10)
         {
            echo 
    "<div><a href=\"readbook.php?row=" . ($row 10) . "\">Previous 10</a> >></div>";
        }
            
        print (
    "</td></tr></table>");

           for (
    $i $row$i < ($row 10); $i++)
        {
            echo 
    stripslashes($fileName [$i]);
        }
     }
     else
     {
          for (
    $i=0$i $rows$i++)
          {
              echo 
    stripslashes($fileName [$i]);
          }
     }
      
    ?>

  8. #8
    boolbo
    Guest
    Bon, l'ho midificato come ho scritto nell'ultimo post prima di questo. Lo script ora registra sul TXT lo \' mentre visualizza su browser solo l'apostrofo senza lo slash.....

    Direi che funziona!!!
    Mi confermi?

    Ti ringrazio davvero per l'aiuto!
    Buon lavoro.
    Marco

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.