Hola
Sigo aprendiendo php poco a poco
Estoy intentando hacer un formulario para dar de alta a un usuario que pida el nombre, el correo y la contraseña.
Y que si el nombre tiene caracteres incorrectos como #, $, &, vuelva a pedir el nombre.
Quiero conseguir que los otros datos ya introducidos en el formulario no tengan que ser escritos de nuevo, sino que se presenten ya como introducidos.
Lo hago utilizando variables de sesion.
Y curiosamente me aparece un "precioso" rectangulito azul en donde se pide la contraseña, que es el campo por el que he empezado a poner los datos que ya se han introducido.
Esto sale desde el principio, es la primera ejecución del pequeño programa. Todavía no he escrito ninguna vez la contraseña. Que esta puesta como campo texto, prefiero que no salga oculta.
Y también sale si al ser erroneo el nombre la comprobación me regresa al formulario.
Os pongo los códigos que estoy utilizando, a ver si alguien me puede ayudar, porque por más que lo miro y llevo un par de horas atascado aquí, no se me ocurre por qué puede ser.
autentificacion11.php (presenta el formulario)
Código PHP:
<html>
<head>
<title>Comprobar variable formulario y poner valores resto usando variables de sesion</title>
</head>
<body>
<form action="autentificacion11b.php" method="post">
Escriba su nombre (Solo letras A-z,a-z, numeros 0-9):
<input type="text" name="nombre">
<br>
Escriba su correo electrónico:
<input type="text" name="mail"><br>
Escriba su contraseña (Solo letras A-z,a-z, numeros 0-9):
<input type="text" name="contrasena" size="8" value="
<?php
session_start();
if(isset($_SESSION['contrasena'])){
if(!empty($_SESSION['contrasena'])){
echo trim($_SESSION['contrasena']);
unset($_SESSION['contrasena']);
}
}
?>"
>
<br>
<input type="submit" value="Registrar">
</form>
</body>
</html>
autentificacion11b.php (que hace la comprobación y si hay error regresa al formulario)
Código PHP:
<html>
<head>
<title>Comprobar variable formulario y poner valores resto usando variables de sesion</title>
</head>
<body>
<?php
function comprobar_nombre_usuario($nombre_usu)
{
if (preg_match('/^[A-Za-zÀÁÈÉÒÓÙÚàáèéìíòóùúüÑñ_\-\.\,\s\d]*$/is', $nombre_usu))
{ return true; }
else { return false; }
}
if (comprobar_nombre_usuario($_REQUEST['nombre']))
{
echo "Nombre de usuario correcto";
}
else
{
session_start();
$_SESSION['contrasena']=trim($_REQUEST['contrasena']);
header("Location: autentificacion11.php");
}
?>
<br>
<a href="autentificacion11.php">retornar</a>
</body>
</html>