Publicidade

Rodrigo5468

Members
  • Total de itens

    143
  • Registro em

  • Última visita

Reputação

0 Comum

1 Seguidor

Sobre Rodrigo5468

  1. Realmente... Troquei para image/png e image/gif mas não obtive resultado. Se puder me ajudar a chegar ao meu objetivo fico agradecido, e me falar onde devo corrigir e o quê corrigir. Muito obrigado.
  2. Olá a todos! Eu tenho um código que adiciona um texto em uma imagem, ok, está funcionando normalmente. Mas eu quero fazer o seguinte. Quero criar um formulário com um campo input, desse jeito: <form action="" method="get"> <input name="nome" type="text" placeholder="Texto a ser Gerado" size="100"/> <input type="submit" value="Criar Imagem"/> </form> Aqui é um código PHP que insere um texto em uma imagem. <?php //Define o header como sendo de imagem header("Content-type: image/jpeg"); //Cria a imagem a partir de uma imagem jpeg $i = imagecreatefromjpeg("modelo.jpg"); // Definições $preto = imagecolorallocate($i, 0,0,0); #Cor do texto; "cor preta" $texto = "Exemplo"; #Texto a ser escrito $fonte = "trebuc.ttf"; #Fonte que será utilizada //Escreve na imagem imagettftext($i, 32, 0, 160,360, $preto, $fonte, $texto); //Gera a imagem na tela imagejpeg($i); //Destroi a imagem para liberar memória imagedestroy($i); ?> Só que eu não quero isso, irei explicar detalhadamente o que desejo fazer. Quero esse formulário que deixei de exemplo, e quero que após escrever algo nele e clicar em Criar Imagem é gerada uma imagem com o fundo transparente com o texto inserido. Quais são as alterações que devo fazer no código? Onde e como? Muito obrigado a todos pela atenção.
  3. @Gabriel Heming então eu não posso fazer o meu sistema de cadastro e login dessa forma? Se não, posso aproveitar o código até que ponto? E como fazer? Aguardo a sua resposta, obrigado desde já. #Edit Arquivo Crud.php <?php require_once 'DB.php'; abstract class Crud extends DB { protected $table; abstract public function insert(); abstract public function update($id); public function find($id) { $sql = "SELECT * FROM $this->table WHERE id = :id"; $stmt = DB::prepare($sql); $stmt->bindParam(':id', $id, PDO::PARAM_INT); $stmt->execute(); return $stmt->fetch(); } public function findAll() { $sql = "SELECT * FROM $this->table"; $stmt = DB::prepare($sql); $stmt->execute(); return $stmt->fetchAll(); } public function delete($id) { $sql = "DELETE FROM $this->table WHERE id = :id"; $stmt = DB::prepare($sql); $stmt->bindParam(':id', $id, PDO::PARAM_INT); return $stmt->execute(); } }
  4. @FaahWl estou começando a entender, obrigado por me responder. Alterei o código e ficou assim, antes: $resultado = $stmt->fetch(\PDO::FETCH_ASSOC); $dadosJaExistem = array_intersect([ 'usuario' => $this->usuario, 'nomesobrenome' => $this->nomesobrenome, 'email' => $this->email], $resultado ); Agora o código está assim, agora: //Tentei assim $dadosJaExistem = array_intersect([ 'usuario' => $this->usuario, 'nomesobrenome' => $this->nomesobrenome, 'email' => $this->email ]); //Tentei assim, também $resultado = array ( 'usuario' => $this->usuario, 'nomesobrenome' => $this->nomesobrenome, 'email' => $this->email ); $dadosJaExistem = array_intersect([ 'usuario' => $this->usuario, 'nomesobrenome' => $this->nomesobrenome, 'email' => $this->email], $resultado ); //E também tentei assim $resultado = array ( 'usuario' => $this->usuario, 'nomesobrenome' => $this->nomesobrenome, 'email' => $this->email ); $dadosJaExistem = array_intersect($resultado); //E por fim, também tentei assim $dadosJaExistem = [ 'usuario' => $this->usuario, 'nomesobrenome' => $this->nomesobrenome, 'email' => $this->email ]; E sempre, sempre mostrava esse erro agora. No último código faltava que os dados já estavam registrados no banco de dados. A última parte eu não entendi muito bem, sou novo nesse assunto, poderia me ajudar mais? @Gabriel Heming tenho um arquivo chamado CRUD, e o Usuarios.php está chamando esse arquivo. Foi isso? Não entendi muito bem, peço a sua colaboração poderia me explicar mais? Muito obrigado a todos
  5. Olá. Estou fazendo um sistema de cadastro e login, está funcionando quais perfeitamente. Porem tem alguns erros que eu não consigo resolver, já procurei na internet mas não achei nada relevante. Poderia me ajudar? Usuarios.php <?php require_once 'Crud.php'; class Usuarios extends Crud { protected $table = 'usuarios'; private $usuario; private $nomesobrenome; private $email; private $senha; public function setUsuario($usuario) { $this->usuario = $usuario; } public function setNomesobrenome($nomesobrenome) { $this->nomesobrenome = $nomesobrenome; } public function setEmail($email) { $this->email = $email; } public function setSenha($senha) { if(!empty($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() { $propriedades = [ 'usuario' => $this->usuario, 'nomesobrenome' => $this->nomesobrenome, 'email' => $this->email, 'senha' => $this->senha ]; if(strlen($this->senha) < 8) { return('A sua senha precisa ter pelo menos 8 caracteres.'); exit(); } if(!filter_var($this->email, FILTER_VALIDATE_EMAIL)) { return('E-mail invalido.'); exit(); } foreach($propriedades as $propriedade => $valor) { if(empty($this->$propriedade)) { return('O campo '.$propriedade.' não foi preenchido.'); exit(); } } $stmt = DB::prepare("SELECT * FROM {$this->table} WHERE usuario=:usuario OR nomesobrenome=:nomesobrenome OR email=:email"); $stmt->bindValue(':usuario',$this->usuario,PDO::PARAM_STR); $stmt->bindValue(':nomesobrenome',$this->nomesobrenome,PDO::PARAM_STR); $stmt->bindValue(':email',$this->email,PDO::PARAM_STR); $stmt->execute(); $resultado = $stmt->fetch(\PDO::FETCH_ASSOC); $dadosJaExistem = array_intersect([ 'usuario' => $this->usuario, 'nomesobrenome' => $this->nomesobrenome, 'email' => $this->email], $resultado ); if($dadosJaExistem) { $mensagem = 'O(s) valor(es): ' . implode(', ', $dadosJaExistem) . ' já existem no banco de dados, por favor escolha outro(s).'; return($mensagem); exit(); } $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); if($stmt->execute()) { return 'Conta registrada com sucesso!'; exit(); } return 'Falha ao cadastrar.'; } public function login($usuario, $email, $senha) { try { $stmt = DB::prepare("SELECT id, usuario, email, senha FROM $this->table WHERE usuario = :usuario OR email=:email"); $stmt->execute(array(':usuario'=>$usuario, ':email'=>$email)); $row = $stmt->fetch(PDO::FETCH_ASSOC); if($stmt->rowCount() == 1) { if(password_verify($senha, $row['senha'])) { $_SESSION['user_session'] = $row['id']; return true; }else { return false; } } }catch(PDOException $e) { echo $e->getMessage(); } } public function is_loggedin() { if(isset($_SESSION['user_session'])) { return true; } } public function redirect($url) { header("Location: $url"); } public function logout() { session_destroy(); unset($_SESSION['user_session']); return true; } public function update($id) { $sql = "UPDATE $this->table SET usuario = :usuario, nomesobrenome = :nomesobrenome, email = :email, senha = :senha WHERE id = :id"; $stmt = DB::prepare($sql); $stmt->bindParam(':usuario', $this->usuario); $stmt->bindParam(':nomesobrenome', $this->nomesobrenome); $stmt->bindParam(':email', $this->email); $stmt->bindParam(':senha', $this->senha); $stmt->bindParam(':id', $id); return $stmt->execute(); } } session.php <?php session_start(); function __autoload($class_name){ require_once 'classes/' . $class_name . '.php'; } $session = new Usuarios(); if(!$session->is_loggedin()) { $session->redirect('index'); } Esses dois arquivos ficam dentro de uma pasta chamada classe. E esse fica no diretório raiz. login.php <?php session_start(); function __autoload($class_name){ require_once 'classes/' . $class_name . '.php'; } $login = new Usuarios(); if($login->is_loggedin()!="") { $login->redirect("index"); } if(isset($_POST["btn-entrar"])) { $usuario = strip_tags($_POST["usuario_email"]); $email = strip_tags($_POST["usuario_email"]); $senha = strip_tags($_POST["senha"]); if($login->Login($usuario,$email,$senha)) { $login->redirect("index"); }else { $error = "Detalhes errados."; } } ?> index.php <?php require_once("classes/session.php"); require_once("classes/Usuarios.php"); $auth_user = new Usuarios(); $user_id = $_SESSION['user_session']; $stmt = $auth_user->runQuery("SELECT * FROM users WHERE user_id=:user_id"); $stmt->execute(array(":user_id"=>$user_id)); $userRow=$stmt->fetch(PDO::FETCH_ASSOC); ?> Os erros que dá são esses... — Quando vai registrar — Quando vai fazer o login Por favor, peço a vocês que me auxilie com os avisos e erros. Muito obrigado.
  6. Olá! Estrutura do Projeto. Usuarios.php public function insert() { try { $propriedades = [ 'usuario' => $this->usuario, 'nomesobrenome' => $this->nomesobrenome, 'email' => $this->email, 'senha' => $this->senha ]; if(!filter_var($this->email, FILTER_VALIDATE_EMAIL)) { throw new \Exception('E-mail invalido!'); } foreach($propriedades as $propriedade => $valor) { if(empty($this->$propriedade)) { throw new \Exception('o campo '. $propriedade . ' não foi preenchido!'); } } }catch(Exception $e) { $error_message = $e->getMessage(); } $stmt = DB::prepare("SELECT * FROM {$this->table} WHERE usuario=:usuario OR nomesobrenome=:nomesobrenome OR email=:email"); $stmt->bindValue(':usuario',$this->usuario,PDO::PARAM_STR); $stmt->bindValue(':nomesobrenome',$this->nomesobrenome,PDO::PARAM_STR); $stmt->bindValue(':email',$this->email,PDO::PARAM_STR); $stmt->execute(); $resultado = $stmt->fetch(\PDO::FETCH_ASSOC); $dadosJaExistem = array_intersect([ 'usuario' => $this->usuario, 'nomesobrenome' => $this->nomesobrenome, 'email' => $this->email], $resultado ); if($dadosJaExistem) { $mensagem = 'O(s) valor(es): ' . implode(',', $dadosJaExistem) . ' ja existem no banco de dados, por favor escolha outro(s)'; throw new Exception($mensagem); } $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); if ($stmt->execute()) { return 'Conta registrada com sucesso! Você deverá confirmar a conta em seu endereço de e-mail.'; } return 'Falha ao cadastrar!'; } index.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); echo $usuarios->insert(); if(isset($error_message)) { echo $error_message; } } ?> Já tentei de tudo e ainda estou tentando. Obrigado mais uma vez.
  7. Desculpe a demora, estava sem internet. @EdCesar eu li todos os links e mais alguns por fora e, cheguei a conclusão que o código está correto (eu acho). Esse erro está falando que o e-mail é invalido, está certo. Mas esse código ele ta em classes/ E tenho o index que deveria aparecer esse erro como um diálogo (pop-up), informando que algum desses dados são inválidos ou já existem no banco de dados. Eu preciso ignorar esse erro, para ele não redirecionar para essa tela e colocar em uma div, como um diálogo. Preciso puxar o erro para o index. Como eu posso fazer isso? Já pesquisei, tentei usar um try/catch e puxar a variável $erro para o index, assim mostrando o erro diagnosticado no arquivo Usuários.php da pasta classes/, mas não conseguir, poderia me dá uma força? Desde já muito obrigado.
  8. Tive alguns problemas pessoais e não conseguir acessar o fórum. Campos em brancos: Usando o seguinte código dá esse erro. $propriedades = [ 'usuario' => $this->usuario, 'nomesobrenome' => $this->nomesobrenome, 'email' => $this->email, 'senha' => $this->senha ]; if(!filter_var($this->email, FILTER_VALIDATE_EMAIL)) { throw new \Exception('E-mail invalido!'); } foreach($propriedades as $propriedade => $valor) { if(empty($this->$propriedade)) { throw new \Exception('o campo '. $propriedade . ' não foi preenchido!'); } } Mas se eu trocar o trecho "throw new \Exception" por "return" o código funciona. Mas se eu preencher todos os campos, e deixar a senha em branco ele insere um cadastro no banco de dados com a senha em branco. Não dá erro nenhum. Já a baste para identificar quais os campos existem já cadastros no banco de dados sempre da um erro que o e-mail está invalido. Já tentei substituir o "throw new Exception" pelo "return" e colocar uma barra invertida no Exception mas nada. Já pesquisei em diversões fóruns, vídeos mas nada não tô conseguindo consertar o código. Poderia me explicar como eu posso conserta-lo? Desde já obrigado.
  9. 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.
  10. 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.
  11. 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.
  12. 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.
  13. 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.
  14. 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á.
  15. O NUMERO É 14710