Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Salvare su file i dati di un textarea in modo sicuro

    Ciao a tutti,
    ho un problema: in una pagina PHP devo salvare su file dei dati scritti da utente su textarea.
    Il punto è che l'utente potrebbe essere smaliziato e scrivere codice html, php o sql per piantare la pagina, e soprattutto potrebbe andare a capo nel suo testo, e salvando su file, vengono copiati pure gli "a capo".

    Come posso salvare su file il contenuto del textarea in modo che se uno va a capo, nel file viene scritto tutto su un'unica riga? E come prevenire codici potenzialmente dannosi?

    Esempio utente:

    Ciao a tutti i partecipanti
    del forum
    Come va?

    Sul file dovrebbe venir scritto:

    note:Ciao a tutti i partecipanti
    del forum
    Come va?

    Grazie anticipatamente!

    P.S la funzione nl2br() non mi funziona, va lo stesso a capo durante la scrittura su file

  2. #2

  3. #3
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    ciao

    per quanto riguarda gli a capo automatici salva pure il contenuto della text area in un file di testo così com'è.

    Codice PHP:
    $testo=$_POST['commenti'];
    $fh=fopen("commento.txt","w+");
    fwrite($fh,$testo);
    fclose ($fh);

    //per richiamare il contenuto del file

    $note=file_get_contents("commento.txt");

    echo 
    $note
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  4. #4
    Originariamente inviato da dottwatson
    ciao

    per quanto riguarda gli a capo automatici salva pure il contenuto della text area in un file di testo così com'è.

    Codice PHP:
    $testo=$_POST['commenti'];
    $fh=fopen("commento.txt","w+");
    fwrite($fh,$testo);
    fclose ($fh);

    //per richiamare il contenuto del file

    $note=file_get_contents("commento.txt");

    echo 
    $note
    Si si hai ragione, infatti sarebbe la soluzione migliore...
    Però ti spiego...questo file è formattato per righe così formate:

    file core.txt:

    A Nome1
    giorni:%d;%d;%d...
    note:note scritte su un'unica riga
    ----------
    B Nome2
    giorni:%d;%d;%d...
    note:note scritte su un'unica riga

    Quindi è per questo che avrei bisogno di scrivere su un'unica riga...perchè la mia funzione di lettura del file core.txt, funziona riga per riga...e io so già che la riga1 è il nome, la riga 2 i giorni, e la riga 3 le note...poi c'è un separatore, poi un nuovo nome, nuovi giorni e nuove note...
    In definitiva...le note devono essere inserite su un'unica riga

  5. #5
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    Codice PHP:
    <?
    $file
    =file_get_contents("core.txt");
    $gruppi=explode("separatore",$file);
    for (
    $x=0;$x<count($gruppi);$x++)
    {
    $linea[$x]=explode(";\n",$gruppo[$x]);
    }
    print_r($line);
    ?>
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  6. #6
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Ma forse, almeno così mi è sembrato di capire ma posso aver frainteso, lui un sistema di lettura di questo file lo possiede già. Quello di cui ha bisogno è un modo per evitare che si possa inserire dei caratteri newline o simili. Magari con str_replace() potresti provare a sostituire gli \r\n con qualcos'altro...

  7. #7
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    io ho capito che avesse bisogno di gestire il file come una log che non si accoda ma si aggiorna linea per linea a seconda del dato

    A Nome1
    giorni:%d;%d;%d...
    note:note scritte su un'unica riga
    ----------
    B Nome2
    giorni:%d;%d;%d...
    note:note scritte su un'unica riga

    come glio ho indicato io ottiene un array multidiemensionale

    $linea[gruppo][numero linea]...
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  8. #8
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Originariamente inviato da mfonz85
    [...]
    Quindi è per questo che avrei bisogno di scrivere su un'unica riga...perchè la mia funzione di lettura del file core.txt, funziona riga per riga...e io so già che la riga1 è il nome, la riga 2 i giorni, e la riga 3 le note...poi c'è un separatore, poi un nuovo nome, nuovi giorni e nuove note...
    In definitiva...le note devono essere inserite su un'unica riga
    Secondo me dovresti provare ad applicare la funzione str_replace() sulla stringa "note" che invii dal form. Se, come credo di aver capito, hai già un sistema per gestire il salvataggio dei dati ti manca solo di impedire che nelle "note" ci siano caratteri che possano spezzare su una nuova linea il contenuto della stringa.

  9. #9
    Originariamente inviato da neida
    Secondo me dovresti provare ad applicare la funzione str_replace() sulla stringa "note" che invii dal form. Se, come credo di aver capito, hai già un sistema per gestire il salvataggio dei dati ti manca solo di impedire che nelle "note" ci siano caratteri che possano spezzare su una nuova linea il contenuto della stringa.
    Esatto, ho sia la funzione che legge il file sia quella che scrive i dati modificati su file. Mi manca solo la parte di scrittura delle note...Che per ora sono lasciate vuote, e ho i textarea disabilitati :rollo:

    Avevo provato con

    $scrivi = ereg_replace('
    ', '\r\n', $scrivi);

    Ma con scarsi risultati...proverò comunque con str_replace()
    La chiamo con ricerca dell'occorrenza \r\n giusto? O solo \n ??

  10. #10
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Fai piazza pulita per andare sul sicuro... del resto l'uso dell'uno o dell'altro varia in base al sistema operativo utilizzato, e quindi nell'imbarazzo della scelta...

    Codice PHP:
    preg_replace("(\\r\\n|\\n|\\r)"""$note); 

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.