Problem with the variable error?

Asked

Viewed 189 times

-3

When I enter the home page in the form appears Notice: Undefined variable: error

require_once( '../../sllapsocial/classes/DB.class.php' );

if( @$_SERVER['REQUEST_METHOD'] == 'POST' ) {
  $nome =      $_POST['nome'];
  $sobrenome = $_POST['sobrenome'];
  $email =     $_POST['email'];
  $senha =     $_POST['senha'];
  $sexo =      $_POST['sexo'];
  $ano =       $_POST['ano'];
  $mes =       $_POST['mes'];
  $dia =       $_POST['dia'];
  $erro =      '';

  if( $nome == '' ) {
     $erro .= 'Qual é o seu nome?<br>';
  } elseif ( strlen( $nome ) < 2 ) {
     $erro .= 'Insira um nome existente<br>';
  }

  if( $sobrenome == '' ) {
     $erro .= 'Qual é o seu sobrenome<br>';
  } elseif( strlen( $sobrenome ) < 2 ) {
     $erro .='Insira um sobrenome existente<br>';
  }

  if( $email == '' ) {
     $erro .= 'Insira seu email';
  } elseif( !filter_var($email, FILTER_VALIDATE_EMAIL) ) {
     $erro .= 'E-mail invalido tente outro<br>';
  }

  if( $senha == ''  OR strlen( $senha ) < 4 ) {
     $erro .= 'Você precisa ter uma senha<br>';
  }

  $verificar = DB::getConn()->prepare( 'SELECT `id` FROM `usuarios` WHERE `email`=?' );
  if( $verificar->execute( array( $email ) ) ) {
     if( $verificar->rowCount()>=0){
        $erro .= 'Este e-mail ja existe<br>';
     } else {
        $erro .= 'Erro interno 1 ao verificar o e-mail<br>';
     }
  } else {
     $erro .= 'Erro interno 2 ao verificar o e-mail<br>';
  }
session_start();

  }

  if($erro === '' ){
     $senha = sha1($senha);
     $nascimento = "$ano-$mes-$dia";
     $inserir = DB::getConn()->prepare( 'INSERT INTO `usuarios` SET `email`=?, `senha`=?, `nome`=?, `sobrenome`=?, `sexo`=?, `nascimento`=?, `cadastro`=NOW()' );
     if( $inserir->execute( array( $email, $senha, $nome, $sobrenome, $sexo, $nascimento ) ) ) {
        {
           header('Location: /');
        }
     }
  }
  die($erro);

1 answer

1


I edited it into your code:

require_once( '../../sllapsocial/classes/DB.class.php' );

if( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
    $nome =$_POST['nome'];
    $sobrenome = $_POST['sobrenome'];
    $email = $_POST['email'];
    $senha = $_POST['senha'];
    $sexo =$_POST['sexo'];
    $ano = $_POST['ano'];
    $mes = $_POST['mes'];
    $dia = $_POST['dia'];
    $erro = array();

    if( $nome == '' ) {
        $erro['nome'] = 'Qual é o seu nome?<br>';
    } elseif ( strlen( $nome ) < 2 ) {
        $erro['nome'] = 'Insira um nome existente<br>';
    }

    if( $sobrenome == '' ) {
        $erro['sobrenome'] = 'Qual é o seu sobrenome<br>';
    } elseif( strlen( $sobrenome ) < 2 ) {
        $erro['sobrenome'] ='Insira um sobrenome existente<br>';
    }

    if( $email == '' ) {
        $erro['email'] = 'Insira seu email';
    } elseif( !filter_var($email, FILTER_VALIDATE_EMAIL) ) {
        $erro['email'] = 'E-mail invalido tente outro<br>';
    }

    if( $senha == ''OR strlen( $senha ) < 4 ) {
        $erro['senha'] = 'Você precisa ter uma senha<br>';
    }


    if( $dia == '' ) {
        $erro['dia'] = 'Qual dia do seu nascimento?<br>';
    }

    if( $mes == '' ) {
        $erro['mes'] = 'Qual mes do seu nascimento?<br>';
    }

    if( $ano == '' ) {
        $erro['ano'] = 'Qual ano do seu nascimento?<br>';
    }


    $verificar = DB::getConn()->prepare( 'SELECT `id` FROM `usuarios` WHERE `email`=?' );
    $verificar->execute( array( $email ) ){
    $row = $verificar->fetch(PDO::FETCH_ASSOC);
    if( $row ){
        $erro['email'] = 'Este e-mail ja existe<br>';
    }


    session_start();


    if(count( $erro ) === 0)
    {
        $senha = sha1($senha);
        $nascimento = "$ano-$mes-$dia";
        $inserir = DB::getConn()->prepare( 'INSERT INTO `usuarios` SET `email`=?, `senha`=?, `nome`=?, `sobrenome`=?, `sexo`=?, `nascimento`=?, `cadastro`=NOW()' );
        if( $inserir->execute( array( $email, $senha, $nome, $sobrenome, $sexo, $nascimento ) ) )
        {
            header('Location: /');
        }
    }

    die($erro);
}

In HTML

<input nome>
<?php if( isset( $erro['nome'] ) ) echo $erro['nome']; ?>

<input sobrenome>
<?php if( isset( $erro['sobrenome'] ) ) echo $erro['sobrenome']; ?>

Repeats for each field. Ideally separate error messages and use PHP to indicate that a field contains an error.

  • Registration form without I put the date of birth is normal?

  • Before that line session_start() you have no date check condition. I added the check. But this nay ensures that the date is real!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.