Salve a tutti
ho un problema riguardante un conflitto tra due database per la gestione di un negozio online.
vi faccio vedere le due coppie di pagine (quelle sia .html che .asp) riguardanti il login e la registrazione che effettua un utente:
pagina login.html:
ecco il login.asp:codice:<HTML> <HEAD> <TITLE> </TITLE> <style> fieldset { font-size:100%; border:1px solid #000000; background-color:skyblue; color:#000000; padding:3px; } </style> </HEAD> <BODY bgcolor="lightgreen"> <CENTER> <FONT color="lightred"> <H1> EFFETUA IL LOGIN </H1> </FONT> </CENTER> <HR> <CENTER> <FORM method="post" action="login.asp"> <BLOCKQUOTE><BLOCKQUOTE> <FIELDSET><LEGEND>Login</LEGEND> <TABLE> <TR> <TD>USERNAME:</TD> <TD> <input name="nick" size="20" value=""> </TR> <TR> <TD>PASSWORD:</TD> <TD> <input type="password" name="pass" size="20" value=""> </TR> </TABLE> <INPUT type="submit" size="20" value="INVIA"> <INPUT type="reset" size="20" value="ANNULLA"> </FIELDSET> </BLOCKQUOTE></BLOCKQUOTE> </FORM> </CENTER> </BODY> </HTML>
codice:<%@ LANGUAGE = VBScript %> <% 'prelievo delle stringhe del'username e della password StringNick = request.Form("nick") StringPass = request.Form("pass") 'stringa di connessione al database strconn="Provider = Microsoft.Jet.OLEDB.4.0;Data Source=" strconn=strconn+Server.MapPath("Utente.mdb") 'istanze degli oggetti Connection e Recordset set conn = Server.CreateObject("ADODB.Connection") set rs = Server.CreateObject("ADODB.Recordset") 'apertura connessione conn.Open strconn 'apertura recordset rs.Open "TabUtente", conn %> <HTML> <body text="" bgcolor="lightgreen"> <CENTER> <FONT color="lightred"> <H1> EFFETUA IL LOGIN </H1> </FONT> </CENTER> <HR> <% comodo=0 rs.MoveFirst Do While Not rs.EOF IF (Ucase(rs("NickName"))=Ucase(StringNick)) AND (Ucase(rs("Password"))=Ucase(StringPass)) THEN%> <CENTER><H2>SEI REGISTRATO!</H2></CENTER> <ALIGN='JUSTIFY'>BENVENUTO/A <%=StringNick%> : I TUOI DATI SONO REGISTRATI. VAI NELLA SEZIONE ACQUISTA PER ORDINARE I PRODOTTI CHE PREFERISCI.</ALIGN> <%comodo=1 END IF rs.MoveNext Loop if (comodo=0) then Response.Write " <CENTER><H2>NON SEI REGISTRATO!</H2></CENTER>" Response.Write "<CENTER>ATTENZIONE! PRIMA DI EFFETTUARE IL LOGIN AL SITO, DEVI REGISTRARTI!</CENTER>" End if 'chiusura del data base e della connesione rs.Close conn.Close Set rs=nothing Set conn=nothing %> </BODY> </HTML>
ecco invece le due pagine della registrazione
RegistrazioneCliente.html:
RegistrazioneCliente.asp:codice:<html> <head> <title>Inserimento dati in un data base</title> <style> fieldset { font-size:100%; border:1px solid #000000; background-color:skyblue; color:#000000; padding:3px; } </style> </head> <BODY text="" bgcolor="lightgreen"> <CENTER> <FONT color="lightred"> <H1> REGISTRATI NEL NOSTRO DATABASE: </H1> </FONT> </CENTER> <HR> <CENTER> <form method=post action="RegistrazioneCliente.asp"> <BLOCKQUOTE><BLOCKQUOTE> <FIELDSET><LEGEND>Registrazione</LEGEND> <table> <tr> <td align=right>NICKNAME:</td> <td align=left><input name="txtnickname"> (min 6 caratteri, max 16 caratteri) </td> </tr> <tr> <td align=right>PASSWORD:</td> <td align=left><input type="PASSWORD" name="txtpassword"> (min 6 caratteri, max 16 caratteri) </td> </tr> <tr> <td align=right>E-MAIL:</td> <td align=left><input name="txtemail"></td> </tr> <tr> <td align=right>NOME:</td> <td align=left><input name="txtnome"> </td> </tr> <tr> <td align=right>COGNOME:</td> <td align=left><input name="txtcognome"> </td> </tr> </table> <input type="reset" value="CANCELLA"> <input type="submit" value="INVIA"> </FIELDSET> </BLOCKQUOTE></BLOCKQUOTE> </form> </CENTER> </body> </html>
si può ben notare che con il login uso un database e con la registrazione ne uso un altro.codice:<%@ language="VBScript" %> <% option explicit %> <% 'La linea di codice sottostante esegue un controllo sulla creazione degli errori di inserimento dati on error resume next 'La variabile objconn è usata per effettuare la connessione al database dim objConn 'viene generata un'istanza dell'oggetto ADODB.Connection set objConn = Server.CreateObject("ADODB.Connection") 'con ConnectionString viene definito il tipo di driver utilizzato per il database e il suo percorso fisico objConn.ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=C:\Inetpub\wwwroot\NegozioOnLine\db_utenti.mdb" 'viene aperto e scritto il database objConn.Open dim objRs set objRs = Server.CreateObject("ADODB.Recordset") 'La stringa di codice riportata sotto apre la tabella "utenti" tramite la connessione (objConn) creata nel file "RegistrazioneCliente.asp", specificando che si tratta di una tabella permanente (adCmdTable), una delle tabelle che compongono il data base, da aprire in modo ottimistico (adLockOptimistic), cioè in scrittura. objRs.Open "utenti", objConn, , adLockOptimistic, adCmdTable objRs.AddNew objRs("NickName")=Request.Form("txtnickname") objRs("Password")=Request.Form("txtpassword") objRs("Email")=Request.Form("txtemail") objRs("Nome")=Request.Form("txtnome") objRs("Cognome")=Request.Form("txtcognome") 'viene aggiornato il database objRs.Update 'il database viene chiuso con il metodo close e settato a zero con il parametro nothing objRs.Close Set objRs=Nothing objConn.Close Set objConn=Nothing %> <html> <head> <title>Inserimento dati</title> </head> <BODY text="lightred" bgcolor="lightgreen"> <% 'viene effettuto un controllo inerente la possibile generazione di errori durante l'inserimento di dati If err.number>0 then response.write " <CENTER><H1> ERRORE NELL'INSERIMENTO, RIPROVA </H1></CENTER>" Else response.write " <CENTER><H1> I DATI SONO STATI INSERITI CORRETTAMENTE </H1></CENTER>" End if %> </body> </html>
invece vorrei farlo funzionare con uno solo.
il problema è che se cambio quello del login e metto il database della registrazione mi dice (quando effettuo il login) NON SEI REGISTRATO!.
se invece metto il database del login al posto di quello della registrazione mi dà poi l'errore nella registrazione.
Eppure i database sono identici con le stesse chivi primarie (NickName e Password).
Come posso risolvere questo problema???
ringrazio anticipatamente.
ps:spero di avere delle risposte entro oggi graize mille.

Rispondi quotando
