¿En qué me estoy equivocando?

  • Autor Autor Jackass89
  • Fecha de inicio Fecha de inicio
J

Jackass89

Beta
Programador
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Betas!!, necesito de su ayuda. Estoy haciendo la parte de "verificar que las contraseñas coincidan" de un formulario de registro y tengo este error:

el error:
Insertar CODE, HTML o PHP:
Parse error: syntax error, unexpected 'elseif' (T_ELSEIF) in C:\xampp\htdocs\Uru\registro.php on line 12
el código:
Insertar CODE, HTML o PHP:
	elseif($_POST['contrasena'] != $_POST['contrasena_conf']) 
		{ // comprobamos que las contraseñas ingresadas coincidan 		
            echo "Las contraseñas ingresadas no coinciden. <a href='javascript:history.back();'>Reintentar</a>"; 			
        }

Pruebo de todo pero no logro arreglarlo 🙁
 
¿Estás seguro que antes de "elseif" hay un "if"?

PHP:
if(xxx) {
}
elseif(xxx) {
}
 
Me dí cuenta que por ahí me faltaba un ";", ahora sucede lo siguiente:
Insertar CODE, HTML o PHP:
Notice: Undefined index: contrasena in C:\xampp\htdocs\Uru\registro.php on line 12
Notice: Undefined index: contrasena_conf in C:\xampp\htdocs\Uru\registro.php on line 12
Fatal error: Call to undefined function valida_email() in C:\xampp\htdocs\Uru\registro.php on line 17

código:
Insertar CODE, HTML o PHP:
<?php 
    include('acceso_db.php'); // incluimos el archivo de conexión a la Base de Datos 
    if(isset($_POST['enviar'])) { // comprobamos que se han enviado los datos desde el formulario 

        function valida_email($correo) 
		{ 
           // if (eregi("^[_.0-9a-z-]+@[0-9a-z._-]+.[a-z]{2,4}$", $correo)) return true; 
		  if ( preg_match('/^[A-Za-z0-9-_.+%]+@[A-Za-z0-9-.]+\.[A-Za-z]{2,4}$/', $correo)) return true; 
            else return false; 
        } 
		
		}elseif($_POST['contrasena'] != $_POST['contrasena_conf']) 
		{ 	
            echo "Las contraseñas ingresadas no coinciden. <a href='javascript:history.back();'>Reintentar</a>"; 			
        }
		
		elseif(!valida_email($_POST['mailpersona'])){ 
		 
            echo "El Email ingresado no es válido. <a href='javascript:history.back();'>Reintentar</a>";
        }else {..............
....
...

¿Estás seguro que antes de "elseif" hay un "if"?

PHP:
if(xxx) {
}
elseif(xxx) {
}
 
Mmm, lo ordené para que sea más legible:

PHP:
include('acceso_db.php'); // incluimos el archivo de conexión a la Base de Datos 

function valida_email($correo) {
	return preg_match('/^[A-Za-z0-9-_.+%]+@[A-Za-z0-9-.]+\.[A-Za-z]{2,4}$/', $correo);
}

if(isset($_POST['enviar'], $_POST['contrasena'], $_POST['contrasena_conf'], $_POST['mailpersona'])) {
	if($_POST['contrasena'] == $_POST['contrasena_conf']) {
		if(valida_email($_POST['mailpersona'])) {
			// Las contraseñas coinciden y el email es válido
			// Ejecutar funciones
		}
		else echo "El Email ingresado no es válido. <a href='javascript:history.back();'>Reintentar</a>";
	}
	else echo "Las contraseñas ingresadas no coinciden. <a href='javascript:history.back();'>Reintentar</a>";
}

Hay una función para validar emails: PHP: filter_var - Manual
 
Si estas usando el mismo metodo para enviar los datos, en el form de html y de este lado de php?
 
No se si ya lo solucionaste, pero con este codigo no deberias tener problemas :encouragement:


PHP:
<?php


include('acceso_db.php'); // incluimos el archivo de conexión a la Base de Datos 

function valida_email($correo) {
    return preg_match('/^[A-Za-z0-9-_.+%]+@[A-Za-z0-9-.]+\.[A-Za-z]{2,4}$/', $correo);
}

function limpiar($val) { 
    $val = htmlentities(strip_tags($val), ENT_QUOTES, 'UTF-8');
    return $val;
} 
$enviar = empty($_POST['enviar']) ? NULL : limpiar($_POST['enviar']);
$contrasena = empty($_POST['contrasena']) ? NULL : limpiar($_POST['contrasena']);
$contrasena_conf = empty($_POST['contrasena_conf']) ? NULL : limpiar($_POST['contrasena_conf']);
$mailpersona =  empty($_POST['mailpersona']) ? NULL : limpiar($_POST['mailpersona']);



if(isset($enviar) && !empty($enviar) && isset($contrasena) && !empty($contrasena) && isset($contrasena_conf) && !empty($contrasena_conf) && isset($mailpersona) && !empty($mailpersona)) {
    if($contrasena == $contrasena_conf) {
        if(valida_email($mailpersona)) {
            // Las contraseñas coinciden y el email es válido
            // Ejecutar funciones
        }
        else echo "El Email ingresado no es válido. <a href='javascript:history.back();'>Reintentar</a>";
    }
    else echo "Las contraseñas ingresadas no coinciden. <a href='javascript:history.back();'>Reintentar</a>";
} else{
	echo "Por favor completa todos los campos";
}
 
Última edición:
Atrás
Arriba