Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662

    html in textarea, poi nel DB, e poi ancora in textarea

    Problema...

    Ho una textarea che, all'invio, passa i dati in un campo del database.

    Il testo inserito nell'area potrà essere sia semplice, sia html.

    Quando passo i dati al DB eseguo i seguenti accorgimenti:
    Codice PHP:
    $corpomail $_POST['codenewspot'];
    $corpomail str_replace("<""&lt;"$corpomail);
    $corpomail str_replace(">""&gt;"$corpomail);
    $corpomail str_replace("'""'"$corpomail);
    $corpomail mysql_real_escape_string($corpomail); 
    e quando li richiamo inverto le operazioni:
    Codice PHP:
    $corponl stripslashes($corponl);
    $corponl ereg_replace("'","'",$corponl);
    $corponl ereg_replace("&lt;","<",$corponl);
    $corponl ereg_replace("&gt;",">",$corponl); 
    ..e queste ultime operazioni le faccio quando riporto il testo o l'HTML in una textarea per le modifiche.

    Bene, funziona TUTTO (...o quasi...)

    Quando invece dell'HTML inserisco del normale testo e vado a capo... non mi va a capo nella visualizzazione normale (stampata a video)
    ...mentre se lo richiamo della textarea per modificare, il testo è a capo...

    Spero di essermi spiegato e non aver confuso solamente le idee.

    Qualcuno sa dirmi perchè il mio codice mi vuole così male?
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    292
    ciao,
    nelle textarea il delimitatore di riga è \n mentre per l'html è il tag


    quando vuoi stampare il contenuto della textarea prova ad utilizzare la funzione nl2br()
    http://php.net/manual/en/function.nl2br.php

  3. #3
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    Ed è quì che nasce il problema!
    Se uso nl2br lo applicherebbe anche all'HTML e non va bene perchè così mi aggiunge un
    ogni volta che il codice va a capo!

    <div>
    <div>
    contenuto
    </div>
    </div>

    diventerebbe

    <div>

    <div>

    contenuto

    </div>

    </div>
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    292
    avrà sicuramete quell'effetto,
    di norma nelle textarea si sceglie il tipo di contenuto, html o testuale, e in base a questa selezione poi si va a trattare il contenuto.
    se non vuoi, o non puoi, aggiungere questa selezione potresti usare una funzione di detect con espressione regolare che si occuperà di trovare eventuali tag html, se presenti tratterai il contenuto come html altrimenti come testo (con la nl2br)

  5. #5
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    E il problema è proprio quello!!
    Di solito è un "circuito misto".
    Immagina una normale mail: normale testo e dei link e delle immagini pescate da url.
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  6. #6
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    c'è sicuramente qualcosa che non va nell'insieme.
    intanto utilizza http://php.net/manual/en/function.htmlspecialchars.php , c'è anche la funzione inversa.
    If you think your users are idiots, only idiots will use it. DropBox

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    292
    per quello che di solito si fa selezionare all'utente il tipo di inserimento...
    counque un utente che utilizza dei tag si presuppone che voglia scrivere in html e di conseguenza deve aspettarsi che vengano trattati come delimitatori di riga solo i tag
    da lui inseriti e non gli a capo testuali.
    trattare un misto significherebbe interpretare ogni \n, poichè l'utente potrebbe usarlo al posto del
    e anche per indentare l'html, potresti provare a creare una funzione che si occupi di fare ciò ma non la vedo molto funzionale (esempio ignorare i \n subito prima e dopo di un tag)

  8. #8
    Utente di HTML.it L'avatar di bANART
    Registrato dal
    Jul 2005
    Messaggi
    662
    @homerbit:

    Sarà sicuramente ingoranza mia, ma sai perchè non ho utilizzato htmlspecialchars?
    Perchè per le virgolette " aggiunge i backslash, mentre per le & commerciali m'è venuta paura che mi facesse casino con i vari &lt; &gt; ecc..
    Ma (ovviemente) se esiste la funzione, sarà sicuramente la migliore soluzione (ma sta cosa non me la riesco a spiegare)

    @arkus:

    ..la notte porta consiglio, e concordo con te..
    O metto due radio buttons per decidere come trattare il testo, oppure tutto solo in html
    Matteo Coletta - fotografia
    Fotografo Lanciano - Fotografia a Lanciano e Pescara

  9. #9
    usa ckeditor...
    Ciao!

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.