Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Problema para comparar dos campos

Estas en el tema de Problema para comparar dos campos en el foro de Frameworks JS en Foros del Web. Hola a todos. Tengo un problemita para verificar el resultado de un formulario. Veréis, tengo el formulario con verificación Captcha, muestra bien la imagen y ...
  #1 (permalink)  
Antiguo 16/06/2009, 18:21
Avatar de nolose  
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 165
Antigüedad: 16 años, 4 meses
Puntos: 2
Problema para comparar dos campos

Hola a todos.

Tengo un problemita para verificar el resultado de un formulario.

Veréis, tengo el formulario con verificación Captcha, muestra bien la imagen y todo, el problema es que necesito verificar que el campo de la imagen Captcha y el que mete el usuario son 8iguales, para ello quiero llamar a una función en OnClick desde el formulario, que devuelve false en el caso que sean distintas, e impide continuar hasta la página siguiente, o true en el cadso que sean iguales y nos enviara a la página siguiente.

Esta es la función PHP:

<? function valida_imagen()
{
if($_POST['imagen']==$_SESSION['spamkey'])
return true;
else
return false;
}?>


Alguien sabe cómo se hace???. He probado de mil formas y nada… ¡¡Muchas gracias!!!
  #2 (permalink)  
Antiguo 16/06/2009, 18:44
Avatar de gepd  
Fecha de Ingreso: diciembre-2007
Mensajes: 142
Antigüedad: 16 años, 5 meses
Puntos: 6
Respuesta: Problema para comparar dos campos

quizás sea por las llaves o por el php que faltaba al inicio, de todas formas si continúa el problema antes del if imprime las dos variables para verificar si lo que están recibiendo es correcto.

Código PHP:
<?php 

function valida_imagen(){
    if(
$_POST['imagen']==$_SESSION['spamkey']){
        return 
true;
     }else{
         return 
false;
     }
}
?>
Saludos

PD: me queda una duda, ¿ésto debería ir en el subforo de PHP no?
en el caso de que sea JavaScript y sólo quieras imprimir las variables debes porner

Código PHP:
<?php echo $_POST['imagen']; ?> == <?php $_SESSION['spamkey'];
  #3 (permalink)  
Antiguo 16/06/2009, 19:07
Avatar de nolose  
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 165
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Problema para comparar dos campos

El problema no es que la función no vaya bien, el problema es que no sé como llamarla desde el formulario (con el OnClick), porque desde OnClick se supone que solo puedes llamar a funciones javascript, y esto es una funcion php...

:(
  #4 (permalink)  
Antiguo 16/06/2009, 19:10
Avatar de gepd  
Fecha de Ingreso: diciembre-2007
Mensajes: 142
Antigüedad: 16 años, 5 meses
Puntos: 6
Respuesta: Problema para comparar dos campos

pues sería

Código PHP:
onclick="javascript:valida_imagen();" 
saludos
  #5 (permalink)  
Antiguo 16/06/2009, 19:19
Avatar de nolose  
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 165
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Problema para comparar dos campos

No me entra en la funcion.

Te paso algo de codigo a ver...

Código PHP:
<? include_once 'pregunta_spam.php'?>

<html> 
<head>
<title>[ contactar ]</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">



<link rel="stylesheet" type="text/css" href="style.css"> 
<style type="text/css">
<!--
body {
    background-color: #FFFFFF;
    margin-bottom: 40px;
    margin-left: 0px;
    margin-top: 40px;
    margin-right: 0px;
}
-->
</style>

<?php 

function valida_imagen(){

    if(
$_POST['imagen']==$_SESSION['spamkey']){
        return 
true;
     }else{
         return 
false;
     }
}
?> 

</head>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="100%" align="left" valign="top"><form name=form_contacto action="procesa.php" method="post" onSubmit="return valida_imagen(this)">
      <table width="440" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td width="82%" align="left" class="cssnegro" style="padding-top:15px"><? pregunta_spam(); ?></td>
        </tr>
        <tr>
          <td style="padding-top:15px" align="left" class="cssnegro"><span class="cssnegro" style="padding-top:15px">
            <input name="imagen" type="text" id="imagen" size="28" maxlength="60">
            <? echo $_SESSION['spamkey'] ;?></span></td>
        </tr>
        <tr>
          <td style="padding-top:26px" align="left"><input name="contacto" type="submit" value="Enviar" onClick="javascript:valida_imagen();"></td>
        </tr>
      </table>
    </form></td>
  </tr>
</table>
</body>
</html>

Creo que es mas dificil de lo qu parece... pero vamos no se...
  #6 (permalink)  
Antiguo 16/06/2009, 19:48
Avatar de gepd  
Fecha de Ingreso: diciembre-2007
Mensajes: 142
Antigüedad: 16 años, 5 meses
Puntos: 6
Respuesta: Problema para comparar dos campos

El error está en que tu quieres llamar una funcion php con javascript, y eso no se puede hacer... ya que php trabaja del lado del servidor y javscript del lado del cliente
la sólucion debería ser ésta:
Código PHP:
<?php include_once 'pregunta_spam.php'?>
<html> 
<head>
<title>[ contactar ]</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="style.css"> 
<script language="javascript" type="text/javascript">
function valida_imagen(){
    if(document.getElementById('imagen').value != <?php echo $_SESSION['spamkey'];?>){
        alert("La respuesta es incorrecta");
     }
}
</script>
<style type="text/css">
<!--
body {
    background-color: #FFFFFF;
    margin-bottom: 40px;
    margin-left: 0px;
    margin-top: 40px;
    margin-right: 0px;
}
-->
</style>
</head>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="100%" align="left" valign="top"><form name=form_contacto action="procesa.php" method="post" onSubmit="return valida_imagen(this)">
      <table width="440" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td width="82%" align="left" class="cssnegro" style="padding-top:15px"><?php pregunta_spam(); ?></td>
        </tr>
        <tr>
          <td style="padding-top:15px" align="left" class="cssnegro"><span class="cssnegro" style="padding-top:15px">
            <input name="imagen" type="text" id="imagen" size="28" maxlength="60">
            <?php echo $_SESSION['spamkey'] ;?></span></td>
        </tr>
        <tr>
          <td style="padding-top:26px" align="left"><input name="contacto" type="submit" value="Enviar" onClick="javascript:valida_imagen();"></td>
        </tr>
      </table>
    </form></td>
  </tr>
</table>
</body>
</html>
Saludos
  #7 (permalink)  
Antiguo 17/06/2009, 02:16
Avatar de nolose  
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 165
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Problema para comparar dos campos

La idea es buena, sin lugar a duda, pero al implementarlo, resulta que el codigo javascript no me reconoce bien la sentencia php

Código PHP:
<?php echo $_SESSION['spamkey'];?>
es más, si la imprimimos con un alert aparece ¡vacia!



Es decir, si yo esa funcion la ejecuto fuera del <script>, funciona bien y podria meterla en una variable, por ejemplo $codigo, pero no sabria como compararla luego con document.getElementById('imagen').value

¿Se puede?

Algo como:

Código HTML:
if(document.getElementById('imagen').value != $codigo){
Sin usar las etiquetas de php
  #8 (permalink)  
Antiguo 17/06/2009, 08:55
Avatar de nolose  
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 165
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Problema para comparar dos campos

Ya he conseguido solucionarlo!!

La cosa es la siguiente:

Asi quedaria la función:

Código HTML:
<script language="javascript" type="text/javascript">

function valida_imagen(codigo){
	

    if(document.getElementById('imagen').value == document.getElementById('codigo').value)
	{
        alert("La respuesta es correcta");
		return true;
	}
	else
	{
	 	alert("La respuesta es incorrecta");
		return false;
	}
}
</script> 
Y creandome un Input de tipo hidden, que le meto el valor de la funcion php $_SESSION['spamkey']; consigo comparar los dos valores en javascript, consiguiendo un resultado dinamico mucho mas usable.

Código PHP:
<input type="hidden" name="codigo" id="codigo" value="<? echo $_SESSION['spamkey']; ?>">

Ante todo gracias por la ayuda a gepd, y si teneis una idea para mejorar este "apaño", será bienvenida!!
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 18:54.