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

    htmlentities() e stripslashes() nei FORM... sto diventando matto!

    Ciao a tutti!
    Sono abbastanza nuovo nel mondo di PHP.
    Sto diventando matto con la gestione dei FORM e del loro output, tra htmlentities() e stripslashes() non ci sto capendo più nulla.

    Vi spiego nel dettaglio la situazione.

    Sto cercando di creare un'applicazione di inventario, i problemi li sto incontrando mentre sto realizzando la pagina per modificare un articolo.

    Se seleziono un oggetto da modificare l'utente viene portato alla pagina "modifica_articolo.php?art_id=x", questa pagina mostra un form con i vari campi da modificare.
    Alla fine del form sono presenti tre pulsanti: "Modifica ora", "Anteprima" e "Annulla".
    Il form conduce alla pagina "modifica_articolo2.php" con metodo POST.

    Nella pagina "modifica_articolo2.php" definisco in principio le variabili per estrapolarle da $_POST (ad esempio $art_id = $_POST['art_id'], $art_descrizione = $_POST['art_descrizione'], etc).

    In seguito è presente un ciclo switch composto da 3 casi, uno per l'anteprima, uno per annullare e uno per modificare.

    Prima del ciclo switch ho creato una variabile del tipo .=<<<TAB [...] TAB; dove è presente il codice per creare la tabella che mostra l'anteprima delle modifiche. Questa variabile la vado a richiamare nel ciclo switch se viene selezionato anteprima.

    Ora iniziano i problemi. Man mano che vado avanti nel FORM (ad esempio cliccando prima ANTEPRIMA e poi MODIFICA) se vado a fare un print_r($_POST) ottengo non solo i classici slashes prima delle virgolette (\") ma dopo il 3° clic ad esempio ottengo addirittura un \\\" per le virgolette, e se c'è una lettera accentatà si interrompe la frase (ad esempio "L\\\'articolo è" invece che "L'articolo è in ottime condizioni").
    Ho provato in tutti i modi, se nella pagina "modifica_articolo2.php" vado ad utilizzare htmlentities($art_descrizione) ottengo che tutte le lettere accentate vengono visualizzate come A accentate, se uso stripslashes invece che \\\" ottengo \", insomma, sono arrivato al punto che non ci sto capendo più niente...

    Spero soltanto che qualcuno abbia avuto la pazienza di leggere quanto ho scritto, accetto volentieri qualsiasi consiglio. Mi piacerebbe sapere anche se concettualmente questa pagina che sto creando è una buona soluzione o conviene adottarne altre...

  2. #2
    Ho capito qual'è il problema, ma non riesco a risolverlo!

    In pratica quando vado a mostrare l'anteprima delle modifiche stampo una tabella, ma ci ho messo dei campi di form hidden dove viene mantenuto il valore delle variabili in $_POST. Ora, dato che nel codice c'è value='$nomevar' se il testo contiene il carattere " ' " questo mi fa terminare il campo value perchè viene interpretato come ' dall'html.
    A questo punto ho pensato di rimuovere lo stripslashes dalla variabile che comparirà in value, ma dato che il form viene richiamato più volte (ANTEPRIMA->MODIFICA) mi vengono aggiunti due volte gli slashes (C\'era una volta -> C\\\'era una volta)...

    sto diventando pazzo...

  3. #3

  4. #4
    Sì, è attivo ma ho scartato da subito l'ipotesi di disattivarlo dato che sul server che ospiterà il sito probabilmente sarà attivo...

    Di norma i servizi di hosting lo attivano o no?

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    274
    Di norma si fa un if come indicato nel link precedente per avere codice funzionante in entrambi i casi

    Codice PHP:
    if (!get_magic_quotes_gpc()) {
       
    $lastname addslashes($_POST['lastname']);
    } else {
       
    $lastname $_POST['lastname'];


  6. #6
    Accidenti, ma se devo andare ad eseguire un ciclo if per ogni variabile che devo impostare raddoppio la dimensione dello script

    Bah, è meglio che mi fermi qui per stasera, sono molto confuso

  7. #7
    includi questa classe a inizio di ogni files che accetta COOKIE, POST o GET in ingresso e lavori sempre come se magic_quotes non esistesse (alchè occhio a parsare con le giuste funzioni apposite i dati prima di inserirli o verificarli in database)
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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.