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 originalif ALTA="si" then
'Procedemos al alta de la visita
NOMBRE=REQUEST.FORM("NOMBRE")
CORREOE=REQUEST.FORM("CORREOE")
COMENTARIO=REQUEST.FORM("COMENTARIO")
DISENO=REQUEST.FORM("DISENO")
CONTENIDO=REQUEST.FORM("CONTENIDO")
VELOCIDAD=REQUEST.FORM("VELOCIDAD")
DIAYHORA=NOW()
'Evitamos que se incluyan url con enlaces viagra y demás con esta condición.
if instr(COMENTARIO, "http://") = 0 then
'Ejecutamos la instrucción de alta del registro pero con recordset, ya que
'necesitamos saber el Id creado para la url.
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "Visitas", Conn,1,2
Rs.Addnew
CodigoNuevaVisita = Rs("Id")
Rs("LVnombre") =NOMBRE
Rs("LVcorreoe") =CORREOE
Rs("LVcomentario") =COMENTARIO
Rs("LVdiseno") =DISENO
Rs("LVcontenido") =CONTENIDO
Rs("LVvelocidad") =VELOCIDAD
Rs("LVdiahora") =DIAYHORA
Rs.Update
CerrarRs
'Procedemos a enviar un email al administrador para que valide o no
'Para estandarizar, cogemos el nombre de dominio de la tabla Sistema
CrearRS "Select NomDominio from Sistema"
If not rs.eof then
Asunto = "Aviso: Visita prendiente de su aprobación (" & now() & ")"
Contenido = "Estimado Administrador de <b>" & Rs("NomDominio") & "</b><br><br>" & _
"Un usuario ha publicado una visita y está pendiente de su aprobación. La visita es la siguiente:<br><br>" & _
"NOMBRE.....: " & NOMBRE & "<br>" & _
"CORREOE....: " & CORREOE & "<br>" & _
"COMENTARIO.: " & COMENTARIO & "<br>" & _
"DISENO.....: " & DISENO & "<br>" & _
"CONTENIDO..: " & CONTENIDO & "<br>" & _
"VELOCIDAD..: " & VELOCIDAD & "<br>" & _
"DIAYHORA...: " & DIAYHORA & "<br><br>" & _
"La visita no será visible a ningún usuario de su Web a menos que usted la apruebe, para " & _
"aprobar la visita pinche <a href='http://" & Rs("NomDominio") & "/admin_aprobarvisita.asp?proceso=AprobarVisitas&codigo=" & CodigoNuevaVisita & "'>aquí</a>"
EnviarEmailAdmon Asunto, Contenido
mensaje "Su visita ha sido registrada. En cuanto sea aprobada, aparecerá en nuestro libro de visitas, gracias."
End If
CerrarRs
end if
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<%
'Recuperamos las variables de url antes de comprobar el inicio de sesión:
'
' Proceso: Tiene que ser igual a <<AprobarVisita>>
' Codigo: Tiene que ser el código de la visita a aprobar y a de contener valor.
'
'El motivo de hacerlo antes de comprobar sesión es porque si la sesión no está
'abierta, tengo que crear variables de sesión, ya que tengo que redirigir al usuario
'a la página de logeo para una vez autentificado volver a mandarlo aquí con las dos
'variables de url de nuevo, por eso tengo que guardarlas en variables de sesión.
'
'A esta página se llegará desde la página de logeo o desde un email enviado al admon. de la
'Web para confirma la visita
Proceso = request.querystring("proceso")
Codigo = request.querystring("codigo")
'Si las variables no contienen los valores correctos no sigue mostrando un error.
If proceso <> "AprobarVisitas" or isempty(Codigo)=true or isnull(codigo)= true then
Response.Write "El acceso a esta página no es correcto."
Else
'LLegados aquí las variables contienen la información correcta, comprobamos que la sesión esté abierta,
'en caso de que no, redireccionará a la página de logeo y crearemos las variables de sesión.
if Session("SESION")<>"Abierta" THEN
Session("PROCESO") = "AprobarVisitas"
Session("CODIGO") = Codigo
Response.redirect "admin_loginadmin.asp"
Else
'LLegados aquí, estamos logados como administradores y las variables de url contienen la información correcta
'pero hay que comprobar que el código de visita exista.
' Primero mostramos acceso al panel, arriba a la derecha.
%>
<p align="right"><a href="admin_PanelAdmon.asp">Panel de Control</a></p>
<%
Set rs = Server.CreateObject("ADODB.Recordset")
Ssql="Select * From Visitas Where Id=" & Codigo
rs.Open Ssql, Conn,1,2
'Si no encontramos la visita a aprobar...
If rs.eof then
Response.Write "Error al modificar el registro"
Else
Response.Write "<b>La siguiente Visita ha sido aprobada</b><br><br>"
Response.Write "Id..........:" & Rs("Id") & "<br>"
Response.Write "Nombre......:" & Rs("LVnombre") & "<br>"
Response.Write "Correo......:" & Rs("LVcorreoe") & "<br>"
Response.Write "Comentario..:" & Rs("LVcomentario") & "<br>"
Response.Write "V. Diseño...:" & Rs("LVdiseno") & "<br>"
Response.Write "V. Contenido:" & Rs("LVcontenido") & "<br>"
Response.Write "V. Velocidad:" & Rs("LVvelocidad") & "<br>"
Response.Write "Día:" & Rs("LVdiahora") & "<br>"
'Si encontramos la visita, la aprobamos.
Rs("LVaprobado")=-1
Rs.Update
End if
'Y cerramos el RecordSet
CerrarRs
End If
END IF
%>
Y por último aquí está el código de la página de logeo:
Código asp:
Ver originalif ISEMPTY(login) = false then
user=request.form("usuario")
pass=request.form("contrasena")
CrearRs "select * from usuarios where nombre='" & user & "' and csena = '" & pass & "'"
If not Rs.eof then
'creación de sesión
Session("Sesion")="Abierta"
'En la variable de sesión proceso guardamos un valor en caso de que haya que redirigir
'a otra página que no sea el panel de adimistración, si no contiene valor, es que no existe y
'redigiremos al panel de administración.
If Session("PROCESO")="" THEN
response.redirect "admin_paneladmon.asp"
Else
'Un Select para los distintos procesos, en principio trabajaremos con dos variables
'de sesión: Proceso y Código.
Select Case Session("PROCESO")
Case "AprobarVisitas":
'En este caso redirigimos a aprobar visita y para evitar errores
'eliminamos las variables de sesión.
'Pero antes las guardamos y cerramos la conexión con la DB, hay que tener en
'cuenta que cuando la página ejecuta el <<Redirect>> deja de ejecutar el resto del código.
'
Proceso = session("PROCESO")
Codigo = Session("CODIGO")
Session.Contents.Remove("PROCESO")
Session.Contents.Remove("CODIGO")
%>
<!-- #include file="includes/dboff.inc"-->
<%
response.redirect "admin_AprobarVisita.asp?proceso=" & Proceso & "&codigo=" & Codigo
End Select
End If
else
'Advertir de lógin incorrecto.
%><a href="admin_loginadmin.asp">Acceso incorrecto, pulse</a><%
end if
else
' Formulario de petición de usuario y contraseña.