Foros del Web » Programando para Internet » ASPX (.net) »

Validar Formulario del lado Servidor

Estas en el tema de Validar Formulario del lado Servidor en el foro de ASPX (.net) en Foros del Web. Hola a todos hoy les escribo porque queria saber como se valida correctamente un formulario en asp, soy bastante nuevo en esto siempre trabaje con ...
  #1 (permalink)  
Antiguo 23/07/2012, 08:18
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 8 meses
Puntos: 47
Validar Formulario del lado Servidor

Hola a todos hoy les escribo porque queria saber como se valida correctamente un formulario en asp, soy bastante nuevo en esto siempre trabaje con php y en dicho lenguaje se hace a traves de expresiones regulares pero para asp todos los ejemplos que encontre lo hacen con controles del visual studio que trabajan del lado del cliente por lo cual me resultaria igual que hacerlo con javascript lo cual es inseguro, tambien coloque una funcion en mi script donde recojo las variables enviadas por el formulario pero la pagina tiene errores, como puedo lograr validar los campos? estoy trabajando con lenguaje VB, les dejo el codigo de mi formulario.

Código vb:
Ver original
  1. <%
  2.  
  3. Dim errCount, errString, nombre, apellido, dni, nac_dia, nac_mes, nac_ano, sexo, calle, calleX, calleY, altura, nrocasa, edificio, manzana, parcela, depto, escalera, piso, barrio, lote, telefono, celular, email, solicitud, tipoSolicitud, observaciones, idBarrioSol, calleSol, alturaSol, calleSolX, calleSolY, coordX, coordY
  4.     errCount = 0
  5.     apellido = Request.Form("apellido")
  6.     nombre = Request.Form("nombre")
  7.     dni = Request.Form("dni")
  8.     nac_dia = Request.Form("Nac_Dia")
  9.     nac_mes = Request.Form("Nac_Mes")
  10.     nac_ano = Request.Form("Nac_Ano")
  11.     sexo = Request.Form("sexo")
  12.     calle = Request.Form("calle")
  13.     calleX = Request.Form("calleX")
  14.     calleY = Request.Form("calleY")
  15.     altura = Request.Form("altura")
  16.     nrocasa = Request.Form("nrocasa")
  17.     edificio = Request.Form("edificio")
  18.     manzana = Request.Form("manzana")
  19.     parcela = Request.Form("parcela")
  20.     depto = Request.Form("depto")
  21.     escalera = Request.Form("escalera")
  22.     piso = Request.Form("piso")
  23.     barrio = Request.Form("barrio")
  24.     lote = Request.Form("lote")
  25.     telefono = Request.Form("telefono")
  26.     celular = Request.Form("celular")
  27.     email = Request.Form("email")
  28.     solicitud = Request.Form("solicitud")
  29.     tipoSolicitud = request.form("TipoSolicitud")
  30.     observaciones = Request.Form("observaciones")
  31.     idBarrioSol = Request.Form("idBarrioSol")
  32.     calleSol = Request.Form("idCalleSol")
  33.     alturaSol = Request.Form("alturaSol")
  34.     calleSolX = Request.Form("idCalleSolX")
  35.     calleSolY = Request.Form("idCalleSolY")
  36.     coordX = Request.Form("coordX")
  37.     coordY = Request.Form("coordY")
  38.    
  39.     If nombre <> "" Then
  40.         Response.Write("apellido: " & apellido & "<br>")
  41.         Response.Write("nombrebre: " & nombre & "<br>")
  42.         Response.Write("DNI: " & dni & "<br>")
  43.         Response.Write("Fecha de Nacimiento: " & nac_dia & "/" & nac_mes & "/" & nac_ano & "<br>")
  44.         Response.Write("Sexo: " & sexo & "<br>")
  45.         Response.Write("Idcalle: " & calle & " altura:" & altura & "<br>")
  46.         Response.Write("IdcalleX: " & calleX & "<br>")
  47.         Response.Write("IdcalleY: " & calleY & "<br>")
  48.         Response.Write("Nro. de Casa: " & nrocasa & "<br>")
  49.         Response.Write("Edificio: " & edificio & "<br>")
  50.         Response.Write("Manzana: " & manzana & "<br>")
  51.         Response.Write("Parcela: " & parcela & "<br>")
  52.         Response.Write("Departamento: " & depto & "<br>")
  53.         Response.Write("Escalera: " & escalera & "<br>")
  54.         Response.Write("Piso: " & piso & "<br>")
  55.         Response.Write("IdBarrio: " & barrio & "<br>")
  56.         Response.Write("Lote: " & lote & "<br>")
  57.         Response.Write("Telefono: " & telefono & "<br>")
  58.         Response.Write("Celular: " & celular & "<br>")
  59.         Response.Write("E-Mail: " & email & "<br>")
  60.         Response.Write("Solicitud: " & solicitud & "<br>")
  61.         Response.Write("Tipo de Solicitud: " & tipoSolicitud & "<br>")
  62.         Response.Write("Observaciones: " & observaciones & "<br>")
  63.         Response.Write("ID Barrio de Solicitud: " & idBarrioSol & "<br>")
  64.         Response.Write("IdcalleSol: " & calleSol & " altura:" & alturaSol & "<br>")
  65.         Response.Write("IdCalleSolX: " & calleSolX & "<br>")
  66.         Response.Write("IdCalleSolY: " & calleSolY & "<br>")
  67.         Response.Write("Coordenada X: " & coordX & "<br>")
  68.         Response.Write("Coordenada Y: " & coordY & "<br>")
  69.     End If
  70.    
  71.    
  72. %>

