Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505

    inserire dati con caratteri "scomodi" in delle input field

    Salve.

    Ho uno script che mi controlla lato server la validità di alcune variabili. Se non sono corrette, salva i dati in delle variabili e me le reinserisce negli input field corrispondenti (classica tecnica, in modo da non dover riscrivere tutto).

    Ora il problema è questo. Se ho la stringa $str=ciao mi chiamo "Marco" e sono italiano, e provo a inserirla in :
    codice:
    <input class="inputReg" maxlength="20" name="name" value="<?= $str ?>" id="input1" />
    questa fallisce. Perchè trova un altro " e termina.

    Quindi, ragionando in questo modo, posso fare così (utilizzando JQuery):
    codice:
    <script type="text/javascript">
        $(document).ready(function() {
            $("#input1").val("<?= addslashes($str) ?>");
        });
    </script>
    e funziona perfettamente. Ora mi chiedo : perchè usare JQuery? Allora scrivo questo :
    codice:
    <input class="inputReg" maxlength="20" name="name" value="<?=addslashes($str)?>" id="input1" />
    e magia delle magie, NON FUNZIONA.

    Mi chiedo :
    1 - Perchè con Jquery funziona e con del semplice HTML no?
    2 - Come posso fare per utilizzare il semplice HTML invece di Jquery?

    Spero sia chiara la domanda, e che qualcuno possa aiutarmi

  2. #2
    Utente di HTML.it L'avatar di Laxus
    Registrato dal
    Oct 2010
    Messaggi
    251
    Trasforma i caratteri speciali in entità html. Puoi farlo con htmlspecialchars (http://php.net/manual/en/function.htmlspecialchars.php)

    e magia delle magie, NON FUNZIONA.
    non funziona perchè <input type="text" value="prova \" prova"> è comunque sbagliato

  3. #3
    ho risposto allo stesso quesito pochi giorni fa:
    http://forum.html.it/forum/showthrea...readid=1426773

  4. #4
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    ok come non detto

  5. #5
    Esiste una funzione apposita in php:
    URL encode e URL decode che ti permettono di fare l'escape della stringa per l'utilizzo nelle URL.

    Quindi alla fine avrai:
    <input class="inputReg" maxlength="20" name="name" value="<?=urlencode($str)?>" id="input1" />

    e nell'altra pagina avrai

    $str=urldecode($_POST['name']);
    Ce l'ho fatta! - ItalianPixel -

  6. #6
    Originariamente inviato da portapipe
    Esiste una funzione apposita in php:
    URL encode e URL decode che ti permettono di fare l'escape della stringa per l'utilizzo nelle URL.
    Appunto, "per l'utilizzo nelle URL". Dov'e' l'URL qui?

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505
    uhm sembra funzionare si
    codice:
    <input class="inputReg" maxlength="20" name="name" value="<?=htmlentities($name, ENT_QUOTES) ?>" id="input1" />
    (non ho usato stripslashes perchè ho le magic quotes disattivate).

    Quello che non capisco è il "perchè" funziona. Quando arriva al server questa stringa "entizzata" (se vogliamo dire così) dovrebbe ricevere & quot;ciao non "ciao

    Chi fà la "traduzione" ?

  8. #8
    In realtà riceve %22ciao%22
    Ti ho consigliato questo per il tuo problema poiché gli apici sono boicottati dalle URL, quindi con questo sistema non ne troverai mai uno.

    Ci sono mille modi per arrivare ad una soluzione, e questo è uno dei casi.
    Ce l'ho fatta! - ItalianPixel -

  9. #9
    A suo tempo ebbi lo stesso identico e preciso tuo stesso dubbio.
    Posi questa domanda:

    poniamo che io debba registrare l'utente e quindi salvare le password all'interno del database; Poniamo che in virtù di un errore non posso procedere alla registrazione (ad esempio captcha errato) il campo password resterà compilato ma al posto di " ci sarà & q u o t ;
    La risposta?

    http://forum.html.it/forum/showthrea...readid=1419506 (grazie a magicale)

    In sintesi: nel value del form vi è l'entità html; visualizzi nel form il simbolo (non l'entità); all'invio ricevi gli input senza htmlentities

  10. #10
    Originariamente inviato da portapipe
    Ci sono mille modi per arrivare ad una soluzione
    Si ma in questo caso urlencode() e' la soluzione sbagliata, perche' si parla del valore di un input field, non di un URL. Cosi' come e' sbagliato usare htmlentities() prima di fare una query SQL. Ci sono tante funzioni e ognuna deve essere usata per il suo scopo.

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.