Tengo un formulario de registro de usuarios.
Y los problemas que tengo con este formulario son al momento de validar, es que necesito validar email mediante expresión regular; y comparar las claves y los problemas que me presentan son:
-en la validación de email, si no relleno todos los campos del formulario y escribo el email incorrecto, si me avisa que escribí mal email.
Pero si lleno todos los campos y escribo email incorrecto lo ignora e inserta los datos en la tabla sin importarle que el email este mal escrito.
-En la comparación de claves si escribo las claves incorrectas y aunque ya exista usuario en la tabla me inserta el usuario repetido.
Este es mi código haber que le solución se le encuentra:
Código PHP:
Ver original<?php
if (!$_POST){
?>
<form action="" method="post" enctype="multipart/form-data" id="form1" name="form1">
<br>
Usuario: <input type="text" name="usuario" size="30">
<br>
contraseña: <input type="password" name="password" size="30">
<br>
Repetir contraseña: <input type="password" name="password2" size="30">
<br>
Email: <input type="text" name="email" size="30">
<br>
Telefono: <input type="text" name="telefono" size=14 >
<br>
<input type="submit" value="registrarse">
</form>
<?
}//aqui termina el if del formulario de la autollamada
else{
$usuario = trim($_POST['usuario']); $password= $_POST["password"];
$password2= $_POST["password2"];
$email= $_POST["email"];
$telefono= $_POST["telefono"];
require_once("conexion.php");
if($_POST['password'] == $_POST['password2'])
{ echo "Iguales"; }
else{
echo "Alguna es diferente"; }
// chequeas si el usuario esta en la bd
$sql="SELECT * FROM usuarios WHERE usuario='".$usuario."'";
// entonces dices
// aqui el codigo de ingreso del usuario y datos
} else {
header("Location: registrarse.php"); // en caso de que te de problemas la funcion header utilizas a javascript
print "<script>window.location.href='registrarse.php';</script>";
}
//validar que se haya escrito bien email con expresion regular
'^[a-z0-9]+([\.]?[a-z0-9_-]+)*@'.// usuario
'[a-z0-9]+([\.-]+[a-z0-9]+)*\.[a-z]{2,}$', $email)){
echo "correo invalido";
}
//funcion que checa si campos estan vacios
function check_formText($post)
{
//Se inicia en 0
$contador=0;
//Recorremos la variable que nos fue enviada --> $_POST, $_GET, etc
foreach($post as $validar)
{
//Se eliminan espacios en blanco al inicio y fin
$validar = trim($validar); //Si esta vacio
{
//Se suman errores a la variable contador asi sabes si lleno algo en cada campo
$contador = $contador + 1;
}
}
//Solo retornamos el total de campos no llenados
return $contador;
}
//y desde aqui se usa la funcion
if(check_formText($_POST))
{
echo 'Porfavor llene bien tus campos:
<form action="" method="post" enctype="multipart/form-data" id="form1" name="form1">
<br>
Usuario:<input type="text" name="usuario" value="'.$usuario.'"/>
<br>
Contraseña:<input type="password" name="password" value="'.$password.'"/>
<br>
Repetir contraseña:<input type="password" name="password" value="'.$password2.'"/>
<br>
Email: <input type="text" name="email" value="'.$email.'"/>
<br>
Telefono: <input type="text" name="telefono" value="'.$telefono.'"/>
<br>
<input type="submit" name="button" id="button" value="registrarse" />
</form>
';
}
else
{
echo"Te has registrado";
require_once("conexion.php");
//AHORA GUARDAMOS EL ARCHVO EN UNA BASE DE DATOS.
mysql_select_db("base_datos",$conexion) OR
DIE ("Error: Imposible Conectar");//seleccionamos la base de datos
$sql ="insert into usuarios values (null,'$usuario','$password','$password2','$email','$telefono')";/*camiarle aki*/
}
}
?>