Ir ao conteúdo

Posts recomendados

Postado

Estou fazendo um sistema de cadastro...

porém estou tendo o seguinte erro:

1144634899_Semttulo.png.6ef397c6e61699a05db7959378f1c02a.png

 

<?php
if(isset($_POST['CriarConta'])){
  if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
      $ip = $_SERVER['HTTP_CLIENT_IP'];
  } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
      $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  } else {
      $ip = $_SERVER['REMOTE_ADDR'];
  }
  $getIP = $ip;
  $nome = isset($_POST['nome']) ? $_POST['nome'] : null;
  $sobrenome = isset($_POST['sobrenome']) ? $_POST['sobrenome'] : null;
  $usuario = isset($_POST['usuario']) ? $_POST['usuario'] : null;
  $nick = isset($_POST['nick']) ? $_POST['nick'] : null;
  $senha = isset($_POST['senha']) ? $_POST['senha'] : null;
  $confirmasenha = isset($_POST['confirmasenha']) ? $_POST['confirmasenha'] : null;
  $email = isset($_POST['email']) ? $_POST['email'] : null;
  $foto = isset($_POST['foto']) ? $_POST['foto'] : null;
  $captcha = $_POST['captcha'];
  $captchacorrect = $_SESSION['cap_code'];


      //Mostrar IP
      $sthIP = $conexao->prepare("SELECT * FROM usuarios WHERE ip = '".$getIP."' ");
      $sthIP->execute();
      $resultIP = $sthIP->fetch(PDO::FETCH_OBJ);
      $ipDBif = $resultIP->ip;

      //Mostrar Usuario
      $sthUSER = $conexao->prepare("SELECT * FROM usuarios WHERE usuario = '".$usuario."' ");
      $sthUSER->execute();
      $resultUSER = $sthUSER->fetch(PDO::FETCH_OBJ);
      $usuarioDBif = $resultUSER->usuario;

      //Mostrar Nick
      $sthNICK = $conexao->prepare("SELECT * FROM usuarios WHERE nick = '".$nick."' ");
      $sthNICK->execute();
      $resultNICK = $sthNICK->fetch(PDO::FETCH_OBJ);
      $nickDBif = $resultNICK->nick;

      //Mostrar Email
      $sthEMAIL = $conexao->prepare("SELECT * FROM usuarios WHERE email = '".$email."' ");
      $sthEMAIL->execute();
      $resultEMAIL = $sthEMAIL->fetch(PDO::FETCH_OBJ);
      $emailDBif = $resultEMAIL->email;

      if ($ipDBif == "") {
          $ipDB = "66690";
      } else {
          $ipDB = $resultIP->ip;
      }

      if ($usuarioDBif == "") {
          $usuarioDB = "teste";
      } else {
          $usuarioDB = $resultUSER->usuario;
      }

      if ($nickDBif == "") {
          $nickDB = "nome de usuário";
      } else {
          $nickDB = $resultNICK->nick;
      }

      if ($emailDBif == "") {
          $emailDB = "emaiul";
      } else {
          $emailDB = $resultEMAIL->email;
      }


      
      if ($ipDB > 3) {
          echo("<script> alert('Desculpe, mas o máximo de cadastro em seu IP foi atingido!'); window.location='/';</script>");
      }
    
      $redrirac = "/cadastro";
      if(trim($nome) == ""){
            echo("<script> alert('Você esqueceu de preencher seu Nome!');</script><script>window.location='".$redrirac."';</script>");
            exit(); 
      }elseif(trim($sobrenome) == ""){
        echo("<script> alert('Você esqueceu de preencher seu Sobrenome!');</script><script>window.location='".$redrirac."';</script>");
        exit(); 
      }elseif(trim($usuario) == ""){
        echo("<script> alert('Você esqueceu de preencher seu Usuario!');</script><script>window.location='".$redrirac."';</script>");
        exit(); 
      }elseif($usuario == $usuarioDB){
        echo("<script> alert('Este usuário já esta sendo utilizado!');</script><script>window.location='".$redrirac."';</script>");
        exit(); 
      }elseif(trim($nick) == ""){
        echo("<script> alert('Você esqueceu de preencher seu Nick!');</script><script>window.location='".$redrirac."';</script>");
        exit(); 
      }elseif($nick == $nickDB){
        echo("<script> alert('Este nick já esta sendo utilizado!');</script><script>window.location='".$redrirac."';</script>");
        exit(); 
      }elseif(trim($senha) == ""){
        echo("<script> alert('Você esqueceu de preencher sua Senha!');</script><script>window.location='".$redrirac."';</script>");
        exit(); 
      }elseif(trim($confirmasenha) == ""){
        echo("<script> alert('Você esqueceu de confirmar sua Senha!');</script><script>window.location='".$redrirac."';</script>");
        exit(); 
      }elseif($senha != $confirmasenha){
        echo("<script> alert('Suas senhas não coincidem!');</script><script>window.location='".$redrirac."';</script>");
        exit(); 
      }elseif(trim($email) == ""){
        echo("<script> alert('Você esqueceu de preencher seu Email!');</script><script>window.location='".$redrirac."';</script>");
        exit(); 
      }elseif($email == $emailDB){
        echo("<script> alert('Este email já esta sendo utilizado!');</script><script>window.location='".$redrirac."';</script>");
        exit(); 
      }elseif(trim($_POST["captcha"]) == ""){
        echo("<script> alert('Você esqueceu de preencher o Captcha!');</script><script>window.location='".$redrirac."';</script>");
        exit();
      }elseif (trim($_POST['captcha']) != $_SESSION['cap_code']){
        echo "<script>alert('O Captcha esta Errado!!');</script><script>window.location='".$redrirac."';</script>";
        exit();
      }else{
                $stmt = $conexao->prepare("INSERT INTO usuarios (nome, sobrenome, usuario, nick, senha, email, ip, foto) VALUES ('$nome','$sobrenome','$usuario','$nick','$senha','$email','$getIP','$foto')");
            // ? => parametro
            // bindParam => Vincula um parâmetro ao nome da variável especificada
                $stmt->bindParam(1, $nome);
                $stmt->bindParam(2, $sobrenome);
                $stmt->bindParam(3, $usuario);
                $stmt->bindParam(4, $nick);
                $stmt->bindParam(5, $senha);
                $stmt->bindParam(6, $email);
                $stmt->bindParam(7, $getIP);
                $stmt->bindParam(8, $foto);
                echo "<script>alert('Conta criada com sucesso.');</script><script>window.location='".$redrirac."';";
      }


}
?>

