Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085

    apici dentro a caselle input (form)

    Come dovrei fare per far vedere in maniera corretto (non troncato) il contenuto di una casella di input (form), quando il dato estratto da un DB contiene degli apici ?
    Il problema è che l'apice potrebbe essere singolo, ma anche doppio ..
    quindi le due alternative che di seguito riporto, funzionano alternativamente in un caso, ma non nell'altro.

    - accetta l'apice singolo, ma non il doppio
    Codice PHP:
    echo "<input type=text name=\"nome\" value=" "\"" .$nominativo"\""">"
    - accetta l'apice doppio, ma non il singolo
    Codice PHP:
    echo "<input type=text name=\"nome\" value=" "'"  .$nominativo"'" ">"

  2. #2
    Moderatore di Off Topic, Kickstarter e XML L'avatar di Sky
    Registrato dal
    Jul 2000
    residenza
    Roma
    Messaggi
    1,053
    Devi aggiungere il carattere di escape per gli apici al contenuto della variabile e rimuoverli quando ricevi il dato dal form.

    Codice PHP:
    // Creazione del campo
    echo '<input type="text" name="nome" value="'addslashes($nominativo) .'>';

    // Lettura dei dati in ricezione
    $_POST['nominativo'] = stripslashes($nominativo); 
    Lo Stato deve dare ai cittadini, come diritto, ciò che la mafia dà come favore.
    Carlo Alberto dalla Chiesa

    Facebook | Twitter | Last.fm | LinkedIn | Quora

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    Originariamente inviato da Sky
    Devi aggiungere il carattere di escape per gli apici al contenuto della variabile e rimuoverli quando ricevi il dato dal form.

    Codice PHP:
    // Creazione del campo
    echo '<input type="text" name="nome" value="'addslashes($nominativo) .'>';

    // Lettura dei dati in ricezione
    $_POST['nominativo'] = stripslashes($nominativo); 
    Ciao ..
    ma l'hai provato ?
    (limitiamoci alla creazione del campo)
    così ad occhio vedo un apice doppio dopo il value che non viene chiuso ..
    io ho provato in vari modi (cambiando gli apici) usando sostanzialmente:

    codice:
    addslashes($nominativo)
    ma senza risultato

    il contenuto del campo è il seguente:

    codice:
    nominativo --> PROVA N'OMINATI"VO

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,132
    codice:
     value="'. addslashes($nominativo) .'">'; <-- manca la virgoletta finale di chiusura nel value
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Moderatore di Off Topic, Kickstarter e XML L'avatar di Sky
    Registrato dal
    Jul 2000
    residenza
    Roma
    Messaggi
    1,053
    Mi è sfuggita, chiedo venia :P
    Lo Stato deve dare ai cittadini, come diritto, ciò che la mafia dà come favore.
    Carlo Alberto dalla Chiesa

    Facebook | Twitter | Last.fm | LinkedIn | Quora

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    mi dà errore di sintassi:

    Codice PHP:
    echo "<input  type=text value="'. addslashes($nominativo) .'">'; 

  7. #7
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,132
    Codice PHP:
    echo '<input  type="text" value="'addslashes($nominativo) .'">'
    fai attenzione se inizi echo con l'apice ' devi chiuderla con l'apice ' se l'inizi con le virgolette " chiudi con le virgolette "
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    scusa ..
    ma non è aperta e chiusa con il singolo apice ?
    (mi riferisco all'esempio che ho riportato)

  9. #9
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,132
    Originariamente inviato da JANUS70
    scusa ..
    ma non è aperta e chiusa con il singolo apice ?
    (mi riferisco all'esempio che ho riportato)
    No è visibile
    Originariamente inviato da JANUS70
    mi dà errore di sintassi:

    codice:
    echo "<input  type=text value="'. addslashes($nominativo) .'">';
    Apri con virgolette chiudi con apice
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  10. #10
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Diciamo che $nominativo sia popolato con un dato proveniente da un form o da una query.

    Codice PHP:
    $html_nominativo htmlspecialchars($nominativo);
    echo <<<EOT
    <input type="text" name="nome" value="$html_nominativo">
    EOT; 
    Per fare un po' di chiarezza a tutti, come indicato dal manuale:
    • addslashes - Returns a string with backslashes before characters that need to be quoted in database queries etc.
    • htmlspecialchars - Certain characters have special significance in HTML, and should be represented by HTML entities if they are to preserve their meanings.


    Ovviamente addslashes va utilizzata in assenza difunzioni specifiche quali mysqli_real_escape_string() per mysql.

    Nel tuo caso invece hai bisogno di codificare un carattere (il doppio o singolo apice - sarebbe meglio utilizzare il doppio) che all'interno di tag HTML assume un significato particolare (racchiudere i valori degli attributi) , quindi occorre utilizzare htmlspechalchars() per tali valori.

    http://php.net/manual/en/function.htmlspecialchars.php
    http://php.net/manual/en/function.addslashes.php
    http://php.net/manual/en/mysqli.real-escape-string.php

    Ancora, la presenza dello slash nei dati provenienti da form è dovuto ai magic quote, deprecati dalla versione 5.3 e rimossi dall 5.4. Per una corretta gestione dovresti verificare se attivi tramite la funzione get_magic_quotes_gpc. Nel manuale è anche presente un'esempio che ne chiarisce l'uso.

    I magic quote possono creare problemi e confusione. Il mio consiglio è verificare all'inizio dello script se attivi, con la precedente funzione, e se necessario ripulire i superglobal $_GET, $_POST e $_COOKIE. In tal modo hai la certezza che i dati in ingresso siano sempre privi di slash d'escape. Ai tre dovresti aggiungere anche $_REQUEST se la usi. Questo array è una unione degli array $_GET, $_POST e $_COOKIE. Il popolamento di $_REQUEST dipende dalla direttiva request_order presetne nel php.ini ossia essendo GPC tre array associativi, qualora una chiave sia presente in più di un array, il valore di uno di questi sarà sovrascritto da quello dell'atro secondo la precedenza stabilita da request_oprder.

    Sempre nel manuale c'è un esempio di script per disabilitare le megic quote

    http://php.net/manual/en/function.ge...quotes-gpc.php
    http://php.net/manual/en/language.va...perglobals.php
    http://php.net/manual/en/security.ma....disabling.php

    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

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 © 2024 vBulletin Solutions, Inc. All rights reserved.