Foros del Web » Programando para Internet » ASP Clásico »

Logado y modificación de un registro.

Estas en el tema de Logado y modificación de un registro. en el foro de ASP Clásico en Foros del Web. Hola, es mi primer mensaje después de años leyendo, no he visto foro de presentaciones, por lo tanto lo hago aquí, soy el administrador de ...
  #1 (permalink)  
Antiguo 01/12/2010, 06:30
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 14 años, 4 meses
Puntos: 6
Logado y modificación de un registro.

Hola, es mi primer mensaje después de años leyendo, no he visto foro de presentaciones, por lo tanto lo hago aquí, soy el administrador de varias página todas ellas en ASP y Access y soy de Huelva.

Mi problema:

Tengo una página con un libro de visitas donde los usuarios rellenan un formulario (nombre, correo y comentario) y su visita es publicada sin más.

Pero una de las páginas es de un centro escolar y me obligan a que las visitas requieran confirmación a través de email por el administrador de la web.

He añadido un campo nuevo a la tabla visitas que es aprobado con valor lógico sí/no para que el administrador de la web apruebe o no las visitas, esto ya se puede hacer desde el panel de control de la web, pero quiero hacerlo a través de email, es decir:

Quiero que cada vez que un usuario cree una visita, esta se registre en la Base de Datos pero con valor NO en el campo Aprobado y automáticamente se mande un email al administrador de la web con una url para la aprobación de la visitas.

la url sería más o menos así:

admin_aprobarvisita.asp?proceso=aprobar&codigovisi ta=1234

esto no tiene ningún misterio pero para ello hay que logarse como administrador y e aquí mi dilema:

Si llego desde el email a la página admin_aprobarVisita y no estoy logado, esta me redirige con response.redirect a admin_loginadmon.asp y claro, pierdo las variable de la url Proceso y CodigoVisita

¿como puedo hacer para que una vez logado (o iniciada sesión) vuelva a la página admin_aprobarvisita.asp con sus dos variables?


PD. la idea es exactamente igual que cuando recibimos un email sobre algún tema del foro, si no has iniciado sesión te muestra la página de logeo y una vez logado te manda al tema correspondiente.

PD2. no quiero usar HTTP_REFERER porque es un método inseguro.
  #2 (permalink)  
Antiguo 01/12/2010, 09:31
Avatar de Wasper  
Fecha de Ingreso: julio-2006
Ubicación: de cai, picha!!!
Mensajes: 1.030
Antigüedad: 18 años, 9 meses
Puntos: 41
Respuesta: Logado y modificación de un registro.

Pues cuando hagas response.redirect, enviale querystring junto con las variables que necesitas...
response.redirect ("admin_loginadmon.asp?proceso=aprobar&codigovisit a=1234")

O lo puedes meter en variables de sesion...

Cuando Loguee, podras volver a enviarle las variables o recoger el valor de las variables de sesion

Otra solucion podria ser, crea un listado que solo el admin pueda leerlas, y el correo que sea generico, es decir, "Hay registros pendientes de aprobar, por favor vaya a su panel de control"

Seria una forma mas, ademas, evitas tener que hacer viajar variables de un sitio a otro...
__________________
Saludos, Jose

Paginas web y SEO
Anuncios por palabras
  #3 (permalink)  
Antiguo 01/12/2010, 11:00
 
Fecha de Ingreso: mayo-2008
Mensajes: 77
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Logado y modificación de un registro.

Yo lo haria con variables de session, es lo mas comodo.
  #4 (permalink)  
Antiguo 01/12/2010, 11:51
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 14 años, 4 meses
Puntos: 6
Respuesta: Logado y modificación de un registro.

Cita:
Iniciado por Wasper Ver Mensaje
Pues cuando hagas response.redirect, enviale querystring junto con las variables que necesitas...
response.redirect ("admin_loginadmon.asp?proceso=aprobar&codigovisit a=1234")

O lo puedes meter en variables de sesion...

Cuando Loguee, podras volver a enviarle las variables o recoger el valor de las variables de sesion

Otra solucion podria ser, crea un listado que solo el admin pueda leerlas, y el correo que sea generico, es decir, "Hay registros pendientes de aprobar, por favor vaya a su panel de control"

Seria una forma mas, ademas, evitas tener que hacer viajar variables de un sitio a otro...
Lo primero ya lo había pensado, pero me gusta hacer código genérico y a lo mejor para otro proceso tengo que meter más líneas de código.

Lo segundo también, pero ya sabes, me dicen que se le acumulará el trabajo al adminisrador o no lo hará y con un link es todo más sencillo.

