Ir para conteúdo

Placar de líderes


Conteúdo popular

Exibindo o conteúdo com as maiores reputações desde 18-01-2018 em todas as áreas

  1. 4 pontos
    @BenficaScore Para solicitar esclarecimentos sobre códigos não transcreva seus códigos, use uma interface online para mostrar os códigos FUNCIONANDO. Visite https://jsfiddle.net/ cole os códigos nos campos salve e poste o link juntamente com a sua dúvida. É muito mais rápido, eficiente e fácil de se analisar e postar a solução. O código que você postou não serve para nada e mesmo se tivesse postado a HTML quem vai analisar teria que criar um arquivo com os códigos e verificar o funcionamento. Você está transferindo para quem quer ajudar a tarefa "chata" de criar o arquivo. A tarefa é sua que está interessado na solução, portanto use o JSFIDDLE ou outra ferramenta online e eu ou alguém que gosta de prestar ajuda neste fórum iremos analisar. Nota: A figura que você postou é útil e está OK pois esclarece sua dúvida. Boa sorte.
  2. 4 pontos
    @Dorian Neto, em nome da praticidade eu acabei "mandando pelos ares" as definições. Falha minha. Perfeito, esse é o primeiro conceito. Só seria interessante dizer ainda que eles precisam se relacionar, ser variantes um do outro. A questão é que a interpretação de variância é relativa de linguagem para linguagem. Você deu o seguinte exemplo (vou escrever de forma resumida para encurtar a resposta): class X method() : objeto // abstrato class Y method() : string // específico No contexto do PHP, string é específico de objeto? Não, mas em outras linguagens (como JS ou Java) sim. No php, uma string é um tipo primitivo (não é um objeto). No JS uma string é um objeto, permitindo você fazer coisas como: console.log( "minha string".length ); // output: 12 As definições que você explicou sobre covariância e contravariância estão certas (a respeito de genérico -> específico e vice-versa). Não preciso complementar nada aqui, apenas reiterar que os exemplos estão incorretos (ambos, por causa da invariância dos tipos). A ideia é não quebrar as regras (de tipos) originalmente estabelecidas, mas permitir comportamentos variantes. Veja a RFC (implementada na 7.2) a respeito do object typehint. Tem mais informações práticas sobre o assunto: https://wiki.php.net/rfc/object-typehint Correto, mas é bom dizer ainda que ele além de não ter sofrido, ele também não pode sofrer mutações. Existem linguagens que implementam isso nativamente, mas nenhuma realmente popular. Sabe quando as linguagens não oferecem atributos/métodos privados e os programadores nomeiam esses caras com um underscore no início para indicar esse comportamento? É exatamente isso que pode ser feito nesse caso. Veja no Java. E uma biblioteca que faz uma implementação concreta e mais poderosa para isso no PHP: https://github.com/php-deal/framework. Pra afirmar com "só", "sempre", "nunca", o ideal é ter um embasamento muito sólido te acompanhando, que não é o meu caso nesse tópico. Eu diria que sim, mas posso estar enganado. De fato existe uma relação, mas são coisas diferentes. Você pode usar a sobrecarga como ferramenta para alcançar esses recursos, mas acho que dizer que estão "diretamente associados" é um pouco demais (mas na minha opinião isso é apenas uma verdade relativa, diferente do que temos como experiência do erro e do acerto em busca do conhecimento). Eu gosto muito do conceito de sobrecarga e realmente acho muito tosco aqueles métodos mágicos do PHP (apesar de interessante ter o recurso para alguns casos extremos). Se houvesse sobrecarga de fato no PHP, com certeza seria mais fácil aplicar tudo isso. Pode perguntar quantas vezes necessário, amigo. Estamos aqui para compartilhar conhecimento. Se eu não souber, alguém vai saber :)
  3. 4 pontos
    Ah, e quase esquecendo... agora há o suporte para Type Widening. Isso também é fundamental para complementar as informações do post anterior, pois dá espaço para a omissão do tipo de parâmetro. Veja o exemplo do manual: <?php interface A // também serve para classes { public function Test(array $input); } class B implements A { // tipo foi omitido, alterando a declaração do método na classe filho public function Test($input){} } Mas eu ainda acho que é apenas meio caminho para os recursos que você citou...
  4. 4 pontos
    Olá @Dorian Neto. Covariância é a capacidade de você declarar o retorno de um método para um objeto X e após isso, declarar que uma classe filha possa retornar neste mesmo método uma variante do objeto (Y extends X, por exemplo). Na prática é isso: <?php class X {}// uma classe class Y extends X {}// uma variante daquela classe class Foo { public function method() : X {}// retorna X } class Bar extends Foo { public function method() : Y {}// alteramos o retorno do método para retornar Y } Contravariância é a mesma coisa, mas para os parâmetros, ao invés do retorno. Veja: <?php class X {}// uma classe class Y extends X {}// uma variante daquela classe class Foo { public function method( X $param ) {}// recebe X } class Bar extends Foo { public function method( Y $param ) {}// alteramos o parametro para retornar Y } Isso seria lindo demais, cara. Há pouco tempo eu precisei exatamente desse recurso, e posso lhe mostrar para você ver na prática a utilidade disso. Veja esse código: https://forum.imasters.com.br/topic/562468-estrutura-de-um-projeto-de-marketing-multinível-com-php-e-mysql/?tab=comments#comment-2243078 No arquivo 2 - Mmn/DataStructures/Binary/Tree.php eu construi uma árvore binária. O método push() dessa árvore recebe um Binary/Node. E se eu resolvesse criar uma variação dessa árvore com algum comportamento diferente? <?php namespace Mmn\DataStructures\Multiary; use Mmn\DataStructures\Binary; class SuperTree extends Binary\Tree { /** * Observe que esse Node não é Binary, mas Multiary * contrariando a definição de Binary\Tree (pai dessa classe) */ public function push( Node $Node ) { } } .... mas o fato é que o PHP não suporta esses recursos, nem mesmo na sua versão 7.2, então nenhum dos códigos acima funciona. Mas afinal, pq isso virou assunto? Pq o PHP passou a suportar "meio caminho" para isso (que eu particularmente acho inútil para esse propósito, mas ao menos é mais um recurso na linguagem): um novo tipo chamado object. Com isso você agora é capaz de definir parâmetros ou retornos completamente abstratos (mas que sejam objetos), assim: <?php // Código copiado do manual // http://php.net/manual/pt_BR/migration72.new-features.php#migration72.new-features.object-type function test(object $obj) : object // aqui está a novidade (parametro e retorno) { return new SplQueue(); } test(new StdClass()); // Esse funciona apenas no PHP 7.2
  5. 3 pontos
    A solução para isso definitivamente não é ofuscar (me refiro ao base64 citado) o que vem do banco. Até pelo fato de que uma hora você precisa desofuscar, e nesse momento você se torna vítima de outras duas vulnerabilidades: - SQL Injection de segunda ordem - XSS @BrunoBit, para o banco, sempre utilize (ou ao menos em todas as consultas que utilizam variáveis do tipo string) prepared statements com os tipos corretamente definidos. Isso é 70% do caminho e algo extremamente simples de ser feito. Para XSS e outros abusos, há dois recursos eficientes: htmlentities() Definições apropriadas dos cabeçalhos de respostas
  6. 3 pontos
    Tirando que é uma sobreescrita (override) e não uma sobrecarga (overload), isso é verdade para a implementação no PHP. Mas só, e somente só, pelo motivo de covariância ser implementada somente para retorno de método e contravariância ser implementada somente para atributos de métodos no PHP. A definição geral é ainda mais simples: - Covariância: permitir o uso de um objeto mais específico no lugar de um mais genérico; - Contravariância: permitir o uso de um objeto mais genérico no lugar de um mais específico. No caso de sobreescrita (override), é chamado de: - Covariância/Contravariância de tipo de retorno de método (Covariant/Contravariant method return type); - Covariância/Contravariância de tipo de argumento de método (Covariant/Contravariant method argument type). O que o PHP está implementado é o seguinte (de forma bem básica, através do uso do tipo object): - Covariância de tipo de retorno de método; - Contravariância de tipo de argumento de método. Por que ele não implementa ambos? A resposta é bem simples, fere o Princípcio de Substituição de Liskov. De qualquer forma, existem poucas linguagens que implementam para ambos. Mas ai já não vem ao caso. Existem outros tipos de implementações além de métodos? Sim, pode verificar em C# com uso de Generics. https://docs.microsoft.com/en-us/dotnet/standard/generics/covariance-and-contravariance
  7. 2 pontos
    Aparentemente, está sendo declarado que a variavel _0xdcccxd terá seu valor igual ao valor armazenado na array _0x6c90 na posição 69. Isso não é algo que precise ser decodificado, está apenas obscurecido para parecer outra coisa que não é.
  8. 2 pontos
    Olá @Nerdmonkey. Na maior parte do tempo, seu cliente (ou até mesmo o usuário final) não dá a mínima para o quanto de memória sua aplicação está usando, se ela foi feita em PHP ou Java, se trabalha com mono ou multi-threads, se roda na versão X.Y.Z ou na versão A.B.C, enfim, você entendeu. Para esse cara, o que importa é conseguir interagir com o sistema e que ele funcione. Simples assim. Quem se importa com qualidade do código? Você e quem vai lidar com o código futuramente. Ninguém mais. Então eu acredito que dá pra resumir a resposta no seguinte: O projeto pode crescer de alguma forma? É um sistema ou apenas uma página de apresentação da empresa? Se ele puder crescer, invista na qualidade. Seu cliente não se importa nesse momento, mas ele está pagando por um trabalho que ele espera ser bem feito e futuramente as consequências (boas ou ruins) disso surgirão. Se esse não for o caso, você pode sacrificar algumas boas práticas em nome do seu compromisso com o cliente. No final, dá na mesma. Nós programadores, tendemos a ser muito vaidosos com nossos códigos, e isso é excelente. Apenas não esqueça que há limites para isso... um sistema não termina nunca. Você pode ficar otimizando ele o resto da vida.
  9. 2 pontos
    Se quer fazer formatações diferentes, o ideal é utilizar classes para cada h1. Até para reaproveitar o código. <style> .primeiro-h1 { font-family: Arial; font-size: 30pt; color: blue; text-shadow: 2px 2px 2px black; } .segundo-h1 { font-family: Arial; font-size: 50pt; color: red; text-shadow: 5px 5px 5px black; } </style> <body> <h1 class="primeiro-h1">Olá, mundo!!</h1> <h2>Vou chegar lá!!</h2> <h1 class="segundo-h1">OBAA!!</h1> </body> Só lembrando que se sua aplicação for um site, não é legal ter mais de um h1 por página.
  10. 2 pontos
    @Jorge10, desculpe corrigi-lo, amigo, sei que a intenção foi boa, mas o foco do fórum é justamente debater e compartilhar conhecimento. Sugestões de livros, cursos, artigos sempre estiveram presentes :) Só não é "legal" compartilhar material pago. O que for livre sempre será bem-vindo. @MateusFreitas01, faça uma busca dentro do fórum. Essa pergunta é comum. Recomendo você procurar no Youtube também. Muitas pessoas o esquecem como fonte de estudos e lá tem muito material bacana. Se você entender inglês, melhor ainda.
  11. 2 pontos
    @BrunoBit, vou precisar resumir um pouco a minha resposta, pq ando bem atarefado aqui (construindo uma API, justamente): Uma API REST/RESTful (que imagino que seja isso que você quer) sem definição apropriada de cabeçalhos de resposta não é uma API. Veja: http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api Alguns exemplos: Sua aplicação retorna json? Você precisa definir Content-Type para application/json. GET /produtos/35: - Retornou um produto? Precisa retornar OK 200. - Não retornou um produto? Retorne 404. Veja esse diagrama: https://raw.githubusercontent.com/for-GET/http-decision-diagram/master/httpdd.png PATCH /produtos/35 { "descrica": "nova descrição para o produto 35" } Observe o erro de digitação no parâmetro da requisição. Essa requisição deve retornar Bad Request 400. Eu estou construindo minha API em JS/Node.js por alguns requisitos do meu modelo de negócios, mas você não perde absolutamente nada escrevendo em PHP, se você utilizar a versão 7, que praticamente foi reescrita do zero e está muito mais rápida e otimizada (dizem que em torno de 10x). Citei o Node exatamente pq é muito comum usarem ele para APIs e você com muita frequência vai/deve ouvir falar dele ao construir uma, mas quis já tirar essa sua dúvida se ela acabar brotando na sua cabeça em algum momento. No contexto de PHP, construir uma classe Response para aplicação é super fácil... existem muitos exemplos e códigos prontos por aí. Você ainda tem a opção de usar uma microframework. Extremamente comum para APIs. Exemplos: Silex e Lumen. Ou, claro... simplesmente estudar essas respostas e implementar manualmente. Apenas a função header() já é suficiente nesse caso. Essa é a magia do PHP
  12. 2 pontos
    Certo, certo então vou sinalizar o tópico como resolvido, serve de consultas futuras. Mesmo porque nada que a pessoa faça garante 100% de segurança. O que ele pode fazer e enfiar segurança por cima de segurança, que vai deixar a aplicação lenta e ainda não é totalmente confiável. Deixarei aqui minhas classes que trata de conexão, injeção, e leitura. Connect Insert Exemplo de uso Select Exemplo de uso: É muito importante que personalize os gatilhos de exceções porque quando há erro a PDO vai informar corretamente qual o erro que foi disparado. E isso não é legal para mostrar para um usuário. Como sugestão que é como uso uma classe Exeption personalizada que ofusca os erros, ao qual usará toda vez que necessitar dos métodos dessas classes, assim sendo você pode mostrar o erro que quiser para o usuário e ainda por exemplo salvar logs de erros reais da aplicação, usando os apresentados originalmente, para futuras consultas de manutenção.
  13. 2 pontos
    Ah, @Omar~, muito importante também, para você que usa PDO: Desabilite as multi-queries na sua conexão PDO. Dessa forma, além da segurança das prepared statements, você impede a execução de mais de uma instrução SQL em uma consulta. Veja um exemplo: <?php $Pdo = new \PDO( "mysql:host=localhost;dbname={$base};charset=utf8", $usuario, $senha, [ \PDO::MYSQL_ATTR_MULTI_STATEMENTS => false, //desabilita multi-queries \PDO::ATTR_ERRMODE => \PDO::ERRMODE_SILENT, //desabilita erros. Faça em produção somente \PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" //garante utf8 ] ); Desabilitar os erros em produção também é extremamente importante, pois além de expor detalhes indesejados, é sabido que o PDO pode expor a senha do banco quando dispara um erro (!).
  14. 2 pontos
    Certo... nesse caso é muito relativo com o seu modelo de negócios. 1 - Analise primeiramente se isso é realmente necessário. Faça apenas em último caso e preferencialmente se houver algum nível de confiança no usuário que vai mexer (não existe confiança em um visitante qualquer, anônimo e de qualquer lugar do mundo). 2 - Cuide dos cabeçalhos. Estude-os e implemente-os. 3 - Conheça javascript e seus poderes. Hoje em dia você consegue até minerar bitcoin com JS (imagina um G1 da vida fazendo todos os visitantes minerarem por eles... isso já é uma realidade em muitos sites). O JSFiddle, por exemplo, não é algo tão perigoso, pois JS roda no cliente e só quem acessar um fiddle específico iria executar o código malicioso, bastando fechar a janela para sair, mas no meu exemplo que citei anteriormente, seria mais complicado. Você precisaria varrer o código e bloquear algumas coisas manualmente, provavelmente. Não cheguei a implementar isso de fato (e nem sei se me sentiria confortável com isso rodando no meu código), então minha noção é um pouco limitada em relação às dificuldades, precisamente falando. Esse vídeo é simplesmente uma obra-prima. Se vocês entendem bem inglês ou encontrarem legendado, recomendo MUITO, pois mesmo sendo um pouco antigo, é válido nos dias atuais: https://www.youtube.com/watch?v=YDW7kobM6Ik No final ele dá umas pinceladas a respeito do acesso totalmente invasivo que o Google tem sobre nossas redes físicas (wireless) e como é relativamente fácil você mudar a senha de roteadores usando puramente JS remoto.
  15. 2 pontos
    Bem-vindo ao fórum, de cara já conheceu o Mestre Matheus, sempre poste aqui suas dúvidas, mas sempre foque em estudar... ;)
  16. 1 ponto
    É porque o asynchronous não está funcionando (ajax feito errado). Poste o código javascript, usando spoiler e code para que possamos ajudar.
  17. 1 ponto
    Por que de qualquer forma, em algum momento que você se deparar com algo e não entender o que esta realmente acontecendo, vai ser obrigado a voltar (e muitas vezes não possuindo tempo hábil para tal) e ter que aprender pela "dor".
  18. 1 ponto
    Cada qual com sua opinião, mas eu acredito que a utilização de um framework só deve ser feita por quem tenha conhecimentos mais do que básicos de html, css e js... Att.
  19. 1 ponto
    No lugar do :hover do css, você terá que usar um label for="" e um input checkbox, para poder usar o pseudo :checked e o seletor ~ (irmão). Pesquise por `accordion pure css` que você irá encontrar.
  20. 1 ponto
    Você pega esse conteúdo utilizando json_decode(): $json = json_decode(URL); echo $json->motto; ou você pode fazer assim também: $json = json_decode(URL,true); echo $json["motto"]; ambos retornarão o resultado: - O amor é o vínculo da perfeição.
  21. 1 ponto
    Fugiu do contexto.... Mas dúvida é dúvida. Exemplo da classe: Exemplo de execução Mas não sei se tem jeito melhor de fazer. Só sei que inventei esse jeito na gabiarra e funciona muito bem para tratar de erros.
  22. 1 ponto
    @BrunoBit, citando o código do Omar, em relação à conexão: try { if (self::$isConnect == null) { $dsn = 'mysql:host=' . self::$host . '; dbname=' . self::$data; $options = [PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8']; self::$isConnect = new PDO($dsn, self::$user, self::$pass, $options); } } catch (PDOException $error) { die("<br>Não foi possível conectar com o banco de dados!<br Descrição: {$error->getMessage()}<br>"); } Programa, tente (try) conectar com o PDO. Em caso de erros, capture (catch) o resultado, imprima-o e encerre (die) a execução. Procure por Exceptions e try/catch.
  23. 1 ponto
    Tente esse código, fiz com duas subqueries mas se der certo a gente tenta otimizar. select lei.id_produto,lei.id_usuario, lei.id_lance,lei.data_lance from leilao_arremates lei, (select le.id_produto, le.id_lance,min(le.data_lance) as min_data from leilao_arremates le, (select id_produto,max(id_lance) as max_lance from leilao_arremates group by id_produto) as x1 where le.id_lance = x1.max_lance AND le.id_produto = x1.id_produto group by le.id_produto, le.id_lance) as x2 where lei.id_produto = x2.id_produto AND lei.id_lance = x2.id_lance AND lei.data_lance = x2.min_data
  24. 1 ponto
    @BenficaScore Maravilha! Agora ficou fácil de resolver. 1- Você precisa corrigir a marcação HTML, pois existem várias aberturas e fechamentos da tag LI sem necessidade. Marquei elas na solução que propus para que você as retire da marcação. 2-) Para controlar a largura de cada submenu separadamente, com uso de CSS, você precisa definir uma largura fixa explicita para cada submenu. Tal largura será aquela suficiente para acomodar o texto do link mais largo em cada submenu. No final da sua folha de estilo acrescentei as regras CSS para definir aquela larguras. Veja a solução em https://jsfiddle.net/maujor/kpmpaesz/2/
  25. 1 ponto
    Ficaria assim, de uma maneira mais segura: <?php include "conecta_mysql.inc"; $escritorio = $_POST["n_escritorio"]; $resultado = $mysqli->prepare("SELECT * FROM registros WHERE escritorio = '".$escritorio."'"); $resultado->execute(); $resultado->store_result(); $linhas = $resultado->num_rows; $mysqli->close();
  26. 1 ponto
    Consegui Bruno, muito obrigado, você é o cara, sei que parece simples para você, mas para mim foi algo difícil!
  27. 1 ponto
    @TrojanRat Boas e seja bem-vindo. Para utilizar o sistema de grid/colunas do bootstrap, basicamente você precisa do conjunto: "container > row > col-*", isso na verdade é uma regra do framework, "col-*" deve estar dentro de "row" e este por sua vez, dentro de "container" (fluido ou não). Se não precisar de colunas, pode dispensar o uso de "col-*" e "row", talvez até o "container" (dependendo do seu projeto). No seu caso, eu sugiro algo como abaixo. <header> <div class="container barra-best-seller"> <h1> Best Seller PC - Oficial Games </h1> <div class="row games-best-seller"> <div class="col-sm-6 col-md-4"> <div class="thumbnail"> ...conteudo coluna 1... </div> </div> <div class="col-sm-6 col-md-4"> <div class="thumbnail"> ...conteudo coluna 2... </div> </div> ...outras colunas... </div><!--/row--> </div><!--/container--> </header> Obs.: Para ver como o framework trabalha, remova seus estilos e veja que o resultado é o que você espera (op), depois é só estilizar a seu gosto. Att.
  28. 1 ponto
    Faça uma trigger de before insert ou update e se o valor da coluna ficar "0" gera um erro. Ao menos vai saber aonde ocorre. Pode ser um caminhão de coisas.
  29. 1 ponto
    Olá, @adrferreira4 Não sei se é melhor forma de resolver, mas eu faria da seguinte forma: - Quando o usuário escolhesse uma turma, chamaria uma função no JS que faria uma requisição para pegar os possíveis turnos daquela turma. Para isso você usaria eventos do JS e Ajax. - Após você receber esses valores, com o JS você retorna as opções nos Options do Select. Dessa forma você não traz nenhum valor no select quando carregar a página, apenas após a escolha de uma turma essas opções seriam carregadas. No link abaixo tem um exemplo de como você selecionar o option de um select com JavaScript puro. https://pt.stackoverflow.com/questions/183354/selecionar-option-de-um-select Mas você também pode usar alguma biblioteca, como o jQuery, que facilitaria muito. http://api.jquery.com/change/
  30. 1 ponto
    Não é possível. O diálogo de impressão está fora do que você consegue manipular. Para imprimir direto apenas usando linguagens desktop e conectando na impressora via socket.
  31. 1 ponto
    $this é uma pseudo variável (quer dizer que ela se comporta como uma variável, mas, você não na verdade uma variável). A parte grifada explica que $this está disponível dentro de um método que é chamado de dentro do contexto de um objeto, ou seja, uma referência do objeto chamado. Você utiliza a variável $this dentro da class dbconn, pois, você está dentro de um contexto do objeto. Para continuar utilizando o método PDO::prepare, você pode realizar de duas formas Acessando a variável que contém a instância de PDO: $result = $conexao->dblocal->prepare($select); Ou criando o método prepare na class dbconn e realizando a chamada na PDO: class dbconn { /** demais código omitido **/ public function prepare(string $statement , array $drive_options = array()) : PDOStatement { $this->dblocal->prepare($statement , $drive_option); } } Essas poderiam ser alternativas para a resolução da questão. Entretanto, a PDO é uma biblioteca bem completa. Contanto que você não esteja criando nenhum comportamento novo e/ou adicionando novas funcionalidades, não há motivos para encapsular a PDO em outra classe. Utilize-a diretamente como ela é.
  32. 1 ponto
    tu poderia usar uma div com fundo transparente só para os inputs e colocar ela acima dessa div com fundo branco, ai posicionando a div com os inputs mais pra esquerda eles vão certinho, é uma ideia, já que eu não tenho em mãos o seu código pra dar uma olhada
  33. 1 ponto
    Use a propriedade background-size. https://www.w3schools.com/cssref/css3_pr_background-size.asp. No caso de uma background ao fundo do body, você deve prever que em caso de rolagem da tela a imagem acompanhe o movimento, para isso use background-position: fixed
  34. 1 ponto
    @BrunoBit, você deveria dar uma olhada nas especificações dos headers. O material da W3C seria o ideal, mas é mais complicado, dentro de um assunto que deveria ser simples... nesse caso eu indico a Wikipedia mesmo, veja que rico esse material: https://en.wikipedia.org/wiki/List_of_HTTP_header_fields Observe que há uma divisão entre "Cabeçalhos de resposta", "Cabeçalhos não-padronizados para request e/ou response" e "Cabeçalhos da requisição". Você deve estudar os de resposta principalmente. Perceba que sempre há um FIELD e um VALUE (par chave/valor). O status code você deveria definir usando a http_response_code(). Não é que não dê pra usar o header() nesse caso, mas essa função simplifica um pouco o processo. Os outros cabeçalhos você mantém o padrão da função header, que ainda possui 2 atributos extras, que você deveria dar uma olhada no manual. Para verificar os cabeçalhos de resposta (não apenas do seu site, mas dos outros também, para poder estudá-los), use as Feramentas de desenvolvedores (DevTools) dos navegadores. Vá em Network/Rede e procure pelos cabeçalhos de resposta da página (às vezes você precisa atualizar a página para garantir que apareça na lista). Essa é a forma mais fácil, mas você ainda pode usar Postman, CURL e outras ferramentas.
  35. 1 ponto
    Pior que isso tem um fundo de verdade... mesmo que sua aplicação esteja "blindada", às vezes o ambiente em que ela está inserida, o sistema, a versão do PHP/mysql, a rede ou alguma dependência está vulnerável. Bons exemplos de coisas que fogem do nosso controle são o Heartbleed e os últimos Spectre e Meltdown. O fato é: mesmo assim quase todos dessa lista podem ser estudados, melhorados e gerenciados até um certo nível. Por isso nunca devemos ser negligentes com a segurança do nosso app. Sim, você falou uma boa verdade aqui. Apenas silenciar os erros, como eu sugeri, não é a melhor solução, mas é mais fácil nesse assunto de PDO x segurança. O caminho correto é sempre tratar os erros e não silenciá-los, exatamente como você disse. Apenas para complementar caso alguém caia de paraquedas aqui: capture os erros a partir de exceções (PDO::ERRMODE_EXCEPTION) e não através de warnings (PDO::ERRMODE_WARNING). Esse cuidado com o ERRMODE de qualquer forma precisa existir. O error_reporting() também é uma definição importante nesse assunto.
  36. 1 ponto
    @BrunoBit, esse repositório não é do imagick, mas de "exemplos do imagick". O do imagick é esse: https://github.com/mkoppanen/imagick E do ImageMagick é esse: https://github.com/ImageMagick/ImageMagick Não dá pra criar extensões do PHP escritos em PHP (pois isso seria apenas um pacote PHP e não uma extensão)
  37. 1 ponto
    @Matheus Tavares sensacional a sua resposta, muito obrigado! Como fiz algumas pesquisas antes da sua resposta, acabei associando as definições que encontrei com a sua e isso me gerou mais dúvidas :P Variância é a capacidade do método se transformar (tipos da entrada e saída) com o intuito de retornar um novo comportamento, isso eu entendi, mas a minha dúvida ainda é no conceito de covariância e contravariância. De acordo com o que eu pesquisei, meu entendimento final foi esse: Covariância: é quando há uma sobrecarga em um método da subclasse onde o tipo do parâmetro ou retorno é transformado em um tipo igual ao do método da superclasse ou mais específico. Contravariância: é o contrário da covariância, ou seja, quando há uma sobrecarga em um método da subclasse onde o tipo do parâmetro ou retorno é transformado em um tipo igual ao do método da superclasse ou mais genérico. Exemplo de covariância: <?php class X { public function foo(): object // tipo genérico { // ... } } class Y extends X { public function foo(): string // tipo específico { // ... } } Exemplo de contravariância: <?php class X { public function foo(array $param) // tipo específico { // ... } } class Y extends X { public function foo(object $param) // tipo genérico { // ... } } Isso está correto? Covariância só se aplica a retorno e contravariância só se aplica a parâmetros? Além disso, um método invariante quer dizer que o mesmo não sofreu nenhum tipo de transformação, correto? Depois de refletir mais um pouco, pensei se esse conceito está associado diretamente com sobrecarga, recurso esse que o PHP ainda não tem (até tem, mas estranhamente o conceito é totalmente diferente das demais linguagens.). Se realmente essa reflexão que eu fiz com relação a associação de sobrecarga com variância estiver correta, você acha que é isso que falta para esse conceito ser aplicado de vez no PHP? Mais uma vez, muito obrigado pelas resposta e me desculpe pela enxurrada de novos questionamentos :P @BrunoBit o nome disso é Type Hiting. hoje em dia chamado de type declarations ou declaração de tipo ou indução de tipo. Segue o link na documentação: http://php.net/manual/pt_BR/functions.arguments.php#functions.arguments.type-declaration
  38. 1 ponto
    @Matheus Tavares O que seria essas "declarações" que você faz dentro dos parâmetros dos métodos? Eu já vi algumas vezes isso, mas não sei o nome pra pesquisar sobre. Exemplo: public function Test(array $input); public function push( Node $Node )
  39. 1 ponto
    Obrigado a todos! daqui a uns tempos irei utilizar a IDE do netbeans para desenvolvimento do java, por enquanto no curso utilizo o eclipese Valeu!
  40. 1 ponto
    $conn = [ 'host' => 'endereço do banco de dados', 'user' => 'login de usuário do banco que pode pelo menos fazer leitura', 'pass' => 'senha de usuário usado acima', 'data' => 'nome do banco de dados para conectar', ]; $mysqli = new mysqli($conn['host'], $conn['user'], $conn['pass'], $conn['data']); if ($mysqli->connect_error) { die('Error de conexão (' . $mysqli->connect_errno . ')' . $mysqli->connect_error); } else { echo "Conexão foi bem bem sucedida"; }
  41. 1 ponto
    Montei um exemplo aqui, veja se ajuda: Precisa de alguma refatoração no código.
  42. 1 ponto
    var Campo1 = document.getElementById( 'campo1' ); var Campo2 = document.getElementById( 'campo2' ); var Botao = document.getElementById( 'enviar' ); podeEnviar = function() { return parseInt( Campo2.value ) >= parseInt( Campo1.value ); }; alterarDisponibilidadeBotao = function() { Botao.disabled = !podeEnviar(); }; // executamos a função para desabilitar o botão por padrão alterarDisponibilidadeBotao(); Finalizei e testei o script aqui, mas honestamente, isso é tão simples, que eu duvido que o Google não teria jogado muito material a respeito... então eu tirei 2 linhas do código para você pesquisar e finalizar por conta própria. Faltam apenas duas linhas, que deveriam escutar os eventos de entrada do teclado nos inputs e invocar/disparar o alterarDisponibilidadeBotao(). Obs: Você deve carregar o script no seu HTML antes do encerramento do <body> (sim, nas últimas linhas de código). Isso é para que os campos/botão já tenham sido renderizados. Do contrário, getElementById vai acusar erro.
  43. 1 ponto
    Poderia utilizar uma lista de definição, algo como: <dl> <dt>Atividade:</dt> <dd>Entrevista presencial...</dd> <dt>Data:</dt> <dd>10/01/2018...</dd> ... </dl> Att.
  44. 1 ponto
    @BrunoBit, o Referer não é nada confiável. 1 - Se você está em um aplicativo, como o Whats ou Fb, não existe referência, mas você pode inserir uma informação para saber de onde veio esse acesso ao compartilhar o link. Exemplo: http://meusite.com.br/ref=whats 2 - Pode ser óbvio, mas ao trocar de aba ou abrir em nova janela, perde-se a referência. E isso não é nada incomum. Especificamente sobre a sua dúvida, não tenho como saber o que pode estar acontecendo, pois depende de uma infinidade de coisas: seu servidor web, seu navegador mobile e outras variáveis que podem estar afetando, mas na teoria era para funcionar sim. @Omar~, veja essa biblioteca: https://github.com/ThaDafinser/UserAgentParser
  45. 1 ponto
    Eu sempre fico curioso, porque as pessoas usam id e name em forms sem a necessidade? Poderia me esclarecer isso? Uma vez que ambos são identificadores. Bem com jQuery facilita tudo, então você pode criar variáveis encapsulando para cada input. var nome = $('input[name="nome"]').val(); var senha = $('input[name="senha"]').val(); var email = $('input[name="email"]').val(); $.ajax({ method: 'POST', url: 'inserir.php', dataType: 'html', data: {nome: nome, senha: senha, email: email}, success: function (data) { // Post success } }); Tem uma jeito mais simples veja: O método serialize da jQuery já vai enviar todos os valores que estiverem em inputs que estejam identificados com NAME para o arquivo que colocar em url
  46. 1 ponto
    Habilite as permissões de gravação nas respectivas pastas onde está querendo mover a imagem.
  47. 1 ponto
    "Estilo de codificar" não é uma boa expressão para representar os padrões de projeto. Padrões de projeto nada mais são do que "soluções" para problemas comuns (sim, entre aspas). Quando você os conhece fica mais fácil criar caminhos para construção de códigos mais eficientes e mais manuteníveis. No entanto, minha sugestão é: não se sinta atraído por nomes bonitos, por parecerem mais inteligentes. Estude sim os padrões, vale a pena à longo prazo, mas OO você aprende mesmo na prática, não na teoria. Na Wikipedia há um excelente artigo a respeito. Lá você encontra as definições desses termos "padrão comportamental", "estrutural", etc, que você tem dúvidas. Também encontra o seguinte trecho (que eu concordo): O próprio João debateu a respeito desse aumento desnecessário de complexidade na sua brilhante palestra sobre o tema: https://www.youtube.com/watch?v=k7YgqITFaKk Também não posso deixar de recomendar os livros: - Código Limpo, do Robert C. Martin. Esse é fenomenal. Foi o próprio João que me indicou, inclusive. - Padrões de Projetos, da Gang of Four. Singleton é o mais simples e provavelmente o mais controverso dos padrões de projeto. Eu particularmente sou contra o uso dele. Existem diversos materiais a respeito, mas aqui há um simples de entender: https://wehavescience.wordpress.com/2012/11/01/singleton-um-exemplo-simples-e-pratico/ Também não custa mencionar argumentos contra o seu uso. Mas o ideal é você criar um tópico para cada dúvida a respeito. Vamos tentar não poluir esse para quem cair aqui de paraquedas. Há muito material sobre os padrões de projeto, inclusive aqui no fórum.
  48. 1 ponto
    Não entendi muito bem o que você precisa. Você começou dizendo que precisava unir as strings dos nomes dos produtos, mas agora disse sobre capturar a soma das entradas/saídas. Para a soma das entradas e saídas você deveria sim utilizar funções de agregação, mas em conjunto com a instrução GROUP. A ideia seria fazer algo assim: SELECT p.id, p.nome, SUM( e.valor ) valor_entradas, SUM( s.valor ) valor_saidas FROM produtos p INNER JOIN entradas e ON e.produto = p.id INNER JOIN saidas s ON s.produto = p.id GROUP BY p.id
  49. 1 ponto
    Dificilmente vou ver um alguém com esse pensamento que compartilho contigo... boa!! Faltou só responder a pergunta claramente, estou meio lento hoje mas acho que respondeu, hahahaha! Bom, realmente falta um for nisso ai, nesse exemplo aqui você encontra 100% JavaScript puro e consegue entender a logica perfeitamente, uso esse script para tudo que faço com accordion e sem me preocupar com manutenção de códigos de terceiros: https://www.w3schools.com/howto/howto_js_accordion.asp
  50. 1 ponto
    Olá Norefenk, fiz um SELECT utilizando a mesma lógica que você, mas no meu caso tenho um MENU também dinâmico, onde toda vez que cadastro um item nesse menu ele aparecerá nesse select, que posteriormente passará a ser atribuído como categorias e sub-item da categoria estilo menu de loja, porém terá paginação também recebendo os dados do banco, na medida que forem sendo cadastrados produtos por item nesse banco a paginação limitada em 18 linhas continuará o próximo ciclo de paginação dinamicamente, recebendo as seguintes condições: :seta: Missões: Dúvida 1 -> Paginar por link de itens cadastrados Paginar por menu paginação (rodapé) Paginar por categoria (Ainda não criado) Essas são as próximas missões daqui pra frente! :seta: Minha dúvida agora, se refere: Como atribuir link nos OPTIONS vindos do banco mostrados no SELECT? Alguém pode me ajudar?
Esse placar de líderes está definido para São Paulo/GMT-03:00
×

Informação importante

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

Este projeto é mantido e patrocinado pelas empresas:
Hospedado por: