Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Fayble
    Registrato dal
    May 2002
    Messaggi
    141

    Gestione insert, update, delete

    Ho una pagina che consente inserimento, modifica e rimozione di articoli. In funzione del tipo di operazione da eseguire, setto una variabile GET che viene processata dalla pagina stessa con uno switch.

    Adesso devo pensare a come implementare la pagina, unica, che processa le operazioni di INSERT (I), UPDATE (U) e DELETE (R).
    Mi chiedo:
    1. E' sicuro inviare il tipo di operazione (I,U,R) in GET, cioè mettendo questa informazione nella "action" dei form (per esempio: <form ... action="process.php?execute=insert>)?
    2. Se no (come credo), meglio un campo hidden sui forms o una variabile globale?
    3. Come gestire il redirect (no JS)?

    Che dite?


  2. #2
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    sempice(se ho capito bene)
    potresti usare una select nel form con le 3 opzioni da usare
    <form action="process.php" method="post">
    <seelct name="azione">
    <option value="modifica">modifica</option>
    <option value="elimina">elimina</option>
    <option value="inserisci">inserisci</option>
    </select>
    <input type="submit" value="conferma">
    </form>
    avrai quindi il tuo $_POST['azione'] che determinera' l'azione
    ....se vuoi un altro tipo di esempio scrivi..ciao.
    La vita e' uno switch();

  3. #3
    Utente di HTML.it L'avatar di Fayble
    Registrato dal
    May 2002
    Messaggi
    141
    Grazie Marco80, ma non intendevo questo...

    La mia pagina richiama i forms di inserimento, modifica e rimozione già realizzati. Si tratta adesso di organizzare/pensare la pagina che processa i dati in arrivo dai tre forms e fa le query.


  4. #4
    Si, è sicuro se effettui tutti i controlli necessari.
    Mi spiego meglio.

    La pagina che si occupa di effettuare le operazioni è così strutturata a quanto ho capito:

    Codice PHP:
    if ( isset( $_GET['op'] ) )
      {
        switch ( 
    $_GET['op'] )
              {
                case 
    'I' // Inserimento
                
    break ;

                case 
    'U' // Update
                
    break ;

                case 
    'R' // Cancellazione
                
    break ;

                default:
                echo 
    'Valore non valido per la variabile $_GET[op]' ;
              }
      } 
    Ecco che hai effettuato il primo controllo sulla variabile $_GET['op'] (prima di effettuare l'isset credo che dovresti anche eliminare eventuali ' o " con uno str_replace per evitare di essere vulnerabile alla sqlinjection o cmq all'esecuzione di codice arbitrario nello script).

    Fatto questo devi passare al controllo dei dati a seconda dell'operazione.

    Se è un inserimento controlli che tutti i dati necessari esistano e siano corretti (per controllare i dati c'è un articolo su freephp: Validare i form con la programmazione ad oggetti ).

    Una volta effettuati tutti i controlli puoi inserire l'articolo

    Stesso discorso vale per la modifica (il procedimento è molto simile a quello di inserimento).

    Diverso, invece, è il discorso per la cancellazione.
    Lì devi effettuare un unico controllo: che il valore passato sia un numero.
    Se è un numero effettui la cancellazione altrimenti mostri un errore.
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  5. #5
    Utente di HTML.it L'avatar di Fayble
    Registrato dal
    May 2002
    Messaggi
    141
    Ok, grazie.

    Mi stavo chiedendo quanto potrebbe essere "facile" costruire un form ad hoc per far danni, anche se controllo se il login è stato effettuato e se si hanno i permessi per visualizzare la pagina.

    Chiaramente vorrei scrivere una sola pagina per scegliere l'operazione (I,U,R) e per farla, quindi userei il metodo GET per individuare l'operazione e dei campi hidden per le query.

    Controindicazioni?


  6. #6
    Nessuna se controlli che get abbia esattamente uno dei valori che ti aspetti (lo fai con lo switch come ti ho mostrato sopra) e che prima di utilizzare la variabile la purifichi dai caratteri "pericolosi" (in questo caso da ' e ". Lo fai con lo str_replace).

    Utilizzo di str_replace per purificare le variabili GET

    Codice PHP:
    $replace[] = ''' ;
    $replace[] = '"' ;
    foreach ( 
    $_GET as $key => $value )
           {
             
    $_GET[str_replace( $replace , '' , $key )] = str_replace( $replace , '' , $value )
           } 
    Dovrebbe funzionare. Provalo e magari fammi sapere! Ciao!

    PS
    Il forum nel primo $replace[] mi elimina il \. In realtà, nel codice, il tutto va scritto senza spazi e al secondo ' va anteposto \. Ciao!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

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.