Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    conservare i value inseriti negli input e virgolette

    Sò che è una cosa stupida ma non ho mai ben capito come gestire la cosa.
    Al submit di un form verifico i dati ricevuti e se non corretti per qualsivoglia ragione voglio evitare di "svuotare" i valori immessi nel form e pertanto gestisco l'operazione nel modo in cui segue:
    Codice PHP:
    <?php
    $value_campo1 
    '';
    $value_campo2 '';

    if(isset(
    $_POST['submit']))
        {
        
    $value_campo1 $_POST['campo1'];
        
    $value_campo2 $_POST['campo2'];
        
    // eseguo operazione con gli input ricevuti...
        
    }
    ?>
    <html>
    <body>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    <input type="text" name="campo1" value="<?php echo $value_campo1?>">
    <input type="text" name="campo2" value="<?php echo $value_campo2?>">
    <input type="submit" name="submit" value="Invia">
    </form>
    </body>
    </html>
    Il problema mi si presenta nell'eventualità in cui l'utente immetta una virgoletta in quanto l'input diventa:
    <input type="text" name="campo1" value="questa è una virgoletta " e ora cosa faccio?">

    come si gestisce "professinalmente" questa eventualità?
    un banale str_replace('"', '', $string); oppure c'è quancosa che occorre sapere e non sò?

  2. #2
    Codice PHP:
    $string=str_replace('"','&quot;',$string); 
    Ciao

  3. #3
    Codice PHP:
    $string=str_replace('"','&quot;',$string); 
    mmmm... ci avevo pensato...
    però " sarà diverso da & q u o t; (senza spazi)

    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 ;

    ... salverò (e criptandola) una password diversa da quella scelta dall'utente!!!

  4. #4
    htmlentities() con parametro ENT_QUOTES
    Codice PHP:
    <input type="text" name="campo1" value="<?php echo htmlentities($value_campo1ENT_QUOTES); ?>"> 
    <input type="text" name="campo2" value="<?php echo htmlentities($value_campo2ENT_QUOTES); ?>">
    al posto di " ci sarà & q u o t ;

    ... salverò (e criptandola) una password diversa da quella scelta dall'utente!!!
    No, ricevi correttamente le virgolette e non l'entità html
    Full Stack Developer presso Advice Lab
    Bonus Bitcoin
    Moon Bitcoin

  5. #5
    Utente di HTML.it L'avatar di hyde82
    Registrato dal
    Feb 2010
    Messaggi
    243
    partendo dal presupposto che chi sviluppa per il web deve sapere che l'utente comune è indisciplinato ed in quanto tale va "obbligato" a fare determinate cose.Se ho ben capito si discute di validazione dell'input e persistenza del form.Per la prima sono solito usare JS lato client(molto efficace) e successivamente Php(Lato server).Lato php puoi usare due funzioncine(addslashes per rimuovere tutti i caratteri nocivi alle query e sostituirli con degli slash per ogni apice e ,stripslashes che ovviamente fa il contrario).Per la persistenza del form ti consiglio di usare qualcosa di più performante come le sessioni.Ad ogni modo ti consiglio di creare una classe ad hoc che esamina il contenuto degli hash $_REQUEST,$_GET,$_POST esistenti ed accessibili,effettuare una convalida,tremendamente utile,purificandone il contenuto e successivamente utilizzare le sessioni per memorizzare temporaneamente i dati inviati via form che se soddisfano i vincoli imposti dalla tua "purificazione" ,consentirà di procedere al resto dell'applicazione ,altrimenti effettuerà un reindirizzamento verso la pagina dove la richiesta è stata effettuata, riutilizzando l'oggetto $_SESSION(temporaneo) utile a restituire i valori precedentemente inviati dalla pagina di richiesta.

  6. #6
    Originariamente inviato da hyde82
    si discute di validazione dell'input
    no
    Originariamente inviato da hyde82
    persistenza del form
    si
    Originariamente inviato da hyde82
    usare JS lato client(molto efficace) e successivamente Php(Lato server).
    anche io spesso faccio così ma js può divenire non indispensabile
    Originariamente inviato da hyde82
    addslashes per rimuovere tutti i caratteri nocivi alle query e sostituirli con degli slash
    non li rimuove ma li immunizza anticipandoli dal backslashes... e cmq io utilizzo mysql_real_escape_string (poi si dovrebbe parlare del get_magic_quote_gpc)

    Originariamente inviato da hyde82
    Per la persistenza del form ti consiglio di usare qualcosa di più performante come le sessioni.
    dipende se c'è il cambiamento della pagina...

    Originariamente inviato da Magicale
    Codice PHP:
    <input type="text" name="campo1" value="<?php echo htmlentities($value_campo1ENT_QUOTES); ?>">
    No, ricevi correttamente le virgolette e non l'entità html
    ESATTO!! non l'avrei mai detto!!

  7. #7
    Utente di HTML.it L'avatar di hyde82
    Registrato dal
    Feb 2010
    Messaggi
    243
    non li rimuove ma li immunizza anticipandoli dal backslashes... e cmq io utilizzo mysql_real_escape_string (poi si dovrebbe parlare del get_magic_quote_gpc)
    infatti ho usato anche "sostituzione"

    dipende se c'è il cambiamento della pagina...
    che significa quello che dici?....Molto spesso un utente non si rende nemmeno conto di un reindirizzamento alla stessa pagina....fatto da uno script che effettua un controllo sui vincoli.Le pagine devono "cambiare",è all'utente che si deve dar l'impressione sia il contrario(perchè non sa di aver sfiorato una pagina "modello")!probabilmente è solo un modo diverso di approcciare allo sviluppo....Tu hai chiesto una soluzione professionale per un argomento che non è cosa da poco.....Te l'ho ragionata(la soluzione) ma anche implementata ,usufruendo solamente degli strumenti che php offre per migliorare l'esperienza utente....poi puoi usare anche un po' di asincronia....ma questa è un'altra storia....

  8. #8
    la conservazione degli input la faccio alle volte anche con le sessioni ma le impiego solo straordinariamente... generalmente adotto il metodo che ho fatto.

    Per "cambiare pagina" intendevo una pagina di destinazione degli input diversa da quella corrente, a prescindere della visualizzazione a video.

    PS: Santa Maria Capua Vetere? abitiamo moolto vicino!!

  9. #9
    Utente di HTML.it L'avatar di hyde82
    Registrato dal
    Feb 2010
    Messaggi
    243
    Per "cambiare pagina" intendevo una pagina di destinazione degli input diversa da quella corrente, a prescindere della visualizzazione a video.
    appunto....molte delle tecniche utilizzate per la persistenza del form fanno uso di un controller per elaborare gli input, che passa quei dati ad un modello che li analizza(effettua query,regole di validazione ...etc) restituendoli al controller .Quest'ultimo riesamina i dati generati dal modello e prende decisioni su quale output generare(l'appropriato HTML di contorno).
    Quindi quando ti dicevo:
    !probabilmente è solo un modo diverso di approcciare allo sviluppo.
    intendevo questo(MVC)....che ti risolverebbe mooolti problemi.
    Nel tuo caso potresti usare un solo controller per ogni argomento della tua applicazione(login form,dataEntry etc)una classe modello con diversi metodi di applicazione(generazione sessioni,validazioni input,persistenza dati) e le viste per le forme più appropriate alle tue aree applicative(HTML/XHTML/XML)
    Ma comunque anche non utilizzando il pattern(MVC) si può raggiungere lo stesso scopo ma con una fatica diversa....

    si sono di SMCV te di dove sei?....forse ci conosciamo...chissà!

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.