¿De qué manera lo hará por ejemplo este foro?
  #5 (permalink)  
Antiguo 01/12/2010, 11:56
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 14 años, 4 meses
Puntos: 6
Respuesta: Logado y modificación de un registro.

Cita:
Iniciado por loverpiu Ver Mensaje
Yo lo haria con variables de session, es lo mas comodo.
Pero tengo que generar líneas de código cada vez que tenga una historia de estas. ¿no habrá algo genério?

Había pensado en guardar en una variable de sesión la variable de servidor HTTP_Referer, pero esta variable no es segura y antivirus y navegadores ya practicamente no guardan valores en ella.
  #6 (permalink)  
Antiguo 01/12/2010, 13:41
 
Fecha de Ingreso: mayo-2008
Mensajes: 77
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Logado y modificación de un registro.

Cita:
Iniciado por PabloManuel Ver Mensaje
Pero tengo que generar líneas de código cada vez que tenga una historia de estas. ¿no habrá algo genério?

Había pensado en guardar en una variable de sesión la variable de servidor HTTP_Referer, pero esta variable no es segura y antivirus y navegadores ya practicamente no guardan valores en ella.

No tienes por que hazlo en un include, con nombres genericos. Asi lo puedes reutilizar.

Si lo he entendido bien, claro.
  #7 (permalink)  
Antiguo 02/12/2010, 05:03
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 14 años, 4 meses
Puntos: 6
Respuesta: Logado y modificación de un registro.

Cita:
Iniciado por loverpiu Ver Mensaje
No tienes por que hazlo en un include, con nombres genericos. Asi lo puedes reutilizar.

Si lo he entendido bien, claro.

Es que tengo que hacer el mismo sistema, pero para los comentarios de los lectores sobre las noticias y no quiero generar un código para cada sistema.

Voy a desarrollar código con variables de sesión a ver como queda. Os lo comentaré cuando lo desarrolle.
  #8 (permalink)  
Antiguo 02/12/2010, 13:18
 
Fecha de Ingreso: mayo-2008
Mensajes: 77
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Logado y modificación de un registro.

ok ya nos dices.
  #9 (permalink)  
Antiguo 03/12/2010, 06:41
 
Fecha de Ingreso: diciembre-2010
Mensajes: 236
Antigüedad: 14 años, 4 meses
Puntos: 6
Respuesta: Logado y modificación de un registro.

Solución probada y operativa:

El siguiente código contiene el alta del registro en la tabla visitas, el campo aprobado tiene como valor por defecto no. Una vez creado el registro enviamos un email al administrador del dominio incluyendo los datos de la visita para que la valide si quiere, si no quiere simplemente se olvida del email. El email contiene la url de aprobación:

