Ir ao conteúdo
  • Cadastre-se

GabrielSennaMs

Membro Pleno
  • Posts

    335
  • Cadastrado em

  • Última visita

Tudo que GabrielSennaMs postou

  1. @assinanteBom amigo dei uma olhada no seu código e encontrei alguns erros no uso da API. Se eu for explicar cada ponto errado, vai levar muito tempo, então eu criei esse exemplo que você pode usar como base e acerta o seu código. @Renan M GalvãoEu efetuei alguns testes no Firefox e está funcionado sem problema, depois se possível utilize esse exemplo abaixo no seu Firefox. Página com o edito: <!DOCTYPE html> <html lang="pt-br"> <head> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <!-- include libraries(jQuery, bootstrap) --> <link href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet"> <script src="https://code.jquery.com/jquery-3.5.1.js"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script> <!-- include summernote css/js --> <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/summernote.min.css" rel="stylesheet"> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/summernote.min.js"></script> <title>Imagem de Teste</title> <style> html, body { width: 100%; height: 100%; margin: 0px; padding: 0px; display: flex; } form { max-width: 1000px; margin: auto; } </style> </head> <body> <form action="upload.php" onsubmit="return false;" method="POST"> <textarea id="summernote" name="editordata"></textarea> </form> <script type="text/javascript"> $(function() { const $summernote = $('#summernote').summernote({ height: 300, callbacks: { onImageUpload: function(files) { for(let num = 0; num < files.length; num++) { sendFile( files[num], function(objectImg) { let img = document.createElement('img'); img.src = objectImg.url; img.alt = objectImg.name; $summernote.summernote('insertNode', img); }, function(error) { console.error(error) } ); } } } }); }); function sendFile(file, callbackSuccess, callbackError) { let data = new FormData(); data.append('image', file); $.ajax({ type: 'post', url: 'upload_image.php', contentType: false, processData: false, data, success: (res) => callbackSuccess(res), error: (res) => callbackError(res) }); } </script> </body> </html> Arquivo de upload <?php require_once 'FileImage.php'; header('Content-Type: application/json'); try { if ($_SERVER["REQUEST_METHOD"] = 'POST') { if (isset($_FILES['image'])) { $img = new FileImage($_FILES['image']); if ($img->getStatus()) { echo($img); exit(); } } else { throw new Exception('O arquivo de upload não foi encontrado'); } } else { throw new Exception('Method Not Allowed'); } throw new Exception('Ocorreu um erro ao tentar efetuar o upload do arquivo para o servidor'); } catch (Exception $e) { echo(json_encode(["error" => $e->getMessage()])); } Class FileImage <?php class FileImage { /** * @var $tempFile Local temporario do arquivo */ private $tempFile = null; /** * @var $name Nome do arquivo gerado usando o método hashNameFile */ private $name = null; /** * @var $type Tipo do arquivo */ private $type = null; /** * Tamanho do arquivo */ private $size = null; /** * Status da verificação do arquivo usando o método isImage */ private $statusVerified = false; /** * Local padrão para salvar os arquivos */ private $localDefault = "/assets/img"; /** * Tipos de arquivos de imagens permitidos * * @var $types */ private $types = ['jpg', 'jpeg', 'png', 'gif']; /** * Função de construção * * @param $file arquivo temporario * @param $name nome alternativo, caso não queira usar o hash gerado pelo método hashNameFile */ function __construct($file, $name = null) { $this->tempFile = $file['tmp_name']; if ($this->tempFile == null or !file_exists($this->tempFile)) { throw new Exception("Arquivo não encontrado"); } $this->type = strtolower(pathinfo(basename($file["name"]), PATHINFO_EXTENSION)); if (!$this->isImage($this->type)) { throw new Exception("O Arquivo inserido não é uma imagem"); } $this->name = ($name != null) ? $name : $this->hashNameFile(); if (!$this->verified()) { $this->statusVerified = $this->moveFile(); } else { $this->statusVerified = true; } $this->size = filesize(__DIR__.$this->localDefault.$this->name.'.'.$this->type); } /** * Move o arquivo temporario para seu local designado * * @return bool */ private function moveFile(): bool { return move_uploaded_file($this->tempFile, __DIR__.$this->localDefault.$this->name.'.'.$this->type); } /** * Verifica se o arquivo já existe no local designado * * @return bool */ private function verified(): bool { $file = $this->localDefault.$this->name.'.'.$this->type; if (file_exists($file)) { return true; } return false; } /** * Verifica se o arquivo temporario é uma imagem com o tipo permitido * * @return bool */ private function isImage($type = null): bool { if ($type != null and array_search($type, $this->types) >= 0 and getimagesize($this->tempFile) !== false) { return true; } return false; } /** * Retorna o hash em md5 do arquivo * Obs..: Isso pode ser usado para evita o reupload da mesma imagem. * * @return string */ private function hashNameFile(): string { return hash_file('md5', $this->tempFile); } /** * Retorna um json contendo os dados da imagem, * caso a imagens não exista retorna o valor false * * @return string|bool */ public function getImage() { if ($this->statusVerified) { $data = [ "name" => $this->name, "url" => $this->localDefault.$this->name.'.'.$this->type, "size" => $this->size, "type" => $this->type ]; return json_encode($data); } return false; } /** * Comportamento do object quando convertido para uma string * * @return string|bool */ function __toString() { return $this->getImage(); } /** * Retorna o status da verificação do contrutor * * @return bool */ public function getStatus(): bool { return $this->statusVerified; } }
  2. @assinante Bom amigo trocar o id da "Session" não vai impedir o sequestro, existe outras maneiras de melhora a segurança. Cria um token que é atualizado com frequência e um middleware que verifique os cabeçalho da requisição feita pelo usuário, é um bom começo, eu também adicionaria um token ante CSRF.
  3. @BrunoRo9080 Seria algo assim? <h2>Resultado controle de estoque</h2> <p>{"message":"Success","result":[{"message":"Success","prediction":[{"label":"prateleira_pacote","probability":0.83551204},{"label":"prateleira_fruta","probability":0.16448796}],"file":"https://goo.gl/ICoiHc"}]}</p> <br> <p id="demo">Carregando...</p> <script> var data = 'modelId=df8909ed-2ffc-4350-8939-f186b81b5763&urls=https://static.clubeextra.com.br/img/uploads/1/980/645980.png?imtype=imgProductDetail&size=sm, https://www.ibahia.com/fileadmin/user_upload/ibahia/2019/outubro/25/banana.jpg?width=1200&enable=upscale'; var xhr = new XMLHttpRequest(); xhr.addEventListener("readystatechange", function () { if (this.readyState === this.DONE) { document.getElementById('demo').innerHTML = (this.responseText); } }); xhr.open("POST", "https://app.nanonets.com/api/v2/ImageCategorization/LabelUrls/"); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.setRequestHeader("authorization", "Basic " + btoa("gI34_BHfkNwdFnUAFIwgr4l9nB-TSXsC:")); xhr.send(data); </script>
  4. @Gustavo Picoli Bom dia amigo! É um erro comum de permissão de acesso, você tem que alterar a permissão da pasta e arquivos ou conceder a permissão para leitura e gravação do mesmo.
  5. @Anderson LTI Bom amigo talvez o que falte no seu código é o uso do "State" no seu componente. Fiz um exemplo pra deixar mais claro essa questão import React from 'react'; import '../../assets/css/App.css'; class Layout extends React.Component { render() { return ( <div className="app"> <Funcao /> </div> ); } } class Funcao extends React.Component { constructor() { super(); this.state = {height: 0, weight: 0, result: null}; } handleClick = () => this.setState({result: (this.state.height / this.state.weight)}); model = (event) => this.setState({[event.target.name]: event.target.value}) render() { return ( <div> <p>{this.state.result}</p> <input onChange={this.model} type="text" name="height" /> <input onChange={this.model} type="text" name="weight" /> <button onClick={() => this.handleClick()}>Calcular</button> </div> ); } } export default Layout;
  6. @Bruna Siqueira pede para reiniciar o arquivo .htaccess. para default.
  7. @Bruna Siqueira Você pode usar a configuração do arquivo .htaccess padrão do laravel. <IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> ErrorDocument 404 /erro/404.html ErrorDocument 500 /erro/500.html RewriteEngine On # Handle Authorization Header RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # Send Requests To Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.asp [L] </IfModule> Sobre o arquivo index, bom basta adicionar um.
  8. @Twylla Oliva Bom eu dei uma olhada aqui no seu site, e encontrei muitos problemas, um deles é o uso de links externos de rede sociais, mas nenhum que necessite de um servidor dedicado. Com relação ao seu Bug, ele é fácil de resolver e não é necessário um servidor dedicado pra isso. Bom eu não sei qual foi a modificação que ele fez no script do jquery para abrir o modal, mas quando alguém clica para abrir um modal ele carrega um link referente ao elemento <a> que foi clicado para abrir o modal, como o link no elemento é ":.", o javascript retorna o resultado da requisição, e como não existe nenhuma rota com o link ";." ele retorna em branco. Para resolver isso basta remover o atributo href do elemento <a>, dessa forma não vai existir um link apresentando problemas para ser carregado e não vai mais aparecer uma tela em branco. Eu fiz o teate aqui e você também pode fazer esse teste, basta usar o comando no seu console. $('[data-toggle="modal"]').removeAttr('href');
  9. @Bruna Siqueira Bom geralmente o servidor gera um arquivo de log de erro, verifica esse arquivo e se possível publica ele aqui.
  10. @Bruna Siqueira Bom o erro é alguma coisa relacionada ao recurso do servidor, verifica se o servidor está operando usando ASP.
  11. @Anderson LTI Remove os parênteses do "React.Component()" class App extends React.Component { render() { return ( <div className="App">Olá, Mundo!</div> ); } }
  12. @1231Lucas123 Bom o erro está no retorno do método getConn() dá sua class Conexão, provavelmente ele não está retornado um Object PDO, é sim um valor NULL. Agora o motivo do retorno com o valor NULL, bom pode ser falha na conexão com o banco de dados. Tente isso e verifique o retorno. $servername = "localhost"; // Host do bando de dados. $username = "username"; // Usuário que vai se connectar com o banco de dados $password = "password"; // Senha do usuário try { $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password); // conexão padrão para DB em MYSQL // set the PDO error mode to exception $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Connected successfully"; } catch(PDOException $e) { echo "Connection failed: " . $e->getMessage(); } Caso sua conexão esteja sendo bem-sucedida, envie a class inteira par que possamos avaliar a possível causa do erro.
  13. @aleffelipe96 Até onde eu me lembro os números binários são colocados em conjuntos de oito dígitos, e como esse número pode ter zeros a esquerda e é composto só de dígitos, o javascript converte ele para tipo inteiro e remove o zero na esquerda. Você pode adicionar um 0 a esquerda e usar o método "slice" e pegar os 8 últimos caracteres da string, e como é uma string o javascript não vai remove o zero. ('00000000'+input[i].charCodeAt(0).toString(2)).slice(-8) Exemplo: <!DOCTYPE html> <html> <body> <p>Press a key on the keyboard in the input field to get the Unicode character code of the pressed key.</p> <input type="text" size="40" onkeypress="myFunction(event)"> <p id="demo"></p> <script> function myFunction(event) { var x = ('00000000'+event.charCode.toString(2)).slice(-8) document.getElementById("demo").innerHTML = "The Unicode value is: " + x; } </script> </body> </html>
  14. @Matheus Eduardo Vieira O seletor 'getElementsByClassName' em javascript seleciona o name(nome) do elemento é não o nome que você coloca no atributo name, por isso que o erro está acontecendo, dessa forma ele acaba retornado uma lista vazia. Você pode corrigir isso trocando o seletor, nesse caso eu uso o seletor "querySelectorAll" var fsex = document.querySelectorAll('input[type="radio"]');
  15. @_Pedro_1002_ Isso é devido ao uso da unidade vh, aqui tem um artigo falando sobre: https://desenvolvimentoparaweb.com/css/unidades-css-rem-vh-vw-vmin-vmax-ex-ch/ Bom eu acho que você quer fazer isso aqui https://www.w3schools.com/howto/howto_css_full_page.asp.
  16. @Eduardo de Quadros Bom pra explica isso eu iria levar um bom tempo, e isso eu não tenho, mas eu acho que esse artigo pode esclarecer sua duvida: https://code.tutsplus.com/pt/tutorials/understanding-hash-functions-and-keeping-passwords-safe--net-17577
  17. @Gustavo L1m4 Bom você tem que instanciar a class é depois adicionar o valor ou criar uma variável na class que possua o valor. 3 formas de fazer isso <?php class exemplo { public $valor = null; } $class = new exemplo(); // Instanciando a class $class->valor = "Guardado o valor nela <br>"; echo($class->valor); // Mostrando o valor dentro da class <?php class exemplo_2 { static public $valor = 'Valor atribuido na class static <br>'; } echo(exemplo_2::$valor); // Mostrando valor da class statica com o valor já atribuido <?php class exemplo_3 { public $valor = null; function __construct($valor) { $this->valor = $valor; } } $class_2 = new exemplo_3('Atribuindo valor ao instanciar a class <br>'); echo($class_2->valor);
  18. @Bruna Siqueira Bom você tem que modificar o CSS que é adicionado quando você clica na seta.
  19. @Bruna Siqueira Bom provavelmente é devido ao "overflow: hidden;" na class ".highcharts-menu-wrapper". Para deixar o submenu na horizontal você pode adiciona na class ".highcharts-submenu-wrapper": { top: 42px; // Isso vai tira o btn de cima do menu flex-flow: column; // Isso vai fazer com que os btns se posicionem na vertical left: 0px; // Remove ou setar para 0px, acim o submenu vai ficar em baixo do btn principal }
  20. @Luc B O erro é "falha na autenticação do usuário"', provavelmente você está usando um servidor de e-mail Fake para fazer teste locais de envio de e-mail, porém você não configurou um usuário, basta configurar um usuário e alterar o dados de login. $mail->Username = "[email protected]"; $mail->Password = "senha"; Caso você queira testar usando um servidor real você pode usar o Gmail pra isso. Aqui um tutorial.
  21. @Abramelin7 Pro qual URL você está tentando acessar o servidor HTTP(Apache) do seu computador? Se for pela http://localhost, ele não vai funciona, nesse caso você deve pegar o IP local do seu computado e usar ele como URL. No meu caso eu tenho um servidor HTTP no meu computado, O IP local do meu computado é 192.168.1.65, a URL que eu uso para acessar o site no meu celular é http://192.168.1.65
  22. @Bulgarellllli O problema está na sua condição de loop nos for. Você usa menor que e igual "<=", e com essa condição o loop é executado uma vez a mais que o valor do array com os elementos. Colocando só menor que o loop vai funcionar. if (language == "english") { for (let i = 0; i < itemsEnglish.length; i++) { console.log(itemsEnglish[i]); itemsEnglish[i].style.display = "block"; } for (let x = 0; x < itemsPortuguese.length; x++) { itemsPortuguese[x].style.display = "none"; } } else { for (let i = 0; i < itemsEnglish.length; i++) { itemsEnglish[i].style.display = "none"; } for (let x = 0; x < itemsPortuguese.length; x++) { itemsPortuguese[x].style.display = "block"; } } Dessa forma deve funcionar!
  23. @leopkks Bom o elemento <audio> está funcionado corretamente! <audio src="http://soundbible.com/grab.php?id=2154&type=mp3" autoplay></audio> Bom deixa eu ver se entendi, você quer que esse som seja emitido pra cada novo pedido no seu sistema? Bom infelizmente não é possível fazer isso só com o php, você vai ter que criar uma verificação usando javascript para fazer uma requisição em um intervalo de tempo para o php, com base no retorno dessa requisição você emitiria o som e recarregaria a página. Você vai ter que aprender isso aqui https://www.w3schools.com/js/js_ajax_intro.asp Ajax. Bons estudos! Qualquer duvida você pode perguntar!
  24. @Dark-Programação Olhando o seu código eu não notei nada de errado, mas eu não encontrei o método de inicialização das session. <?php session_start(); Verifica se você não esqueceu de adicionar ele, ele é necessário tanto para ler quanto para gravar dados na $_SESSION.
  25. @Vera Lucia Ferreira Simão Esse efeito de Input é padrão do MDC(Material Desing Components). Fazer esse efeito na mão vai custar um bom tempo, você pode adquiri ele incorporando a base do M.D no seu projeto, ou usando uma estrutura que usa o M.D como base, o site em questão usa a estrutura Materialize, que é incorporada através de CDN. HTML Exemplo: <!DOCTYPE html> <html style="height: 100%;"> <head> <title>Exemplo</title> <!-- Compiled and minified CSS --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materia> <!-- Compiled and minified JavaScript --> <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/ma> </head> <body style="height: 100%; display: flex;"> <div class="z-depth-2" style="margin: auto; width: 300px; padding: 1em 2em;"> <div class="input-field"> <input type="text" id="input"> <label for="input">Exemplo1</label> </div> <div style="margin-top: 3em;" class="input-field"> <input placeholder="Exemplo 2" type="text" id="input"> <label for="input">Exemplo 2</label> </div> </div> </body> </html> Resultado:

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!