Foros del Web » Programación para mayores de 30 ;) » Java »

Introduciendo un captcha

Estas en el tema de Introduciendo un captcha en el foro de Java en Foros del Web. Hola, recientemente estoy introduciendo un captcha en un formulario y en vez de enviar los datos al servlet que valida el resto de campos, porque ...
  #1 (permalink)  
Antiguo 23/05/2011, 02:44
 
Fecha de Ingreso: febrero-2011
Mensajes: 11
Antigüedad: 11 años, 4 meses
Puntos: 0
Introduciendo un captcha

Hola, recientemente estoy introduciendo un captcha en un formulario y en vez de enviar los datos al servlet que valida el resto de campos, porque no solo tendria que tocar ese servlet al querer meter mi validacion nueva si no que tendria que cambiar cosas de muchos otros sitios
asique pense en en el form hacer una validacion cuando le se da a submit vuelves a la pagina comprobandolo, despues de la comprobacion quiero hacer que si esta correcto, envia la informacion al servlet para que haga su funcion pero no se como hacerlo
Código:
<%
    boolean problem = (request.getParameter("feedback.problem") != null);
    String email = request.getParameter("email");

    if (email == null || email.equals(""))
    {
        email = (String) request.getAttribute("authenticated.email");
    }

    if (email == null)
    {
        email = "";
    }

    String feedback = request.getParameter("feedback");
    if (feedback == null)
    {
        feedback = "";
    }

    String fromPage = request.getParameter("fromPage");
    if (fromPage == null)
    {
        fromPage = "";
    }


   String msg="";
String secHash ="";
String originalHash="";
String seccode = request.getParameter ("code");
System.out.println("Valor caja texto : "+seccode);
if(!(seccode == null || seccode.equals("null"))){
  originalHash=(String)session.getAttribute("captcha");
  System.out.println("Valor de captcha sesion : "+originalHash);
  secHash = seccode;

 if(originalHash.equals(secHash)){
 %>msg="<span style="color: green;">Correcto</span> ";<%
 }else{
 %>msg="<span style="color: red;">Error</span> ";<%
 }
}
%>

<dspace:layout titlekey="jsp.feedback.form.title">
    <%-- <h1>Feedback Form</h1> --%>
    <h1><fmt:message key="jsp.feedback.form.title"/></h1>

    <%-- <p>Thanks for taking the time to share your feedback about the
    DSpace system. Your comments are appreciated!</p> --%>
    <p><fmt:message key="jsp.feedback.form.text1"/></p>

<%
    if (problem)
    {
%>
        <%-- <p><strong>Please fill out all of the information below.</strong></p> --%>
        <p><strong><fmt:message key="jsp.feedback.form.text2"/></strong></p>
<%
    }
%>

    <form action="form.jsp" method="post">
        <center>
            <table>
                <tr>
                    <td class="submitFormLabel"><label for="temail"><fmt:message key="jsp.feedback.form.email"/></label></td>
                    <td><input type="text" name="email" id="temail" size="50" value="<%=StringEscapeUtils.escapeHtml(email)%>" /></td>
                </tr>
                <tr>
                    <td class="submitFormLabel"><label for="tfeedback"><fmt:message key="jsp.feedback.form.comment"/></label></td>
                    <td><textarea name="feedback" id="tfeedback" rows="6" cols="50"><%=StringEscapeUtils.escapeHtml(feedback)%></textarea><br><br>
                        
                    </td>
                    <td>
                        <img alt="imagenCaptcha" src="cap3.jsp" id="captcha">
                        <input name="code" size="20" type="text"/><%=msg%>
                        

                    </td>
                </tr>
                <tr>
                    <td colspan="2" align="center">
                    <input type="submit" name="submit" value="<fmt:message key="jsp.feedback.form.send"/>" />
                    </td>
                </tr>
            </table>
        </center>
    </form>

</dspace:layout>
  #2 (permalink)  
Antiguo 23/05/2011, 09:22
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 14 años
Puntos: 416
Respuesta: Introduciendo un captcha

Cita:
Hola, recientemente estoy introduciendo un captcha en un formulario y en vez de enviar los datos al servlet que valida el resto de campos, porque no solo tendria que tocar ese servlet al querer meter mi validacion nueva si no que tendria que cambiar cosas de muchos otros sitios
asique pense en en el form hacer una validacion cuando le se da a submit vuelves a la pagina comprobandolo, despues de la comprobacion quiero hacer que si esta correcto, envia la informacion al servlet para que haga su funcion pero no se como hacerlo
No se si entendí bien lo que deseas, pero creo que para tu consulta seria mejor hacer un FORWARD ya que no deseas hacer ningun tipo de cambio en el servlet de la validación

Haces lo siguiente:
Compruebas el captcha en servlet B
Si se introdujo exitosamente pasale el request a servlet A (que se encarga de la validacion) usando forward:
request.getRequestDispatcher("ServletA").forward(r equest, response);
En caso de que no se introduzca correctamente los datos del captcha, puedes mandar al formulario nuevamente usando redirect y pasando algun tipo de variable indicando el mensaje de error.

Asi no tocas en lo absoluto a Servlet A.
Eso si, es posible pasarle por alto a Servlet B, que es el que procesa el captcha.
  #3 (permalink)  
Antiguo 26/05/2011, 01:43
 
Fecha de Ingreso: febrero-2011
Mensajes: 11
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Introduciendo un captcha

esto seria lo que dices????
getRequestDispatcher("<%=request.getContextPath()% >/feedback"<%).forward(request, response);

o esto
getRequestDispatcher("ruta real de servlet"<%).forward(request, response);
  #4 (permalink)  
Antiguo 26/05/2011, 02:36
 
Fecha de Ingreso: febrero-2011
Mensajes: 11
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Introduciendo un captcha

porque esto no me compila

getRequestDispatcher(request.getContextPath()+"/feedback").forward(request, response);

Etiquetas: captcha, jsp, jsp-servlets, servlet
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 16:09.