Alguém poderia me ajudar ??

Postado

Bom @Stifler874 o erro significa que você está tentando acessar um atributo de algo que não é um objeto.

 

Você passou o código, porém o erro não está nele, o log de erros aponta para as linhas 238, 244 e 250, e esse código só vai ate a linha 138, se possível publica o código inteiro!

 

Olhando para o seu código notei que você não fez a execução da consunta para inserir os dados do usuário no final do código, falto o

$stmt->execute();

depois do 

$stmt->bindParam(8, $foto);

 

Em relação aos erros, espero que esse exemplo possa esclarecer o que está ocorrendo!

/*
* Nesse exemplo eu vou criar um objeto chamado de usuário e adicionar um abritudo chamado login,
* depois eu vou criar esse objeto e atribuir ele a variavel $objeto, logo após isso eu vou acessar
* o atributo login dentro do objeto usuairo, localizado na variavel $objeto e vou utilizar o echo para escrever na tela.
*/

class usuario
{
    public $login = "gabriel";
}

$objeto = new usuario();

echo $objeto->login;

O retorno serial

gabriel

Agora se eu não crio o objeto e tendo fazer uma atribuição em uma variável do tipo string

$objeto = "login";

$objeto->login;

O retorno serial

Notice: Trying to get property of "objeto" non-object in C:\Program Files\VertrigoServ\muspe\teste.php on line 5

 

Postado

@GabrielSennaMs  oi tudo bem ?

Então coloquei apenas a parte do php que e onde consta o erro que seria:

      //Mostrar IP
      $sthIP = "SELECT count(*) FROM usuarios WHERE ip = '".$getIP."'"; 
      $resultIP = $conexao->prepare($sthIP); 
      $resultIP->execute(); 
      $ipDB = $resultIP->fetchColumn(); 

      //Mostrar Usuario
      $sthUSER = $conexao->prepare("SELECT * FROM usuarios WHERE usuario = '".$usuario."' ");
      $sthUSER->execute();
      $resultUSER = $sthUSER->fetch(PDO::FETCH_OBJ);
      $usuarioDBif = $resultUSER->usuario;   //ERRO AQUI  <==========

      //Mostrar Nick
      $sthNICK = $conexao->prepare("SELECT * FROM usuarios WHERE nick = '".$nick."' ");
      $sthNICK->execute();
      $resultNICK = $sthNICK->fetch(PDO::FETCH_OBJ);
      $nickDBif = $resultNICK->nick;   //ERRO AQUI  <==========

      //Mostrar Email
      $sthEMAIL = $conexao->prepare("SELECT * FROM usuarios WHERE email = '".$email."' ");
      $sthEMAIL->execute();
      $resultEMAIL = $sthEMAIL->fetch(PDO::FETCH_OBJ);
      $emailDBif = $resultEMAIL->email;   //ERRO AQUI  <==========

referente ao

$stmt->execute();

eu já fiz somente tinha esquecido ...

Postado

@Stifler874 Bom olhando melhor achei o erro.

 

Quando você faz a consunta procurando se existe um usuário, você faz a atribuição do resultado a uma variável e depois você tenta pegar somente aquele valor, porém se o sql não achar nenhum valor ele retorna com o resultado da consulta o valor boleno falso.

 

Pra resolver é fácil, é só fazer uma verificação antes.

$usuarioDBif = ($resultUSER != false and is_objetc($resultUSER->usuario) and isset($resultUSER->usuario))? $resultUSER->usuario : false;

Agora é só repetir com os outros 2, é modificar um pouco o código

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!