Activar cuenta de usuario por mail

Tengo un problemilla que no se como resoverlo por que en estos casos cuanto más miras menos ves...
Estoy haciendo un registro de usuarios con validación por mail de la cuenta. La primera parte, registro de los datos en una tabla "temporal" hasta que el usuario confirme su cuenta lo hace bien así como enviar un correo con el enlace de activación..
El problema viene en el apartado de activación... Un vez que el usuario pulsa sobre el enlace me devuelve a la página activar.php (el código es el que pongo a continuación)
<?php
//Recogemos el valor pasado por URL
$clave = $_GET['id'];
//Comprobamos si el usuario que ha activado esta dirección existe en la base de datos
//Y recogemos de la base de datos usuarios_temp los campos para insertar en la base de datos USUARIOS
if($clave <> ""){
        /*Declaramos las variables $servidor, $usuario,$password y
          $sdb (base de datos). En mi caso para Localhost tengo lo siguiente:*/
        $servidor = "";
        $usuario = "";
        $password = "";
        $sdb = "";
        $ienlace=mysql_connect($servidor,$usuario,$password) or die(mysql_error());
        mysql_select_db($sdb,$ienlace);
        $sql = "select * from usuarios_temp where txt_Activ = '$clave'";
        $resultado=mysql_query($sql,$ienlace) or die (mysql_error());
        while ($registro = mysql_fetch_array($resultado)) {
            $nombre = $registro['nombre'];
            $usuario = $registro['usuarioTemp'];
            $password = $registro['password'];
            $email = $registro['email'];
            $profesion = $registro['profesion'];
            $lugar = $registro['lugar'];
        } // fin del bucle de ordenes
        mysql_free_result($resultado); // liberamos los registros de la tabla
        mysql_close(); // cerramos la conexion con la base de datos
       (aqui es donde da el error que pongo en el final del mensaje...) if(insertarRegiAct2($nombre, $usuario, $password, $email, $profesion,$lugar)){
            echo "<h1>tu nombre es:'".$nombre."'</h1>";
            //ENVIAR MAIL DE QUE LA CUENTA HA SIDO ACTIVADA
            //envioMail_regis();
        }            
        else
            echo "<h1 style=color:red>Tu cuenta NO ha sido activada correctamente</h1>";
}else
echo "<h2>Los datos proporcionados no son los correctos.</h2>";
function insertarRegiAct2($nombre_, $usuario_, $password1_, $email_, $profesion_, $lugar_){
        /*declaramos las variables $servidor, $usuario,$password y
          $sdb (base de datos). En mi caso para Localhost tengo lo siguiente:*/
        $servidor = "localhost";
        $usuario = "root";
        $password = "calabacin";
        $sdb = "produccion";
        $ilink4=mysql_connect($servidor,$usuario,$password) or die(mysql_error());
        mysql_select_db($sdb,$ilink4);
        $inserta= "insert into usuarios (nombre,usuario,password,email,profesion, lugar,fecAlta) values ('$nombre','$usuario,'$password','$email','$profesion','$lugar',CURDATE())";
        $resultado4=mysql_query($inserta,$ilink4) or die (mysql_error());
        if (!$resultado4)
            return false;
        else
            return true;
}
?>
El problema es que al realizar la inserción de los datos en la base tabla de usuario, me da el siguiente error:
Fatal error: Call to undefined function insertarRegiAct2() in/  ...../activar.php on line 32
Y no me registra ni muestra nada con lo cual no puedo mandar email de confirmación de validación...
Por favor,¿podéis ayudarme a resolver este error?

2

2 Respuestas

16.450 pts. Programador/Consultor Web para empresas y profesionales...

Es evidente que el código es copiado. El problema, como dice el compañero está claro, la función insertarRegiAct2() no ha sido definida, en efecto, esta función es llamada antes de su declaración, lo cuál causa e problema, ya que php se ejecuta línea a línea (interpretado).

Sólo es necesario cortar la declaración de la función y colocarla en la parte superior del código, antes de recoger las variables por $_GET. Suele ser buena costumbre definir estas funciones en archivos externos, tras esto sólo debemos añadir include("funciones.php) y así evitamos este tipo de problema.

1.600 pts.

No entiendo cual es tu duda... El error es claro: Call to undefined function insertarRegiAct2() in/  .../activar.php on line 32

Fíjate en la línea 32 del activar.php. Te está diciendo que no puede llamar a una función si no está definida previamente. ¿El código lo escribiste vos o es copiado?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas