PHP - Cómo desviar el retorno de la validación PHP al value de una input?

 
Vista:

Cómo desviar el retorno de la validación PHP al value de una input?

Publicado por Evair_Peterson (3 intervenciones) el 28/07/2013 16:16:32
¡Hola a todos!


He leído que por razones de seguridad, lo ideal es que los datos de un formulario se valide dos veces. La primera en el lado del cliente con javascript y una segunda vez en el lado del servidor con PHP. La validación con javascript la tengo (casi) lista. Pero estoy teniendo problemas en la validación con PHP...


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<html>
<head>
<title>Formulario</title>
<script type="text/javascript">
function frmRegisterValidate (){
	var frmRegisterError = document.getElementById("frmRegisterError");
	var frmRegisterUN = document.getElementById("frmRegisterUN").value;
	var frmRegisterPW = document.getElementById("frmRegisterPW").value;
	if (frmRegisterUN == "")
		{
			frmRegisterError.value = "Informe un usuario";
			return false;
		}
	else if (frmRegisterPW == "")
		{
			frmRegisterError.value = "Informe una contrasena";
			return false;
		}
		document.getElementById("frmRegister").submit();
}
</script>
</head>
 
<body>
<form method="post" action="frmRegister.php" id="frmRegister" name="frmRegister" accept-charset="utf-8">
  <label>Nombre de usuario: </label>
  <input type="text" id="frmRegisterUN" value="" name="frmRegisterUN" />
  <br />
  <label>Informe una contrasena: </label>
  <input type="text" value="" id="frmRegisterPW" name="frmRegisterPW">
  <br />
  <label>Se encontro un error: </label>
  <input type="text" value="" id="frmRegisterError" name="frmRegisterError"/>
  <br />
  <input type="button" value="REGISTRAR" id="frmRegister_Button" onClick="frmRegisterValidate ()"/>
</form>
</body>
</html>
 
 
<?php
if (!empty ($_POST['frmRegisterUN']))
{
	$frmRegisterUN = $_POST['frmRegisterUN'];
}
else
{
	$frmRegisterUN = NULL;
	echo "Informe un usuario <br />";
}
if (!empty ($_POST['frmRegisterPW']))
{
	$frmRegisterPW = $_POST['frmRegisterPW'];
}
else
{
	$frmRegisterPW = NULL;
	echo "Informe una contrasena <br />";
}
?>


Esta es una versión muy simplificada del formulario que estoy desarrollando. Como se puede ver, logro hacer la validación de datos en JavaScript y PHP ...

Mi pregunta es: con PHP como puedo hacer para que el mensaje de error se muestre en el value del input llamado frmRegisterError igual que lo que hice con javascript?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder

Cómo desviar el retorno de la validación PHP al value de una input?

Publicado por Martha (48 intervenciones) el 28/07/2013 20:19:24
Javascript se ejecuta en el navegador del usuario en la parte ''cliente'', mientras que PHP lo hace en la parte del servidor.
Por tanto en el fichero que llamas frmRegister.php debes ejecutar la validación del formulario y al final hacer algo así:
1
2
3
4
5
6
7
if($login == $Login && $palpaso == $Palpaso){
		session_start();
        $_SESSION["Nombre"] = $Nombre;
        header ("Location: entrada.php"); //esto para cuando login y password son correctos.
	} else{
		header ("Location: inicio.php?errorusuario=si"); // esto para cuando hay errores
	}

Es decir, creas unas variables que retornan con GET (lo que va después de ?)

Y en el archivo del formulario tener algo así:
1
2
3
4
5
6
7
8
9
10
11
12
13
<form name="formulario_1" action="verifica_usuario.php" method="post" enctype="">
	<fieldset>
	<?php
            // Si el usuario o la contraseña son erroneos vuelve al formulario, pero cambiando el título
                if (isset($_GET["errorusuario"]) == "si"){
                echo "<legend>Usuario o contrase&ntilde;a erroneos, int&eacute;ntalo de nuevo</legend>";
                } elseif (isset($_GET["salir"]) == "si"){
                    echo "<legend>Sesi&oacute;n finalizada. Introducir usuario y contrase&ntilde;a.</legend>";
                }
                else {
                echo "<legend>Introducir login de usuario y contrase&ntilde;a</legend>";
                }
            ?>

Tu podrías generar varias variables, una para el usuario, otra para la contraseña, etc.

En mi caso es que no quiero dar demasiadas pistas, si falla el usuario o la contraseña, solo digo ''se han encontrado errores''. Me parece mas seguro de cara a intrusos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar