Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Renato de Araujo

"Call Stack #TimeMemoryFunctionLocation" no formulario de cada

Recommended Posts

Bom pessoal, estou criando um projetinho e estou com dificuldades de encontrar a solução para o erro que apareçe na tela...

 

eu já coloquei esse código para verificar outros erros e não apareceu nada.

ini_set( 'display_errors', true );
error_reporting( E_ALL );

 

O erro é o seguinte:

Undefined variable: nome in C:\wamp\www\projeto\index.php on line 85 Call Stack #TimeMemoryFunctionLocation 10.0014711600{main}( )..\index.php:0 " /> 

 

também aparecendo na caixa de texto:

<br /><font size='1'><table class='xdebug-error' dir='ltr' border='1' cellspacing='0' cellpadding='1'><tr><th align='left' bgcolor='#f57900' colspan=

 

Segue o código:

<?php

<!-- Display de erros -->
ini_set( 'display_errors', true );
error_reporting( E_ALL );

<!-- Sessão do captcha -->
session_start();
<!-- Classe de conexão -->
include('class/Connection.class.php');

if (isset($_SERVER['REQUEST_METHOD']) AND $_SERVER['REQUEST_METHOD'] == 'POST') {

   extract($_POST);

   if ($nome == '' OR strlen($nome) < 4) {
       echo 'Todos os campos devem ser preenchidos';
   } elseif ($email == '') {
       echo 'Todos os campos devem ser preenchidos';
   } elseif (!preg_match("/^([[:alnum:]_.-]){3,}@([[:lower:][:digit:]_.-]{3,})(\.[[:lower:]]{2,3})(\.[[:lower:]]{2})?$/", $email)) {
       echo 'O e-mail digitado não é válido.';
   } else {
       $verificar = Connection::getConnection()->prepare("SELECT id_usuario FROM usuarios WHERE email = ?");
       if ($verificar->execute(array($email))) {
           if ($verificar->rowCount() >= 1) {
               echo 'Este email já está cadastrado em nosso sistema';
           } elseif ($senha == '' OR strlen($senha) < 4) {
               echo 'Todos os campos devem ser preenchidos';
           } elseif ($dia == 'Dia') {
               echo 'Escolha um dia válido para a data de nascimento';
           } elseif ($mes == 'Mes') {
               echo 'Escolha um mês válido para a data de nascimento';
           } elseif ($ano == 'Ano') {
               echo 'Escolha um ano válido para a data de nascimento';
           } elseif (strtolower($captcha) <> strtolower($_SESSION['captchaCadastro'])) {
               echo 'O código digitado não é correspondente com o da imagem';
           } else {

               $Isenha = sha1($senha);
               $dt_nascimento = "$ano-$mes-$dia";
               $inserir = Connection::getConnection()->prepare("INSERT INTO usuarios SET nome = ?, email = ?, senha = ?, sexo = ?, dt_nascimento = ?, dt_cadastro = NOW()");
               if ($inserir->execute(array($nome, $email, $Isenha, $sexo, $dt_nascimento))) {
                   header("Location: privado.php");
               }
           }
       }
   }
}
?>



