• User

    semplicemente perchè effettui htmlentities prima di inserirli nel database??


  • Bannato Super User

    Sono alle prime armi con phpmyadmin

    se mi spighi con degli esempio forse ti capisco.

    fammi capire di cosa si tratta e come fare, grazie
    ciao


  • User

    cosa centra phpmyadmin??

    
    $sendfrom=$_COOKIE["usNick"];
    $sendto=limpiar($_POST["sendto"]);
    $comments=limpiar($_POST["comments"]);
    
    if ($sendto==""){echo "Error"; exit();}
    if ($comments==""){echo "Error"; exit();}
    
    

    in questo pezzo di codice, invii alla funzione 'limpiar' come parametro il testo del messaggio, la funzione limpiar non esiste in php ,ma tu ne hai definita una 'limpiare' (con una 'e' in piu), quindi supponiamo che sia questa la funzione chiamata...
    ora cosa fa quata funzione??
    la funzione htmlentities parsa i caratteri html come < > & / ecc in modo che,appunto ,non si comportino come codice html ma come caratteri.
    come fa questa funzione a parsarli? semplice, li sostituisce con caratteri di escape come > ...
    quindi la stringa che infili nel db, una volta nella pagina web secondo te verrà interpretata come html dopo che ne hai parsato il codice??


  • Bannato Super User

    Se c'è qualcuno che sa la soluzione che posti le righe modificate qui altrimenti non riesco proprio

    lo script non l'ho fatto io dunque non so tecnicamente come funziona

    spero che qualuno posso aiutarmi, grazie


  • Consiglio Direttivo

    Ciao guadagnaeuro e benvenuto nel Forum GT

    una volta estratto il dato dal Db prova a processarlo così per visualizzarlo:
    [PHP]echo html_entity_decode($testopvt);[/PHP]
    😉


  • Bannato Super User

    @Samyorn said:

    Ciao guadagnaeuro e benvenuto nel Forum GT

    una volta estratto il dato dal Db prova a processarlo così per visualizzarlo:
    [php]echo html_entity_decode($testopvt);[/php];)

    Ciao sam

    ho provato la tua funzione ma il codice lo vedo giusto ma non è cliccabile, non è html

    CODICE ORIGINALE INVIATO AL MYSQL VIA WEB
    <a href="sito(punto)it">sito< a>

    CODICE MEMORIZZATO NEL MYSQL
    &lt a href=&quot sito(punto)it&quot &gt sito&lt a&gt

    CODICE OTTENUTO CON echo html_entity_decode($testopvt);
    < a href=" sito(punto)it" > sito< a>

    Ancora non è cliccabile ci sono degli spazi che non lo rendono HTML, come posso risolvere?

    Coma mai non diventa come il codice originario inviato?

    Grazie a chi mi aiuta, se potete postate degli esempio o ancora meglio le parti gia modificate

    C'è uno spazio prima dell http che mette da solo il mysql e non so il motivo

    come potreui risolvere?

    N-B. (punto) l'ho messo io altrimenti non accetta il .


  • Consiglio Direttivo

    guardando meglio il codice salvato su Db effettivamente manca qualcosa

    < dovrebbe diventare < e non &lt e così per gli altri
    poi vedo che non c'è proprio lo slash
    il problema è la funzione limpiare che difatti sostituisce ; con degli spazi

    puoi provare a salvare i dati parsandoli con
    [php] $testopvt= addslashes(htmlentities($testopvt, ENT_QUOTES));[/php] e quando li recuperi
    [php]echo stripslashes(html_entity_decode($testopvt));[/php]
    elimina la riga
    [PHP] $mensaje = str_replace(";"," ",$mensaje);[/PHP]
    e dovrebbe andare 😉


  • Bannato Super User

    Ciao samyorn

    volevo dirti che ho risolto semplicemente cancellano la funzione limpiar che mi alterava i dati e dunque alterava il passaggio nel mysql.

    Sono arrivato grazie alla tua spiegazione dunque anziche correggere i problemi che produce questa funziona limpiar l'ho cancellata e cosi nel mysql arrivano codici html senza alcuna alterazione dunque perfettamente funzionanti.

    grazie ancora per il suggeriento.

    Sono nuovo nel php e ancora non lo conosco, in ogni caso mi hai permesso di trovare qeusta soluzione, grazie mille.

    buona notte


  • Consiglio Direttivo

    @guadagnaeuro said:

    .....e cosi nel mysql arrivano codici html senza alcuna alterazione dunque perfettamente funzionanti.

    Fai attenzione che questa non è cosa buona...rischi gravi SQL injection facendo così
    Ti consiglio di fare come ti ho suggerito al precendete post 😉
    :ciauz:


  • Bannato Super User

    Ciao samyorn

    ho provato col tuo medoto ma non funziona, appaiono i link cn gli stessi errori di priva, col solito spazio prima del link che invalida il codice html.

    Se puoi suggeriscimi un'altro modo che funzioni, col tuo modo non mi va proprio.

    mi spieghi cosa sono gli jniection ?


  • Consiglio Direttivo

    Hai tolto questa riga?
    [php] $mensaje = str_replace(";"," ",$mensaje); [/php]

    o meglio, togli la funzione e utilizza questi:

    Per l'inserimento nel Db
    [php] $testopvt= addslashes(htmlentities($testopvt, ENT_QUOTES)); [/php]

    per visualizzarli:
    [php]echo stripslashes(html_entity_decode($testopvt)); [/php]