Publicidade

Rodrigo5468

Members
  • Total de itens

    135
  • Registro em

  • Última visita

Reputação

0 Comum

1 Seguidor

Sobre Rodrigo5468

  1. Sim, eu já fiz os try/catch e apliquei os exemplos dos links. Verificar se existe campos em brancos, e quais são if(empty($this->usuario) OR empty($this->nomesobrenome) OR empty($this->email) OR empty($this->senha)) { if(empty($this->usuario)) return 'Campo Usuário em branco.'; if(empty($this->nomesobrenome)) return 'Campo Nome/Sobrenome em branco.'; if(empty($this->email)) return 'Campo E-mail em branco'; if(empty($this->senha)) return 'Campo Senha em branco.'; } Verificar quais campos estão cadastrado no banco de dados, e quais são if($usuarioExiste) { if($this->usuario) return 'Usuario já existe!'; if($this->nomesobrenome) return 'Nome/Sobrenome já existe!'; if($this->email) return 'E-mail já existe!'; } Para verificar se os campos em branco, ele funciona perfeitamente, mas quando deixa o campo senha em branco ele não apresenta o erro. E o usuário sempre, sempre mostra o primeiro return que é "Usuário já existe". Estou pesquisando em diversos fóruns, artigos, youtube para conseguir arrumar mas não consigo. Se poder me explicar um pouco mais eu agradeço de coração.
  2. Bom, tentei fazer do seu método mas já erro. E como eu posso diminuir ou até tirar a complexidade ciclamática? Desde já, obrigado mais uma vez.
  3. Olá novamente! Fiz aqui para ter uma validação um pouco melhor, mas acho que estou fazendo errado, pois não está funcionando perfeitamente. Verificando se existe campos em brancos, e quais deles estão em branco. if(empty($this->usuario) OR empty($this->nomesobrenome) OR empty($this->email) OR empty($this->senha)) { if(empty($this->usuario)) { return 'Usuário está em branco.'; }elseif(empty($this->nomesobrenome)) { return 'Nome/Sobrenome está em branco.'; }elseif(empty($this->email)) { return 'E-mail está em branco está em branco.'; }elseif(empty($this->senha)) { return 'Senha está em branco.'; }else{ return 'Usuário, Nome/Sobrenome, E-mail, Senha, estão em branco.'; } return 'Preencha todos os campos em branco.'; } Verificando se existe algum campo registrado no banco de dados, e quais deles são. public function insert() { if($this->usuario) { return 'Campo Usuário já está cadastrado em nosso banco de dados.'; }elseif($this->nomesobrenome) { return 'Campo Nome/Sobrenome já está cadastrado em nosso banco de dados.'; }elseif($this->email) { return 'Campo E-mail já está cadastrado em nosso banco de dados.'; }else{ return 'Algum desses campos já estão cadastrado em nosso banco de dados: Usuário, Nome/Sobrenome ou E-mail.'; } return 'Algum dado que você tentou inserir já consta em nosso banco de dados.'; } Quando chega para verificar se a senha está em branco ou não, ele prossegue e cadastra o usuário com senha nula. E a mensagem de erro para verificar se existe algum dado já em nosso banco de dados, ele sempre mostra a opção Usuário. Por favor, como faço para arrumar este pequeno detalhe? Obrigado mais uma vez.
  4. Entendi tudo por enquanto, mas estou com uma pequena dúvida, por favor me esclareça. @EdCesarpode perceber que você citou esses dois últimos códigos. "Tem outras coisas também que é importante tratar, também como: $nome = (isset($_POST['usuario'])) ? $_POST['usuario'] : ''; ou no PHP 7: $usuario = $_POST['usuario'] ?? ''; " Eu tenho meus três "private" que irei utilizar para mostrar o usuário os dados incorretos, e que ele precisa corrigir para cadastrar no sistema. private private $usuario; private $nomesobrenome; private $email; Aqui nesses seguintes códigos eu quero especificar os campos, usarei o código acima de exemplo que você deixou? Eu testei aqui mas não obtive resultados, se poder me deixar um exemplo. if(empty($this->usuario) OR empty($this->nomesobrenome) OR empty($this->email) OR empty($this->senha)) { return 'Existe campos vazios!'; } ##################### if($usuarioExiste) { return 'Usuario já existe!'; } Eu quero especificar se é o usuário, nomesobrenome ou e-mail que está vazio, ou se algum desses dados já existem. Exemplo: "O campo usuário está vazio, por favor, preencha!" "O endereço de e-mail que você forneceu já existe em nosso banco de dados, tente usar outro." Muito obrigado por tudo mais uma vez.
  5. Pow cara!!! O código fincou bem simples e funciona perfeitamente. Você disse "mas esta certo de que deseja um OR, e não um END?" Não entendi muito bem o end, seria and? Estou começando agora, não sei qual é o melhor para usar o or, end ou and. Se poder me dá uma força. echo 'Existe campos vazios.</div>'; # Dar echo dentro da classe não é bom! Você também escreveu isso no código. Também não acho legal dar echo dentro da classe. Eu queria puxar um echo e colocar as informações na página register.php como posso fazer isso? Exemplo: <?php $usuarios = new Usuarios(); if(isset($_POST['cadastrar'])) { $usuario = $_POST['usuario']; $nomesobrenome = $_POST['nomesobrenome']; $email = $_POST['email']; $senha = $_POST['senha']; $usuarios->setUsuario($usuario); $usuarios->setNomesobrenome($nomesobrenome); $usuarios->setEmail($email); $usuarios->setSenha($senha); #Insert if($usuarios->insert()) { echo 'Conta registrada com sucesso! Você deverá confirmar a conta em seu endereço de e-mail.</div>'; } #Dar echo aqui falando que existe campos vazios. #Dar echo aqui falando que algum dado que ele tentou registrar já existe no banco de dados. } ?> Obrigado por tudo cara, muito obrigado mesmo.
  6. Olá, Estou fazendo um sistema de cadastro em PDO OO. Cadastro.php public function insert() { if(isset($usuario) && isset($nomesobrenome) && isset($email) && isset($senha)) { if(empty($usuario) OR empty($nomesobrenome) OR empty($email) OR empty($senha)) { echo 'Existe campos vazios.</div>'; } }else { $verifica = DB::prepare("SELECT * FROM {$this->table} WHERE usuario=:usuario OR nomesobrenome=:nomesobrenome OR email=:email"); $verifica->bindValue(':usuario',$this->usuario,PDO::PARAM_STR); $verifica->bindValue(':nomesobrenome',$this->nomesobrenome,PDO::PARAM_STR); $verifica->bindValue(':email',$this->email,PDO::PARAM_STR); $verifica->execute(); if($verifica->rowCount() == 0) { $sql = "INSERT INTO $this->table (usuario, nomesobrenome, email, senha) VALUES (:usuario, :nomesobrenome, :email, :senha)"; $stmt = DB::prepare($sql); $stmt->bindParam(':usuario', $this->usuario); $stmt->bindParam(':nomesobrenome', $this->nomesobrenome); $stmt->bindParam(':email', $this->email); $stmt->bindParam(':senha', $this->senha); return $stmt->execute(); }else { return false; } } } register.php <?php $usuarios = new Usuarios(); if(isset($_POST['cadastrar'])) { $usuario = $_POST['usuario']; $nomesobrenome = $_POST['nomesobrenome']; $email = $_POST['email']; $senha = $_POST['senha']; $usuarios->setUsuario($usuario); $usuarios->setNomesobrenome($nomesobrenome); $usuarios->setEmail($email); $usuarios->setSenha($senha); #Insert if($usuarios->insert()) { echo 'Conta registrada com sucesso! Você deverá confirmar a conta em seu endereço de e-mail.</div>'; } } ?> Quando eu registro a conta aparece a seguinte frase "Conta registrada com sucesso! Você deverá confirmar a conta em seu endereço de e-mail.". Mas já existe um cadastro no banco de dados não aparece nenhum erro, informando que já existe o usuário, o nome e sobrenome ou o e-mail. E quando existe campos vazios o script cadastra a conta do mesmo jeito. O que preciso mudar para corrigir o meu código? Obrigado desde já.
  7. O NUMERO É 14710
  8. 14698
  9. 14694
  10. Olá, boa noite à todos! Estou tendo algumas dificuldades em achar a melhor forma possível de validar um formulário, um cadastro... Irei deixar aqui logo abaixo o exemplo de como estou usando em teste, está funcionando mas não tenho certeza se é o método certo. <?php public function insert() { if(isset($usuario) && isset($nomesobrenome) && isset($email) && isset($senha)) { if(empty($usuario) OR empty($nomesobrenome) OR empty($email) OR empty($senha)) { echo 'Há campos vazios.'; } }else { $verifica = DB::prepare("SELECT * FROM {$this->table} WHERE usuario=:usuario OR nomesobrenome=:nomesobrenome OR email=:email"); $verifica->bindValue(':usuario',$this->usuario,PDO::PARAM_STR); $verifica->bindValue(':nomesobrenome',$this->nomesobrenome,PDO::PARAM_STR); $verifica->bindValue(':email',$this->email,PDO::PARAM_STR); $verifica->execute(); if($verifica->rowCount() == 0) { $sql = "INSERT INTO $this->table (usuario, nomesobrenome, email, senha) VALUES (:usuario, :nomesobrenome, :email, :senha)"; $stmt = DB::prepare($sql); $stmt->bindParam(':usuario', $this->usuario); $stmt->bindParam(':nomesobrenome', $this->nomesobrenome); $stmt->bindParam(':email', $this->email); $stmt->bindParam(':senha', $this->senha); return $stmt->execute(); }else { return false; } } } Estou estudando OO e PDO. Neste formulário existe 4 campos e, um adicional que é os termos, um checkbox. Eu quero verificar os seguintes campos. Usuário, Nome, E-mail Se não existir dados iguais em cada campo ele concede a permissão para enviar ao banco de dados, se não o script mostra os erros na tela do usuário. Li alguns artigos no Google, encontrei um que entendi melhor, ele pediu para criar uma variável. //Cria uma variável que terá os dados do erro $erro = false; //Verifica se o POST tem algum valor if(!isset($_POST) || empty($_POST )) { $erro = 'Nada foi postado.'; } //Cria as variáveis dinamicamente foreach($_POST as $chave => $valor) { //Remove todas as tags HTML //Remove os espaços em branco do valor $$chave = trim(strip_tags($valor)); //Verifica se tem algum valor nulo if(empty($valor)) { $erro = 'Existem campos em branco.'; } } //Verifica se $email realmente existe e se é um email. //Também verifica se não existe nenhum erro anterior if((!isset($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) && !$erro) { $erro = 'Envie um email válido.'; } //Se existir algum erro, mostra o erro if($erro) { echo $erro; }else{ //Se a variável erro continuar com valor falso //Você pode fazer o que preferir aqui, por exemplo, //enviar para a base de dados, ou enviar um email //Tanto faz. Vou apenas exibir os dados na tela. echo "<h1>Veja os dados enviados</h1>"; foreach($_POST as $chave => $valor) { echo '<b>' . $chave . '</b>: ' . $valor . '<br><br>'; } } A partir disso eu preciso criar os famosos "if", até aí tudo bem, mas como eu coloco no meu script? Fiz algumas tentativas e não conseguir. Poderiam me auxiliar neste assunto?
  11. Olá. Eu tenho um CRUD, porem no insert eu quero verificar se os dados existem na tabela, se existir ele não insere os mesmos dados. Pois a minha intenção é fazer um sistema de Cadastro e Login. Segue o código abaixo. <?php require_once 'Crud.php'; class Usuarios extends Crud { protected $table = 'usuarios'; private $usuario; private $email; private $senha; public function setUsuario($usuario) { $this->usuario = $usuario; } public function setEmail($email) { $this->email = $email; } public function setSenha($senha) { $options = [ 'cost' => 11, ]; $this->senha = password_hash($senha, PASSWORD_BCRYPT, $options); if(password_verify($senha, $this->senha)){ return true; } return false; } public function insert() { $sql = "INSERT INTO $this->table (usuario, email, senha) VALUES (:usuario, :email, :senha)"; $stmt = DB::prepare($sql); $stmt->bindParam(':usuario', $this->usuario); $stmt->bindParam(':email', $this->email); $stmt->bindParam(':senha', $this->senha); return $stmt->execute(); } public function update($id) { $sql = "UPDATE $this->table SET usuario = :usuario, email = :email, senha = :senha WHERE id = :id"; $stmt = DB::prepare($sql); $stmt->bindParam(':usuario', $this->usuario); $stmt->bindParam(':email', $this->email); $stmt->bindParam(':senha', $this->senha); $stmt->bindParam(':id', $id); return $stmt->execute(); } } Eu sei que tenho que dar um SELECT na tabela e verificar se existe com um rowCount... eu acho, não tenho certeza. Como eu posso fazer isso? Ah, e também queria verificar se os dados estão preenchidos. Lá na página registro.php eu fiz assim. <?php $usuarios = new Usuarios(); if(isset($_POST["usuario"]) && isset($_POST["email"]) && isset($_POST["senha"]) && isset($_POST["checkregistro"])) { if(empty($_POST["usuario"]) OR empty($_POST["email"]) OR empty($_POST["senha"]) OR empty($_POST["checkregistro"])) { echo '<div id="register-erro" style="display:none;z-index:1000;">Ainda tem campos vazios.</div>'; }else { if(isset($_POST['cadastrar'])) { $usuario = $_POST["usuario"]; $email = $_POST["email"]; $senha = $_POST["senha"]; $usuarios->setUsuario($usuario); $usuarios->setEmail($email); $usuarios->setSenha($senha); #Insert if($usuarios->insert()) { echo '<div id="registro-feito" style="display:none;z-index:1000;">Conta registrada com sucesso!</div>'; } } } } ?> O que devo fazer para verificar se existe os dados no banco? E como fazer, me da uma dica, por favor. Obrigado desde já.
  12. Muito obrigado a todos, mas eu conseguir... utilizei o método que o nosso amigo William disse. public function setSenha($senha) { $options = [ 'cost' => 11, 'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM) ]; $this->senha = password_hash($senha, PASSWORD_BCRYPT, $options); if(password_verify($senha, $this->senha)) { return true; } return false; } Se tiver alguma coisa errado me avise, pois eu testei aqui e funcionou tudo certinho.
  13. Olá Beraldo. Acho que estou conseguindo, algumas mensagens de erro desapareceu mas ficou uma que é super chata. Usuarios.php <?php require_once 'Crud.php'; class Usuarios extends Crud { protected $table = 'usuarios'; private $nome; private $email; private $senha; public function setNome($nome) { $this->nome = $nome; } public function getNome() { return $this->nome; } public function setEmail($email) { $this->email = $email; } public function setSenha($senha) { $this->senha = $senha; } // //$senhaHash = password_hash($senha, PASSWORD_DEFAULT); public function hash($senha) { $options = [ 'cost' => 11, 'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM) ]; return password_hash($senha, PASSWORD_BCRYPT, $options); } public function verificarPassword($senha, $hash) { if(password_verify($senha, $hash)) { return true; } return false; } // public function insert() { $sql = "INSERT INTO $this->table (nome, email, senha) VALUES (:nome, :email, :senha)"; $stmt = DB::prepare($sql); $stmt->bindParam(':nome', $this->nome); $stmt->bindParam(':email', $this->email); $stmt->bindParam(':senha', $senha); return $stmt->execute(); } public function update($id) { $sql = "UPDATE $this->table SET nome = :nome, email = :email, senha = :senha WHERE id = :id"; $stmt = DB::prepare($sql); $stmt->bindParam(':nome', $this->nome); $stmt->bindParam(':email', $this->email); $stmt->bindParam(':senha', $senha); $stmt->bindParam(':id', $id); return $stmt->execute(); } } index.php <?php $usuario = new Usuarios(); if(isset($_POST['cadastrar'])): $nome = $_POST['nome']; $email = $_POST['email']; $senha = $_POST['senha']; $usuario->setNome($nome); $usuario->setEmail($email); $usuario->setSenha($senha); #Insert if($usuario->insert()): echo "Inserido com sucesso!"; endif; endif; ?> Mensagem de Erro O que devo fazer para consertar este erro e fazer que o script cadastra a senha criptografada? #Edit William você fala colocar essa parte dentro do setSenha? public function hash($senha) { ? Eu tentei mas não deu certo... segue... public function setSenha($senha) { if($senha) { $options = [ 'cost' => 11, 'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM) ]; return password_hash($senha, PASSWORD_BCRYPT, $options); } $this->senha = $senha; } public function insert() { $sql = "INSERT INTO $this->table (nome, email, senha) VALUES (:nome, :email, :senha)"; $stmt = DB::prepare($sql); $stmt->bindParam(':nome', $this->nome); $stmt->bindParam(':email', $this->email); $stmt->bindParam(':senha', $this->senha); return $stmt->execute(); } Obrigado desde já.
  14. Meu amigo o problema não é a versão, pois a versão do meu PHP é 5.5.12. O problema é que eu não sei como inserir o password_hash no código, não sei onde colocar para a senha ficar criptografada.
  15. Olá, Estou com muita dificuldade em inserir e atualizar a senha usando o método password_hash. Alguém poderia me explicar como eu posso fazer isso? Tenho um crud, ele funciona perfeitamente, mas quero implementar o password_hash na senha. Como fazer isso? <?php require_once 'Crud.php'; class Usuarios extends Crud { protected $table = 'usuarios'; private $nome; private $email; private $senha; public function setNome($nome) { $this->nome = $nome; } public function getNome() { return $this->nome; } public function setEmail($email) { $this->email = $email; } public function setSenha($senha) { $this->senha = $senha; } public function insert() { $sql = "INSERT INTO $this->table (nome, email, senha) VALUES (:nome, :email, :senha)"; $stmt = DB::prepare($sql); $stmt->bindParam(':nome', $this->nome); $stmt->bindParam(':email', $this->email); $stmt->bindParam(':senha', $this->senha); return $stmt->execute(); } public function update($id) { $sql = "UPDATE $this->table SET nome = :nome, email = :email, senha = :senha WHERE id = :id"; $stmt = DB::prepare($sql); $stmt->bindParam(':nome', $this->nome); $stmt->bindParam(':email', $this->email); $stmt->bindParam(':senha', $this->senha); $stmt->bindParam(':id', $id); return $stmt->execute(); } } #Edit: Pensei em adicionar isso, mas não resultou, o que estou fazendo de errado? public function hash($senha) { $options = [ 'cost' => 11, 'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM) ]; return password_hash($senha, PASSWORD_BCRYPT, $options); } public function verificarPassword($senha, $hash) { if(password_verify($senha, $hash)) { return true; } return false; }