Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    286

    controllo ed eventuale update record con una query in SQLite??

    L'esempio pratico è:
    un form per cambiare la password utente!
    un campo con la vecchia password e uno con la nuova!!
    Con un'unica query al db SQLite posso fare controllo e update?? ...eventualmente qual'è la sintassi!??

    thanks
    kirk

  2. #2
    Ciao,
    non ho capito quale sia il controllo che devi fare, comunque SQLite supporta
    INSERT....SELECT
    http://www.sqlite.org/lang_insert.html

    ma pare non supporti UPDATE...SELECT o UPDATE....FROM
    http://www.sqlite.org/lang_update.html


    Quindi non puoi fare un update sulla base di una select (non in un'unica query voglio dire).

    Però volendo potresti usare un replace (cioè elimini e ricrei l'intera riga)

    http://www.sqlite.org/lang_replace.html
    per favore NIENTE PVT TECNICI da sconosciuti

  3. #3
    Ciao..

    sarebbe abbastanza azzardato usare replace per sostituire una password... Non so SQLITE, ma usualmente REPLACE lavora su una chiave primaria o UNIQUE.... Basta conoscere un username (di solito UNIQUE) per fare frittate...

    Per sostituire una password direi che e' praticamente obbligatorio una SELECT e poi UPDATE, con in mezzo le necessarie verifiche di controllo dati.



    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    286
    non ho capito quale sia il controllo che devi fare
    ho due campi, in uno chiedo la vecchia password e nell'altro la nuova...quando invio il form devo prima controllare che la vecchia password coincida e poi aggiorno la nuova...
    Ho pensato ad una query unica come:
    Codice PHP:
     update "tabella" set pasw="$newpswwhere pasw="$oldpswand id="$id
    ancora ho qualche errore, però la soluzione mi sembra buona!??

    thanks

  5. #5
    SQLITE supporta benissimo le subquery, quindi una cosa tipo

    UPDATE table SET password = '$newpsw' WHERE id = ( SELECT id FROM table WHERE user = '$user' AND password = '$oldpsw' )

    penso sia la soluzione piu' semplice

    P.S. updatare una password in base all' id, pazzia, piu' facile fare frittate, tento gli id da 1 a 1000 su una form esterna e ti cambio le passwords a tutti gli utenti
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  6. #6
    [supersaibal]Originariamente inviato da beipink
    ho due campi, in uno chiedo la vecchia password e nell'altro la nuova...quando invio il form devo prima controllare che la vecchia password coincida e poi aggiorno la nuova...
    Ho pensato ad una query unica come:
    Codice PHP:
     update "tabella" set pasw="$newpswwhere pasw="$oldpswand id="$id
    ancora ho qualche errore, però la soluzione mi sembra buona!??

    thanks [/supersaibal]
    di password uguali potrebbero essercene di id no. Quindi basta l'id. Ma per trovare l'id ci vuole un SELECT. Quindi dopo avere identificato lo USER (con SELECT) confronti i dati ricevuti, se cambia la password fai ripetere l'immissione della nuova , controlli che coincidano le due immissioni e poi fai l'update:

    update "tabella" set pasw="$newpsw" where id="$id"


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    piero quella che ho scritto no eh ?

    UPDATE table SET password = '$newpsw' WHERE id = ( SELECT id FROM table WHERE user = '$user' AND password = '$oldpsw' )

    tanto se non trova l' id torna NULL e se torna NULL non updata niente, giusto ???

    la verifica la fa poi sull' affected_rows o sul last_change , cosi' da poter confermare o meno l' avvenuto update oppure no
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  8. #8
    [supersaibal]Originariamente inviato da andr3a
    SQLITE supporta benissimo le subquery, quindi una cosa tipo

    UPDATE table SET password = '$newpsw' WHERE id = ( SELECT id FROM table WHERE user = '$user' AND password = '$oldpsw' )

    penso sia la soluzione piu' semplice

    P.S. updatare una password in base all' id, pazzia, piu' facile fare frittate, tento gli id da 1 a 1000 su una form esterna e ti cambio le passwords a tutti gli utenti [/supersaibal]


    sarebbe pazzia se gli id li passassi da query string, o se fai mettere l'id dallo user.... ma mi parrebbe bonta' eccessiva...

    Vorrei proprio vedere come fai con un form passarmi un dato che non raccolgo....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    [supersaibal]Originariamente inviato da andr3a
    piero quella che ho scritto no eh ?

    UPDATE table SET password = '$newpsw' WHERE id = ( SELECT id FROM table WHERE user = '$user' AND password = '$oldpsw' )

    tanto se non trova l' id torna NULL e se torna NULL non updata niente, giusto ???

    la verifica la fa poi sull' affected_rows o sul last_change , cosi' da poter confermare o meno l' avvenuto update oppure no [/supersaibal]
    Quello che hai scritto lo hai scritto contemporaneamente a me, quindi lo leggo solo ora. Se sono supportate le subquery negli update va bene, ma e' inutile, perche' lo user deve averlo gia' identificato prima per fargli cambiare la password...

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    [supersaibal]Originariamente inviato da piero.mac
    sarebbe pazzia se gli id li passassi da query string, o se fai mettere l'id dallo user.... [/supersaibal]
    intendevo da una form senza autenticazione ... ovvero scrivi user, pass e cambi password, senza pensare a login ... come e' ad esempio su tanti link di conferma che arrivano per email , metti che cambi l' id sul link e la query e' unica per l' id cambieresti passwords altrui ... e non dirmi che sto' delirando, mesi fa il Passport di Microsoft ha permesso a tanti di avere accesso a carte di credito della gente proprio grazie a questo sistema ( noto anche come solito cratere di Microsoft che ha rimborsato per milioni di dollari )


    [supersaibal]Originariamente inviato da piero.mac
    Se sono supportate le subquery negli update va bene, ma e' inutile, perche' lo user deve averlo gia' identificato prima per fargli cambiare la password...
    [/supersaibal]
    e' solo una precauzione in piu' su una pagina che permette il cambio di passwords, l' accoppiata univoca e' sempre user=>pass , quindi quella query in quella pagina e' stramaledettamente sicura


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