Código asp:
Ver original
  1. if ALTA="si" then
  2.              
  3.                 'Procedemos al alta de la visita
  4.                 NOMBRE=REQUEST.FORM("NOMBRE")
  5.                 CORREOE=REQUEST.FORM("CORREOE")
  6.                 COMENTARIO=REQUEST.FORM("COMENTARIO")
  7.                 DISENO=REQUEST.FORM("DISENO")
  8.                 CONTENIDO=REQUEST.FORM("CONTENIDO")
  9.                 VELOCIDAD=REQUEST.FORM("VELOCIDAD")
  10.                 DIAYHORA=NOW()
  11.                
  12.                 'Evitamos que se incluyan url con enlaces viagra y demás con esta condición.
  13.                 if instr(COMENTARIO, "http://") = 0 then
  14.                    
  15.                    'Ejecutamos la instrucción de alta del registro pero con recordset, ya que
  16.                    'necesitamos saber el Id creado para la url.
  17.                    
  18.                    Set rs = Server.CreateObject("ADODB.Recordset")
  19.                    rs.Open "Visitas", Conn,1,2
  20.                    
  21.                    Rs.Addnew
  22.                    CodigoNuevaVisita = Rs("Id")
  23.                    
  24.                    Rs("LVnombre") =NOMBRE
  25.                    Rs("LVcorreoe") =CORREOE
  26.                    Rs("LVcomentario") =COMENTARIO
  27.                    Rs("LVdiseno") =DISENO
  28.                    Rs("LVcontenido") =CONTENIDO
  29.                    Rs("LVvelocidad") =VELOCIDAD
  30.                    Rs("LVdiahora") =DIAYHORA
  31.                                    
  32.                    Rs.Update
  33.                    CerrarRs
  34.                    
  35.                    'Procedemos a enviar un email al administrador para que valide o no
  36.                    'Para estandarizar, cogemos el nombre de dominio de la tabla Sistema
  37.                                      
  38.                    CrearRS "Select NomDominio from Sistema"
  39.                    
  40.                    If not rs.eof then
  41.                       Asunto = "Aviso: Visita prendiente de su aprobación (" & now() & ")"
  42.                       Contenido = "Estimado Administrador de <b>" & Rs("NomDominio") & "</b><br><br>" & _
  43.                                   "Un usuario ha publicado una visita y está pendiente de su aprobación. La visita es la siguiente:<br><br>" & _
  44.                                    "NOMBRE.....: " & NOMBRE & "<br>" & _
  45.                                    "CORREOE....: " & CORREOE & "<br>" & _
  46.                                    "COMENTARIO.: " & COMENTARIO & "<br>" & _
  47.                                    "DISENO.....: " & DISENO & "<br>" & _
  48.                                    "CONTENIDO..: " & CONTENIDO & "<br>" & _
  49.                                    "VELOCIDAD..: " & VELOCIDAD & "<br>" & _
  50.                                    "DIAYHORA...: " & DIAYHORA & "<br><br>" & _
  51.                                    "La visita no será visible a ningún usuario de su Web a menos que usted la apruebe, para " & _
  52.                                    "aprobar la visita pinche <a href='http://" & Rs("NomDominio") & "/admin_aprobarvisita.asp?proceso=AprobarVisitas&codigo=" & CodigoNuevaVisita  & "'>aquí</a>"
  53.  
  54.                       EnviarEmailAdmon Asunto, Contenido
  55.                       mensaje "Su visita ha sido registrada. En cuanto sea aprobada, aparecerá en nuestro libro de visitas, gracias."
  56.                    End If
  57.                    
  58.                    CerrarRs
  59.                      
  60.                 end if  
  61.          
  62.            
  63.              END IF


El email que recibe el administrador es el siguiente:

Estimado Administrador Web

Un usuario ha publicado una visita y está pendiente de su aprobación. La visita es la siguiente:

NOMBRE.....: XXXXXXXXXXX
CORREOE....: [email protected]
COMENTARIO.:
Esto está bastante terminado, quedan los últimos retoques.

DISENO.....: 10
CONTENIDO..: 10
VELOCIDAD..: 10
DIAYHORA...: 02/12/2010 19:06:33

La visita no será visible a ningún usuario de su Web a menos que usted la apruebe, para aprobar la visita pinche aquí


La palabra aquí contiene un hipervínculo con la siguiente url:
http://www.XXXXXXXXXXX.com/admin_aprobarvisita.asp?proceso=AprobarVisitas&cod igo=34


La url nos lleva a la página de activación y esta, si no hemos iniciado sesión nos llevará a la página de login para volver a esta una vez correctamente logado en el sistema. Este es el código de la página admin_aprobarvisita.asp


