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

    Modificare record utente dopo login

    Scusate ho un problema con la modifica dei dati di un utente che si autentica ad un'area riservata:
    questa la pgina a cui si viene indirizzati dopo il login:
    codice:
    <% 
    Option Explicit
    response.buffer = True
    dim id, nome, cognome, email
    
    If NOT session("login") then
    	response.redirect "dx_old.asp"
    else
    	'vendemmia
    	id = Request.QueryString("id")
    	nome = Request.QueryString("nome")
    	cognome = Request.QueryString("cognome")
    	email = Request.QueryString("email")
    	id = session("id")
    
    Dim Conn, SQL, Rec
    Set Conn=Server.CreateObject("ADODB.Connection")
    Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& server.MapPath("/data/abc.mdb")
    
    SQL="SELECT * FROM login"
    Set rec = Server.CreateObject("ADODB.Recordset")
    Set Rec=Conn.Execute(SQL)
    %>
    <a href="../gestione_record/edit_datos.asp?cod=<%=rec("id")%>">
    con qualunque login mi autentico mi apre la modifica sempre per l'id=1
    dove sbaglio?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di kluster
    Registrato dal
    Jul 2003
    Messaggi
    1,288
    SQL="SELECT * FROM login where id = " & id

  3. #3
    Originariamente inviato da kluster
    SQL="SELECT * FROM login where id = " & id
    Grazie, funziona !!!!

  4. #4
    Utente di HTML.it L'avatar di kluster
    Registrato dal
    Jul 2003
    Messaggi
    1,288
    Prendendo dal tuo script tu fai
    codice:
    '.....
    else
    	'vendemmia
    	id = Request.QueryString("id")
    	nome = Request.QueryString("nome")
    	cognome = Request.QueryString("cognome")
    	email = Request.QueryString("email")
    	id = session("id") 
    '....
    se ti schianta la pagina (Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'id ='. )vuol dire che il session("id") non è valorizzato.
    Dove è il punto in cui lo valorizzi?

  5. #5
    adesso è ok, era saltata una riga nel copia/incolla...
    piuttosto perchè quando faccio l'update dei dati restituisce:
    Microsoft OLE DB Provider for ODBC Drivers error '80004005'

    [Microsoft][ODBC Microsoft Access Driver] Field 'login.password1' cannot be a zero-length string.

    ho provato solo a cambiare solo il campo 'nome', devo forzatamente cambiare tutti i dati del record ? :master:

  6. #6
    Utente di HTML.it L'avatar di kluster
    Registrato dal
    Jul 2003
    Messaggi
    1,288
    update login set nome = '" & nome & "' where id =" & id
    cosi aggiorni solo il campo nome
    cmq , controlla in Access in modalita struttura che il campo password abbia Consenti lunghezza Zero
    Anche se non è un bene che lasci la possibilita di impostare una password a null

  7. #7
    Infatti i campi testo avevo la consenti lunghezza zero su no...
    come posso risolvere oltre a cambiare l'impostazione nel dbase?
    Passando su consenti lunghezza zero su si, cambio la password ma nel dbase il campo password invece di aggiornarsi rimane vuoto...

  8. #8
    Utente di HTML.it L'avatar di kluster
    Registrato dal
    Jul 2003
    Messaggi
    1,288
    ma la passi alla query il valore della password?

    per quelli gia' inseriti nulla
    per i nuovi inserimenti o per le modifiche prima di fare l'insert o l'update fai un controllo che non siano vuoi
    agisci in due modi client o server
    nel senso nella pagina in cui uno modifica la pass metti un controllo
    javascript al submit che controlli che la password non sia vuota
    senno lo fai via asp lato server.

  9. #9
    grazie adesso è ok.

    però non capisco una cosa, mettiamo il caso che l'ID=3060 accede all'area riservata ed al form di modifica dati, poi non modifica niente dell'esistente e cmq quando dà invio gli rispondo che i dati sono stati aggiornati... esite una maniera di avvisarlo (magari alert) che se non è stato modificato nulla nel suo record e quindi rimandarlo indietro?

  10. #10
    Utente di HTML.it L'avatar di kluster
    Registrato dal
    Jul 2003
    Messaggi
    1,288
    a parte che se lui aggiorna anche se non ha cambiato nulla di solito si aggiorna e basta e si manda il messaggio che ha aggiornato il profilo (guarda per esempio se aggiorni il tuo profilo qui nel forum)
    cmq se proprio vuoi mandare un alert
    ti metti in un campo hidden i valori iniziali e poi li confronti al submit
    esempio
    <input type="text" name="nome" value="<%=rs("nome")%>">
    <input type="text" name="nome_check" value="<%=rs("nome")%>
    al submit
    fai (js, esempio grossolano da ampliare)
    function checkModifiche()
    {
    var form = document.form[NOMEFORM]
    var modifiche=0;
    if (form.elements["nome"] != form.elements["nome_check"])
    {
    modifiche ++;
    }
    //....cosi per tutti i campi che vuoi controllare
    //alla fine
    if (modifiche == 0) { alert("non hai eseguito modifiche, non è necessario aggiornare il profilo"); return false}
    else return true;
    }
    il controllo lo metti nel <form onSumit="checkModifiche()">
    cmq credo che tutto questo non sia necessario, aggiorni il profilo sovrascrivendo i dati e bona (controllando che i dati sensibili non siano lasciati vuoti cmq)

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 © 2026 vBulletin Solutions, Inc. All rights reserved.