<!DOCTYPE html>
<html>
   <head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
       <link href="template/css/commom.css" rel="stylesheet" type="text/css" />
       <link href="template/css/commom-login.css" rel="stylesheet" type="text/css" />
       <script type="text/javascript" src="lib/js/jQuery-1.7.1-min.js"></script>
       <script type="text/javascript">
           $(function(){
               $('#troca_imagem').click(function(){
                   $('#img_captcha').load('captcha/imagem_seguranca.php');
               });
           });
       </script>
       <title>cadastro</title>
   </head>
   <body>
       <div id="pg">
           <header>
               <div id="wrapper">
                   <img src="template/images/logo/logo-1.png" width="246px" height="115px" />
               </div>
           </header>

           <div id="content">
               <div id="wrapper">
                   <div id="box-left">
                       <h1>Cadastre-se</h1>
                       <h4>Ao prosseguir com o cadastro, você estará automaticamente aceitando os <a href="termos.php">termos de compromisso</a> do site.</h4>


                       <form name="cadastro" action="" method="post" id="form-cadastro">

                           <span>Nome completo</span> <br/>
                           <input type="text" name="nome" value="<?php echo $nome ?>" />
                           <br/><br/>
                           <span>E-mail</span> <br/>
                           <input type="text" name="email" value="<?php echo $email ?>" />
                           <br/><br/>
                           <span>Senha</span> <br/>
                           <input type="password" name="senha" value="<?php echo $senha ?>" />
                           <br/><br/>
                           <span>Gênero</span> <br/>
                           <select class="genero" name="sexo">
                               <option value="Masculino">Masculino</option>
                               <option value="Feminino">Feminino</option>
                           </select>
                           <br/><br/>
                           <span>Data de nascimento</span> <br/>
                           <div class="data-nascimento">
                               <select class="dia" name="dia">
                                   <option>Dia</option>
                                   <?php
                                   for ($d = 1; $d <= 31; $d++) {
                                       $zero = ($d < 10) ? 0 : '';
                                       echo '<option value="', $zero, $d, '">', $zero, $d, '</option>';
                                   }
                                   ?>
                               </select>
                               <select class="mes" name="mes">
                                   <option>Mês</option>
                                   <?php
                                   $meses = array('', 'Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro');
                                   for ($m = 1; $m <= 12; $m++) {
                                       $zero = ($m < 10) ? 0 : '';
                                       echo '<option value"', $zero, $m, '">', $meses[$m], '</option>';
                                   }
                                   ?>
                               </select>
                               <select class="ano" name="ano">
                                   <option>Ano</option>
                                   <?php
                                   for ($a = date('Y'); $a >= (date('Y') - 100); $a--) {
                                       echo '<option value"', $a, '">', $a, '</option>';
                                   }
                                   ?>
                               </select>
                           </div>
                           <br/><br/>
                           <div id="captchaCadastro">
                               <span>Verificação de segurança</span><br/>
                               <h4> Não consegue visualizar a imagem? <a href="#imagem" id="troca_imagem">Clique aqui</a></h4>
                               <br/>
                               <span id="img-captcha">
                                   <?php require_once "captcha/imagem_seguranca.php"; ?>
                               </span>
                               <div class="input-captcha">
                                   <span>Digite o texto ao lado</span>
                                   <br/>
                                   <input type="text" name="captcha" />
                               </div>
                           </div>
                           <br/>
                           <input type="submit" value="Cadastre-se"/>
                       </form>
                   </div>                
                   <div id="box-right">
                       <div class="align">
                           <h1>Acesse sua conta.</h1>
                           <form name="login" action="" id="form-login">
                               <span>E-mail</span> <br/>
                               <input type="text" name="email"/>
                               <br/><br/>
                               <span>Senha</span> <br/>
                               <input type="password" name="senha" />
                               <br/><br/>
                               <input type="submit" value="Login"/>
                               <br/><br/>
                               <a href="">Não consegue acessar sua conta?</a>
                           </form>
                       </div>
                   </div>                

               </div>                
           </div>
       </div>
   </div>
   <footer>
       <div id="wrapper">
           <img src="template/images/logo/logo-footer.png" />
           <a href="sobre.php">Sobre</a>
           <a href="ajuda.php">Ajuda</a>
       </div>
   </footer>
</body>
</html>

 

Eu fiz alguns testes de inserção no banco de dados e funcionou tranquilo..

Esse é o código do arquivo de conexão com o banco:

<?php

class Connection {

   private static $connect;

   static function getConnection() {
       if (is_null(self::$connect)) {
           self::$connect = new PDO('mysql:host=localhost;dbname=projeto', 'root', '');
       }
       return self::$connect;
   }
}

?>

 

Lembrando que esse erro só apareço no campo "nome", "email" e "senha".

Se alguém puder me ajudar ou até mesmo fazer algumas críticas sobre o código, agradeço muito!

 

Valeeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloque um:

 

var_dump( $_POST );

Perto do extract(). Antes ou depois, tanto faz.

 

É estranho, é como se o script não estivesse compreendendo o extract().

 

Se bem que você não deveria estar usando extract() diretamente sobre o $_POST cru, sem tratamento nenhum...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloque um:

 

var_dump( $_POST );

Perto do extract(). Antes ou depois, tanto faz.

 

É estranho, é como se o script não estivesse compreendendo o extract().

 

Se bem que você não deveria estar usando extract() diretamente sobre o $_POST cru, sem tratamento nenhum...

 

 

Ele retorna os valores dos campos nas variaveis normalmente quando há erros , mas quando os dados passados estão conforme os requisitos para não passar o erro ele não insere no banco e volta a aparecer a mensagem.

array
 'nome' => string '<br /><font size='1'><table class='xdebug-error' dir='ltr' border='1' cellspacing='0' cellpadding='1'><tr><th align='left' bgcolor='#f57900' colspan=' (length=149)
 'email' => string '<br /><font size='1'><table class='xdebug-error' dir='ltr' border='1' cellspacing='0' cellpadding='1'><tr><th align='left' bgcolor='#f57900' colspan=' (length=149)
 'senha' => string '<br /><font size='1'><table class='xdebug-error' dir='ltr' border='1' cellspacing='0' cellpadding='1'><tr><th align='left' bgcolor='#f57900' colspan=' (length=149)
 'sexo' => string 'Masculino' (length=9)
 'dia' => string 'Dia' (length=3)
 'mes' => string 'Mês' (length=4)
 'ano' => string 'Ano' (length=3)
 'captcha' => string '' (length=0)

O e-mail digitado não é válido. 

 

Como eu deveria tratar esse $_POST?

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.