Código asp:
Ver original
  1. <%
  2.    'Recuperamos las variables de url antes de comprobar el inicio de sesión:
  3.    '
  4.    ' Proceso: Tiene que ser igual a <<AprobarVisita>>
  5.    ' Codigo: Tiene que ser el código de la visita a aprobar y a de contener valor.
  6.    '
  7.    'El motivo de hacerlo antes de comprobar sesión es porque si la sesión no está
  8.    'abierta, tengo que crear variables de sesión, ya que tengo que redirigir al usuario
  9.    'a la página de logeo para una vez autentificado volver a mandarlo aquí con las dos
  10.    'variables de url de nuevo, por eso tengo que guardarlas en variables de sesión.
  11.    '
  12.    'A esta página se llegará desde la página de logeo o desde un email enviado al admon. de la
  13.    'Web para confirma la visita
  14.    Proceso = request.querystring("proceso")
  15.    Codigo = request.querystring("codigo")
  16.    
  17.    'Si las variables no contienen los valores correctos no sigue mostrando un error.
  18.    If proceso <> "AprobarVisitas" or isempty(Codigo)=true or isnull(codigo)= true then
  19.  
  20.       Response.Write "El acceso a esta página no es correcto."
  21.  
  22.    Else  
  23.    
  24.      'LLegados aquí las variables contienen la información correcta, comprobamos que la sesión esté abierta,
  25.      'en caso de que no, redireccionará a la página de logeo y crearemos las variables de sesión.
  26.      if Session("SESION")<>"Abierta" THEN
  27.    
  28.         Session("PROCESO") = "AprobarVisitas"        
  29.         Session("CODIGO") = Codigo
  30.         Response.redirect "admin_loginadmin.asp"
  31.  
  32.      Else
  33.         'LLegados aquí, estamos logados como administradores y las variables de url contienen la información correcta
  34.         'pero hay que comprobar que el código de visita exista.
  35.         ' Primero mostramos acceso al panel, arriba a la derecha.
  36.         %>
  37.         <p align="right"><a href="admin_PanelAdmon.asp">Panel de Control</a></p>
  38.         <%    
  39.              
  40.         Set rs = Server.CreateObject("ADODB.Recordset")
  41.         Ssql="Select * From Visitas Where Id=" & Codigo
  42.         rs.Open Ssql, Conn,1,2
  43.        
  44.         'Si no encontramos la visita a aprobar...
  45.         If rs.eof then
  46.            Response.Write "Error al modificar el registro"
  47.         Else
  48.        
  49.            Response.Write "<b>La siguiente Visita ha sido aprobada</b><br><br>"
  50.            Response.Write "Id..........:" & Rs("Id") & "<br>"
  51.            Response.Write "Nombre......:" & Rs("LVnombre") & "<br>"          
  52.            Response.Write "Correo......:" & Rs("LVcorreoe") & "<br>"          
  53.            Response.Write "Comentario..:" & Rs("LVcomentario") & "<br>"          
  54.            Response.Write "V. Diseño...:" & Rs("LVdiseno") & "<br>"          
  55.            Response.Write "V. Contenido:" & Rs("LVcontenido") & "<br>"          
  56.            Response.Write "V. Velocidad:" & Rs("LVvelocidad") & "<br>"          
  57.            Response.Write "Día:" & Rs("LVdiahora") & "<br>"          
  58.  
  59.            'Si encontramos la visita, la aprobamos.
  60.            Rs("LVaprobado")=-1
  61.            Rs.Update
  62.                      
  63.         End if
  64.        
  65.         'Y cerramos el RecordSet
  66.         CerrarRs
  67.      End If  
  68.    END IF
  69. %>


Y por último aquí está el código de la página de logeo:


Código asp:
Ver original
  1. if ISEMPTY(login) = false then
  2.  
  3.      user=request.form("usuario")
  4.      pass=request.form("contrasena")
  5.      
  6.      CrearRs "select * from usuarios where nombre='" & user & "' and csena = '" & pass & "'"
  7.      
  8.      If not Rs.eof then
  9.        'creación de sesión
  10.        Session("Sesion")="Abierta"
  11.        
  12.        'En la variable de sesión proceso guardamos un valor en caso de que haya que redirigir
  13.        'a otra página que no sea el panel de adimistración, si no contiene valor, es que no existe y
  14.        'redigiremos al panel de administración.
  15.        If Session("PROCESO")="" THEN
  16.        
  17.           response.redirect "admin_paneladmon.asp"
  18.  
  19.        Else
  20.          
  21.           'Un Select para los distintos procesos, en principio trabajaremos con dos variables
  22.           'de sesión: Proceso y Código.
  23.           Select Case Session("PROCESO")
  24.          
  25.              Case "AprobarVisitas":
  26.                 'En este caso redirigimos a aprobar visita y para evitar errores
  27.                 'eliminamos las variables de sesión.
  28.                 'Pero antes las guardamos y cerramos la conexión con la DB, hay que tener en
  29.                 'cuenta que cuando la página ejecuta el <<Redirect>> deja de ejecutar el resto del código.
  30.                 '
  31.                 Proceso = session("PROCESO")
  32.                 Codigo = Session("CODIGO")
  33.                
  34.                 Session.Contents.Remove("PROCESO")
  35.                 Session.Contents.Remove("CODIGO")
  36.                
  37.                 %>
  38.                 <!-- #include file="includes/dboff.inc"-->
  39.                 <%
  40.                
  41.                 response.redirect "admin_AprobarVisita.asp?proceso=" & Proceso & "&codigo=" & Codigo
  42.  
  43.          
  44.           End Select          
  45.        End If  
  46.  
  47.      else
  48.        'Advertir de lógin incorrecto.
  49.        %><a href="admin_loginadmin.asp">Acceso incorrecto, pulse</a><%
  50.        
  51.      end if
  52.      
  53.   else
  54.  
  55.      ' Formulario de petición de usuario y contraseña.

Última edición por PabloManuel; 03/12/2010 a las 06:46 Razón: highlight... ¿mejor no?

Etiquetas: registro
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:18.