Saludos y desde ya les agradecere su ayuda.
  #2 (permalink)  
Antiguo 23/07/2012, 14:27
Avatar de cristiantorres  
Fecha de Ingreso: marzo-2012
Mensajes: 383
Antigüedad: 12 años, 8 meses
Puntos: 61
Respuesta: Validar Formulario del lado Servidor

Los controles de visual estudio trabajan al lado del cliente? estas equivocado los controles asp.net trabajan al lado del servidor.

Para tu caso asp.net cuenta con los controles de validación que sirven justamente para eso validar los datos ingresados por el usuario.

Ve este articulo.
Controles de Validación en Asp .NET
__________________
Visita mi Blog C#, vb.net, asp.net, sql, java y mas...
Blog Cristian Torres
  #3 (permalink)  
Antiguo 24/07/2012, 06:12
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 8 meses
Puntos: 47
Respuesta: Validar Formulario del lado Servidor

Hola cristian gracias por contestar, de hecho sigo con el mismo problema en efecto estos controles no trabajan del lado del servidor y es lo mismo que validar con javascript, porque si yo escribo en la barra de direcciones javascript:document.forms[0].submit(); el formulario no pasa por el proceso de validacion, he puesto los controles que me mostraste y si haces el submit con el boton submit funciona todo perfecto pero si alguien lo hace como te digo por la barra de direcciones no se valida nada por eso es que queria hacer la validacion al recibir los datos del formulario.

En php existen funciones que trabajan con expresiones regulares como preg_match donde se le pasa por parametro una expresion regular y una cadena y esta la valida existe algo asi para asp?

Desde ya muchas gracias.
  #4 (permalink)  
Antiguo 24/07/2012, 14:08
Avatar de cgonzalezm  
Fecha de Ingreso: junio-2012
Mensajes: 55
Antigüedad: 12 años, 5 meses
Puntos: 13
Respuesta: Validar Formulario del lado Servidor

Los controles de .NET sí pueden trabajan del lado del servidor, o mejor dicho, en ambas.

Si quieres realizar validaciones puedes usar los controles de validación que lo que hacen es crear un simple control que escribe javascript en el navegador del cliente.

También puedes ejecutar un javascript desde el Load de la página.

Sólo debes eliminar la mentalidad de PHP, con .NET no es necesario hacer un JQuery Ajax, o escribir Javascript por cualquier cosa ya que .NET Hace todo eso de forma mucho más limpia. Si tienes una duda más específica menciónalo por favor.
  #5 (permalink)  
Antiguo 24/07/2012, 15:46
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 8 meses
Puntos: 47
Respuesta: Validar Formulario del lado Servidor

Si he notado que es muy comodo hacer las validaciones con los controles del visual studio en modo diseño mi problema es que si un usuario escribe javascript:document.getElementById("form").submit( ); en la barra de direcciones el formulario es enviado omitiendo los controles de validacion de asp. Como puedo lograr que esto no suceda?, yo he logrado colocar los controles y funcionan perfecto al clickear el boton submit pero si algun "vivo" hace el submit desde la barra de direcciones la validacion es omitida.

Gracias por contestar!!
  #6 (permalink)  
Antiguo 24/07/2012, 16:13
Avatar de cristiantorres  
Fecha de Ingreso: marzo-2012
Mensajes: 383
Antigüedad: 12 años, 8 meses
Puntos: 61
Respuesta: Validar Formulario del lado Servidor

Eso lo puedes controlar desde el código de tu webform.

Usa los controles de validación y luego tendrías que añadir un poco de código en el evento click del boton

Prueba algo así.
Código vb.net:
Ver original
  1. If (Page.IsValid) Then
  2.   'TU CÓDIGO AQUÍ
  3. Else
  4.    Response.Write("TIENE QUE COMPLETAR LOS DATOS")
  5. End If

Con la propiedad Page.IsValid compruebas que la validación de la pagina se hizo correctamente creo que eso te puede funcionar.
__________________
Visita mi Blog C#, vb.net, asp.net, sql, java y mas...
Blog Cristian Torres
  #7 (permalink)  
Antiguo 25/07/2012, 06:39
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 8 meses
Puntos: 47
Respuesta: Validar Formulario del lado Servidor

Hola cristian gracias por contestar de nuevo, justamente mi problema es que si algun usuario con aires de "hacker" je no presiona el boton para hacer el submit, sino que escribe javascript:document.forms[0].submit(); o cualquier otra forma de hacer un submit de formularios con javascript la validacion es pasada por alto y todos los datos llegan a mi otra pagina asp donde recojo los datos digamos que es lo mismo que hacer la validacion por javascript lo que necesito es o algun comando de asp que no le permita al usuario hacer el submit via javascript o alguna funcion que valide en mi pagina donde recibo los datos que seria la validacion del lado del servidor, porque aunque los controles de asp sean runat server hasta el momento los he notado igual que los script de validacion de javascript.

Gracias de nuevo y perdon si soy muy pesado es que soy bastante nuevo con esto de asp.
  #8 (permalink)  
Antiguo 25/07/2012, 12:25
Avatar de cristiantorres  
Fecha de Ingreso: marzo-2012
Mensajes: 383
Antigüedad: 12 años, 8 meses
Puntos: 61
Respuesta: Validar Formulario del lado Servidor

Ahh bueno creo que ya te entendí, entonces los datos este formulario de validación los pasas otro formulario.

Imaginate tienes las paginas Default.aspx(donde haces la validación) y Default2.aspx(donde recibes los datos)

Entonces lo que tendrías que hacer es validar en el formulario que recibes los datos que no lleguen vacíos.

Una manera de hacerlo seria así(nose como pasas los datos asi que usare crosspage)

En tu formulario de validación(Default.aspx) pon el siguiente código.
Código vb.net:
Ver original
  1. Public ReadOnly Property Nombre() As String
  2.     Get
  3.         Return TextBox1.Text
  4.     End Get
  5. End Property
  6.  
  7. Public ReadOnly Property Apellido() As String
  8.     Get
  9.         Return TextBox2.Text
  10.     End Get
  11. End Property
Por cada dato que tengas create una propiedad.

Ahora en el formulario que recibe los datos(Default2.aspx) agrega esto en el código asp.net después de la primera linea osea antes de la etiqueta DOCTYPE
Código ASP:
Ver original
  1. <%@ PreviousPageType VirtualPath="~/Default.aspx" %>
Lo que haces es especificar de que pagina recibirás los datos en este caso Default.aspx

Ahora siempre en el formulario que recibe los datos osea Default2.aspx en el evento load tendrás esto.
Código vb.net:
Ver original
  1. Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  2.     If Page.PreviousPage <> Nothing Then
  3.         Label1.Text = Me.PreviousPage.Nombre
  4.         Label2.Text = Me.PreviousPage.Apellido
  5.     Else
  6.        Response.Redirect("Default.aspx")
  7.     End If
  8.  
  9. End Sub
Aqui es donde haces lo que tu quieres verificas si los datos que recibes del formulario de validacion no están vacíos, si no lo están en este caso se muestran en un label en tu caso haces lo que tengas que hacer, y si los datos que recibes están vacíos lo redireccionas al formulario de validación.

Eso creo que es lo que buscas pruebalo y comentas
__________________
Visita mi Blog C#, vb.net, asp.net, sql, java y mas...
Blog Cristian Torres
  #9 (permalink)  
Antiguo 27/07/2012, 07:27
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 8 meses
Puntos: 47
Respuesta: Validar Formulario del lado Servidor

Pues sigo teniendo las mismas falencias de seguridad, miren hagamoslo mas simple supongamos que yo tengo 1 sola pagina default.aspx y en ella tengo este codigo:

Código vb:
Ver original
  1. Dim nombre, email, dni
  2.  
  3. set nombre = "ped28ro"
  4. set email = "correo@hotmailcom"
  5. set dni = "389is271"

Supongamos que yo tengo estas 3 variables y lo que necesito hacer es lo siguiente:

1 - verificar que la variable nombre no contenga numeros
2 - verificar que el email este formateado correctamente con su arroba su . y el tipo de extension tenga 3 caracteres.
3 - verificar que el dni tenga 8 caracteres y todos sean numeros.

Quizas asi sea mas facil que me ayuden y yo hago todo el resto creo que con esta forma quizas sea mas facil entender que es lo que necesito, MUCHAS GRACIAS!!!

Etiquetas: asp, formulario, lado, servidor
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 14:42.