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

    Problema con login e sessioni

    Salve a tutti!
    Conosco un po' di PHP, ma adesso mi sto avvicinando anche ad ASP.

    Provando a fare un semplice login collegato ad un db di Access, non riesco a portare avanti una sessione.

    Praticamente dalla pagina login.asp passo i dati alla pagina ris.asp, che li analizza e se manca qualcosa torna indietro, altrimenti va avanti nella pagina ok.asp.

    Per evitare però che sia inutile il login, avevo pensato di passare una sessione dalla pagina ris.asp alla pagina ok.asp... ma non so perchè non ne vuole sapere di funzionare.

    La sintassi per la sessione sono sicuro sia corretta, visto che ho creato 2 pagine per prova solamente con il codice della sessione e funzionano bene.

    Vi scrivo il codice delle 3 pagine... se qualcuno mi aiutasse trovando l'errore lo ringrazierei fino alla fine dei miei giorni!

    login.asp
    codice:
    <HTML>
    <HEAD>
    <TITLE>Prova log-in </TITLE>
    </HEAD>
    <BODY>
    	  <%
    		if request("Id")="1" then
    			response.write "<center>ATTENZIONE!<center>"
    			response.write "<center>Non sono stati inseriti tutti i dati necessari per il login.<center>
    
    "
    		else
    			if request("Id")="2" Then
    			response.write "<center>ATTENZIONE!<center>"
    			response.write "<center>I dati inseriti non sono corretti.<center>
    
    "
    			else
    				response.write ""
    			end if			
    		end if
    	  %>
    
    	  <form method="post" action="ris.asp">
    
    	  <CENTER><TABLE border=1 style="border-collapse: collapse" cellpadding=2>
    	  <TR>
    	  	<TD>Nome utente:</TD>
    	  	<TD><input type="text" name="user" size="12" maxlength="10"></TD>
    	  </TR>
    	  <TR>
    	  	<TD>Password:</TD>
    	  	<TD><input type="password" name="code" size="12" maxlength="10"></TD>
    	  </TR>
    	  <TR>
    	  	<TD colspan=2><CENTER><input type="submit" name="Submit" value="Accedi"></CENTER></TD>
    	  </TR>
    	  </TABLE></CENTER>
    </BODY>
    </HTML>
    ris.asp
    codice:
    <%
    	' Dichiarazione variabili
    	dim intTest
    		intTest="0"
    	' Verifico se manca il nome utente
    	if request.form("user")="" or request.form("code")="" then
    		response.redirect "a_ris.asp?Id=1"
    	end if
    
    	' Apro il database
    	dim n_user
    		n_user=replace(request.form("user"),"'","''")
    	dim n_code
    		n_code=replace(request.form("code"),"'","''")
    
    	Set Conn=Server.CreateObject("ADODB.Connection") 
    
    	strConn="driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("user_reg.mdb") 
    
    	Conn.Open strConn
    	sql = "SELECT * FROM user WHERE user='"&n_user&"' AND password='"&n_code&"'"
    	Set rs = Server.CreateObject("ADODB.Recordset")
    
    	rs.Open sql, conn ,3,3
    	
    	'verifico che esista davvero
    	if rs.eof then
    		intTest="1"
    	else
    		intTest="2"
    	end if
    
    	'chiudo il database
    	rs.Close
    	set rs = Nothing
    	conn.Close 
    	set conn = Nothing
    	
    	'avvviso che il nome è già presente
    	if intTest="1" then
    		response.redirect "a_ris.asp?Id=2"
    	Else
    		response.redirect "ok.asp"
    		Session ("A")="Funziona"
    	end if
    %>
    ok.asp
    codice:
    <%
    a=1
    var= Session("A")
    
    if a=1 then
      Response.write var
    end if
    %>
    
    <html>
    <head>
    <title>Log-In </title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    
    <body>
    -------- Se qui a sinistra c'è scritto qualcosa, significa che tutto funziona.
    
    </body>
    </html>
    Grazie per gli eventuali suggerimenti e scusate se il post è venuto un po' lungo.
    Arberto

  2. #2

    io farei molto piu semplicemente cosi...

    questo è il codice che passi dalla pagina del form alla pagina asp
    codice:
    <%
    
    ' setti la variabile di sessione
    session("login") = Request.Form("user")
    
    'definisci il tempo della sessione
    session.Timeout = 60
    
    'controlli i dati sul db
    Dim user
    Dim pass
    user = Request.Form("user")
    pass = Request.Form("pass")
    
    ' crei l' oggetto connessione
    Dim cn
    Set cn = Server.CreateObject("ADODB.Connection")
    cn.Open = "la tua scringa di connessione"
    Dim sql
    sql = "SELECT * FROM tabella WHERE user='" & user & "' COLLATE SQL_Latin1_General_CP1_CS_AS AND pass='" & pass & "' COLLATE SQL_Latin1_General_CP1_CS_AS"
    
    Dim rs
    Set rs = cn.Execute(sql)
    
    'setto la variabile di sessione
    Dim autenticato
    if rs.eof then
      autenticato = false
    else
      autenticato = true
    end if
    rs.Close
    cn.Close
    
    Set rs = Nothing
    Set cn = Nothing
    
    'gestisco i redirect
    if autenticato = true then
    
    Session("Autenticato") = "si"
    Response.Redirect("../default.asp")
      
    else
    	
    	Response.Redirect("pagina.asp")
      
    end if
    
    %>
    e nelle pagine metti

    codice:
    <%
    if session("Autenticato") <> "si" Then
    Response.Redirect("pagina.asp)
    end if
    %>
    spero esserti stato utile

  3. #3
    Grazie davvero!

    Adesso funziona tutto alla perfezione!


    Ma non ho capito una cosa: a cosa serve questo pezzo?

    codice:
    ' setti la variabile di sessione
    session("login") = Request.Form("user")

    E grazie ancora!
    Arberto

  4. #4
    codice:
    ' setti la variabile di sessione
    session("login") = Request.Form("user")
    con session("login") : crei la variabile di sessione

    con session("login") = Request.Form("user") : gli attribuisci il valore che hai messo nel form.

    PS l' oggetto Request.Form("") va a prendere il valore passato da un form.

    cosi la variabile è istruita e conserva per tutto il tempo della sessione il valore.

    ES:

    session("login") = Fabio

    conserverai per tutto il tempo il valore Fabio e te lo puoi portare dove vuoi!

    sempre a disposizione

  5. #5
    Sei fantastico!

    Efefttivamente era pure non troppo complicato, solo che dopo non l'hai più usata e non riuscivo a capire perchè...

    Comunque adesso l'ho usata per il solito saluto iniziale.



    Scrivo il codice, nel caso qualcuno fosse interessato.

    Questa è la parte che va scritta all'inizio di ogni pagina protetta (o almeno su quella in cui si vuole fare il "saluto"):

    codice:
    <%
    if session("Autenticato") <> "si" Then
    Response.Redirect("errore.htm")
    end If
    
    nome = session("login")
    %>
    E poi dove si vuole si aggiunge il nome mettendo

    codice:
    Ciao, <%=nome%>!
    Dubito che possa servire effettivamente a qualcuno, vista la banalità, ma non si sa mai...


    E grazie per i chiarimenti!
    Arberto

  6. #6

    il bello

    è che in questo campo che tutti mettono a disposizione degli altri le loro conoscenze..

    buon lavoro

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.