Ir para conteúdo

Omar~

Members
  • Total de itens

    1325
  • Registro em

  • Última visita

  • Dias vencidos

    15

Posts postados por Omar~


  1. Acontece que por padrão os browsers já estão configurados para bloquear execução automática de mídias para segurança do usuário. Ou seja para uma reprodução desse tipo requer autorização para ser efetuada.

    Isso é recente, mas teve de ser adotado (graças a deus) pelo abuso de má prática que forçar um usuário a fazer o download de um arquivo sem a autorização dele (quando se insere/carrega um arquivo pelo source o download do arquivo será feito).

    Então o que impede daquele aquivo que será feito o download automaticamente esteja infectado com alguma ameaça?

    Mas pelo que fiquei sabendo esse não foi o principal critério do bloqueio e sim foi por causa de propagandas.

     

    Enfim para que o atributo autoplay funcione o usuário deve autorizar que aquele endereço específico pode enviar arquivos seja, áudio seja vídeo.

     

    Segundo um artigo que li a algum tempo a equipe do Mozilla já cogitou em remover suporte a isso em seu navegador.


  2. <button id="exemplo">Segure esse botão</button>
    
    <script>
        var botao = document.getElementById('exemplo');
        botao.addEventListener('mousedown', pressiona, false);
        botao.addEventListener('mouseup', solta, false);
    
        var qualquer = 0;
        var intervalo;
        function pressiona() {
            window.intervalo = setInterval(algumacoisa, 100);
        }
    
        function algumacoisa() {
            window.qualquer += 1;
            console.log(window.qualquer);
        }
    
        function solta() {
            clearInterval(window.intervalo);
            window.qualquer = 0;
        }
    </script>

     


  3. 19 horas atrás, Ak_Ray disse:

    Notice: Undefined variable: pdo in C:\xampp\htdocs\Sistema de Cadastro beta0.1\AreaPrivada.php on line 53

    Isso é porque a variável pdo não existe!

    Logo ela deve ser criada para instancia da classe PDO. Se ela não foi criada ou ouve erro ao criar a instancia irá gerar esse erro.

     

     

    19 horas atrás, Ak_Ray disse:

    Não entendi muito bem esta passagem do seu tópico: "

    
    $update->execute(['username' => 'Chapolin', 'userlogin' => 'Chiquinha', 'userid' => 1]);
    

    Aqui é subjetivo.... Enfim basicamente é passar um array com os índices esses serão os mesmos do statement e os valores de cada índice é os dados a manipular.


  4. Primeiramente cuidado para não aprender da forma errada!

    13 horas atrás, Ak_Ray disse:

    então decidi aprender sozinho por tutoriais na internet

     

    Bom o que irá fazer para trazer os resultados é dar um select na tabela que deseja, assim como está fazendo. Então é só executar um fetchAll nos dados.

    Exemplo:

    $sql = $pdo->prepare("SELECT * FROM usuarios");
    $sql->execute();
    $dados = $sql->fetchAll(PDO::FETCH_ASSOC);
    if($sql->rowCount()) {
        echo "<pre>";
        var_dump($dados);
        echo "</pre>";
    }

    Nesse caso é todos os dados da tabela "usuarios", mas você pode buscar por ídices expecíficos também através de bind ou statements.

     

     

    Eu preparei um tópico aqui no iMasters para ajudar quem se adentra no PDO, pode ser útil para você nesse começo.

    https://forum.imasters.com.br/topic/565800-crud-introdução-a-pdo/

     


  5. Conseguir fazer usando uma "gabiarra" aqui.

    Veja, o que eu fiz foi usar métodos diferentes a cada 2 itens da lista, enfim deu certo ^.^

     

    <style>
        ul {
            list-style: none
        }
        ul > li:nth-child(1),
        ul > li:nth-child(2) {
            display: table-cell
        }
        ul > li:nth-child(3),
        ul > li:nth-child(4) {
            display: inline-block
        }
    </style>
    
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
    </ul>

     


  6. @Felipe Guedes Coutinho

    Quando você faz a seguinte a manipulação de um elemento dessa forma:

    elemento.style.display = "(table|block|inline-block|etc..)";

    Você está removendo todo seu atributo style, substituindo o que existia pelo novo. Pode se feito assim também desde que as demais propriedades do elementos estejam em folha de estilo.

    Quando se ataca diretamente o uma propriedade de atributo específico usamos

    setAttribute('atributo', 'propriedade e valor a alterar/adicionar');

     

     

    Aqui também devo ressaltar, que ficar buscando por vários elementos quando se aciona uma função não é o ideal, pois perdemos em performasse ao executar uma função. Devemos evitar ficar fazendo muitas varreduras no DOM, para melhor desempenho (lógico que em algumas situações isso é impossível).

    O ideal por exemplo é buscar todos esses elementos em um pré carregamento armazena-los e então usar esse armazenamento para atacar os elementos.

     

     

    @vinicius59

    16 horas atrás, vinicius59 disse:

    Então, eu queria certinho é esse script só que em vez de precisar selecionar, for por botão do teclado, o numero 1 seria verde o numero 2 vermelho e o numero 3 cinza, você consegue? e esqueci de colocar que tem que ficar em fileira os quadrados que eu por, e não carregar só um quadrado.

    Não sei ainda se és isso que procura mas veja:

    <style>
        #vermelho,
        #verde,
        #azul {
            float: left; /* Eles vão ficar um ao lado do outro */
            width: 200px;
            height: 200px;
            display: none
        }
        #vermelho.mostrar,
        #verde.mostrar,
        #azul.mostrar {
            display: block
        }
        #vermelho {background-color: red}
        #verde {background-color: green}
        #azul  {background-color: blue}
    </style>
    
    <div id="vermelho">
        Quadrado vermelho
    </div>
    <div id="verde">
        Quadrado verde
    </div>
    <div id="azul">
        Quadrado azul
    </div>
    
    <!-- Necessário lipar os dados flutuantes para correta
         orientação dos supostos novos elementos que podem
         aparecer depois dos quadrados
    -->
    <div style="clear: both"></div>
    
    <script>
        // O evento keypress detecta quando uma tecla é acionada
        document.addEventListener('keypress', executaFuncao, false);
    
        // Armazenamos em um array quais são os elementos que vamos manipular
        var elementos = [
            document.getElementById('vermelho'), // elementos[0]
            document.getElementById('verde'), // elementos[1]
            document.getElementById('azul')      // elementos[2]
        ];
    
        function executaFuncao(e) {
            var key = e.keyCode;
            switch (key) {
                case 49: // Tecla 1
                    elementos[0].classList.toggle('mostrar'); // Vermelho
                    break;
                case 50: // Tecla 2
                    elementos[1].classList.toggle('mostrar'); // Verde
                    break;
                case 51: // Tecla 3
                    elementos[2].classList.toggle('mostrar'); // azul
                    break;
    
                    /*
                     * // Isso está em comentário caso queria que todos
                     * // eles apareçam se qualquer uma das teclas forem
                     * // acionadas, remova a bateria de cima e deixe essa.
                     case 49: // Tecla 1
                     case 50: // Tecla 2
                     case 51: // Tecla 3
                     for (var i = 0; i < elementos.length; i++) {
                     elementos[i].classList.toggle('mostrar');
                     }
                     break;
                     */
            }
        }
    </script>

    Nesse exemplo usei as sequências de injeção classList.toggle, o que fará com que o elemento classificador seja adicionado quando clicado no botão ou removido caso seja acionada a tecla novamente.

    Se quiser que eles continuem mesmo clicando novamente terá que modificar para:

    classList.add

    Nesse caso teremos que consultar se o elemento não tem o que vai adicionado caso contrário inicia o vicio HTML. 

    <div class="mostrar mostrar mostrar mostrar mostrar.... Isso irá se repetir toda vez que uma das teclas forem pressionadas.

    Para prevenir:

    case 49: // Tecla 1
        if (!elementos[0].classList.contains('mostrar')) { // Verificamos se não tem a class "mostrar"
            elementos[0].classList.add('mostrar'); // Vermelho
        }
    break;
    
    /* ou no segunda questão */
    for (var i = 0; i < elementos.length; i++) {
        if (!elementos[i].classList.contains('mostrar')) {
            elementos[i].classList.add('mostrar');
        }
    }

     

     


  7. Existem incontáveis formas de fazer algo assim, cada qual para seu cada qual.

    Se você explicar melhor o que deseja poderá ter uma resposta mais coesa.

     

    <div id="quadrado" style="display:none; height:50px; width:50px; background-color:red">
        Isso só aparece se clicar em algum botão
    </div>
    
    <button class="botao">Botão 1</button>
    <button class="botao">Botão 2</button>
    
    <script>
        var btn = document.getElementsByClassName('botao');
        for (var i = 0; i < btn.length; i++) {
            btn[i].addEventListener('click', function () {
                document.getElementById('quadrado').setAttribute('style', 'display:block');
            }, false);
        }
    </script>

     


  8. Certo que o mercado de apps para mobile cresce mais e mais, e pretendo começar a embarcar nessa jornada.

    Venho a pedir sugestões do que estudar e onde estudar, hora material de qualidade porque como vejo em outros seguimentos a web está cheia de coisa e 99% do conteúdo não presta.

    Por isso esse pedido para que eu não fique dando voltas em círculos e ainda não aprenda corretamente.

     

    Basicamente quero criar aplicativos para smartfones que interajam com websites que desenvolvo, dando um opcional a mais aos clientes que me procuram.


  9. Ambos.

     

    Vamos supor que eu tenha um classificado conteudo.

    logo no css o comum vermos por exemplo:

    .conteudo {color:red}

    Assim sendo todos os elementos que tenham esse classificador irá ter o texto da cor vermelha.

    Mas se por acaso eu queira somente que o texto fique vermelho em tags P, ataco pelo elemento seguido do classificador

    p.conteudo {color:red}

     

    Quando você passa o elemento primeiro você dar mais responsabilidade ao css manipular elementos.

    Não acho uma boa ficar fazendo isso em todo e qualquer elemento, somente quando for realmente necessário.


  10. Estou precisando da ajuda para montar a seguinte query.

    Ao realizar uma consulta usando o operador LIKE em duas colunas de uma tabela, ao qual obtenho o id de um vinculo em outra tabela.

     

    No genérico a query está assim sem entrar na outra tabela

    Citar

    SELECT

      page_link,

      page_sector,  /* AQUI */

      page_content

    FROM

      pages

    WHERE
       page_title
    LIKE

      :datafind

    OR

      page_content

    LIKE

      :datafind

     

    Alí onde tenho a coluna page_sector é o mesmo dado de uma coluna "sector_hash" em outra tabela, ao qual essa tabela armazena os setores, nessa tabela preciso resgatar o valor da coluna "sector_link"

     

    Ou seja ao realizar a consulta preciso renderizar que a página encontrada pertence a tal setor, para que possa passar os links corretamente.

    Assim sendo o usuário irá buscar pelo título ou conteúdo das páginas nos resultados devem vim o link do setor que essa página pertence e a própria página.

     

    Porque passando o hash da página a url fica muito estranha e queria otimizar isso exemplo:

    de

    https://siteurl/ZR7lGBUIv8YICXUBw2RCP0WgxC7AFe1548702043/pagina

    para

    https://siteurl/setor/pagina


  11. Primeiramente esse tópico deveria está em https://forum.imasters.com.br/forum/6-javascript/

     

    Agora a sua dúvida a resposta é sim. Esse é o conceito de orientação a objeto.

    Em diversas linguagens de programação usamos classes, essas compõem atributos, parâmetros e métodos que executam ações diferenciadas, mas os dados podem ser compartilhados entre eles.

    O mesmo pode ser feito em javascript.

    <script>
        var MinhaClasseJS = function () {
    
            this.atributo_publico;
            var atributo_privado;
    
            this.metodoPublico = function (parametro) {
                atributo_publico = document.getElementById(parametro);
                if (metodoPrivado()) {
                    console.log(atributo_privado);
                } else {
                    console.log(
                        'O atributo público é:\n'
                        + atributo_publico + '\n'
                        + 'O atributo privado é:\n'
                        + atributo_privado
                    );
                }
            };
    
            function metodoPrivado() {
                if (!atributo_publico.value) {
                    atributo_privado = 'Coloque algum caractere no campo de texto';
                    return (true);
                }
            }
    
        };
    </script>
    <input id="texto" type="text" />
    <button type="button" onclick="objeto.metodoPublico('texto')">Executar</button>
    
    <script>
        var objeto = new MinhaClasseJS();
    </script>

     

    Nesse exemplo temos temos atributos parâmetros e métodos que usam dados que estão fora de seu escopo mas pertencem a mesma classe.

    E executamos a partir de um objeto criado da class.


  12. Em 23/07/2019 at 10:01, lordstarlight disse:

    A página de erro (404.php) tem um script phpmailer que envia email me infomando do erro.

    Ele pega a url e envia para mim informando o que o usuário digitou.

    Só que mesmo sem exibir esta página de erro ele envia o email, mesmo acessando qualquer página.

     

    De uma revisada nos códigos. Porque condicional só é válida quando entra em sua condição.

    Pode ser que esteja executando o código em outro local.

     

    Verifique também os fechamentos de laços pode ser que uma condicional esteja sendo executada dentro de outra assim executando o código que não era para ser executado.

    Sugiro que faça uma depuração/revisão em todos arquivos envolvidos.

     

    Uso dos blocos try são mais eficientes pra manipulação de dados aleatórios.


  13. Você pode aplicar uma regra para cada entrada na url tipo assim:

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([a-z,0-9,A-Z,_-]+)\/?$ index.php?page=$1 [NC,L]
    RewriteRule ^([a-z,0-9,A-Z,_-]+)\/([a-z,0-9,A-Z,_-]+)\/?$ index.php?a=$1&busca=$2 [NC,L]

     

    No seu caso a primeira entrada é $_GET['page']. Nesse exemplo o mesmo é, mas como temos uma segunda regra temos o que vem depois de $_GET['page'] entra outro caso inserido $_GET['busca']

    Ou seja se a url vier assim: https://site/entrada/carrinho

    Basta que no arquivo que eu incluir com $_GET['page'] eu tome as ações a partir de segunda entrada que seria $_GET['busca'].

     

    Esse exemplo com execução pode ser adquirido pelo meu GIT: https://github.com/Spell-Master/Get-UrlAmigavel/

     

    Se por acaso venha a utilizar muitos parâmetros de entrada, meio óbvio que ficar criando dezenas de regras não é o ideal.

    Nesse post apresentei algo viável nessa situação:

    https://forum.imasters.com.br/topic/583448-como-fazer-url-amigável-com-variáveis-na-url/?tab=comments#comment-2280668

     


  14. Pode-se adicionar isso a tag head

    <meta name="viewport" content="width=device-width, initial-scale=1.0" />

    Assim você indica a escala inicial da página, que browsers vão se orientar por isso para aplicar o media query.

    Sem isso o browser nunca irá saber em qual escala de resolução está a página.

     

    Exemplo:

    <head>
      <meta charset="UTF-8" />
      <meta name="viewport" content="width=device-width, initial-scale=1.0" />
      <title>Título da Página</title>
    </head>

     


  15. Claramente o chrome foi danificado.

    É muito comum isso quando se acessa pricipalmente blogs, e sites adultos, quando não se tem um sistema de proteção que ofereça um mínimo de segurança no caso seu o AVG.

     

    Sugiro a completa remoção do software e seus dados da máquina.

    1 - clique com o botão direito sobre o ícone de atalho do chrome.

    Note se na caixa "Destino" depois de "chrome.exe" existe algo escrito além da àspa, se sim apague o restante do texto.

    2 - Reinicie a máquina e faça a iniciação segura.

    3 - Desistale o Chrome.

    4 - Vá até o diretório:

    C:/Users/SEU_NOME_DE_USUARIO/Local/

    E apague a pasta "google".

    5 - Reinie a máquina e faça o logon normalmente.

    6 - Reinstale o Chrome.

     

    Verifique se o problema persiste.

    Caso sim, o problema é mais grave, scarners podem encontrar a anomalia.

    Mas a melhor opção é a formatação do disco.

    E só adicinar o backup depois da instalação de um software para proteção de ponta... Sugiro o Kaspersky.


  16. Em 12/07/2019 at 09:24, WitchMad disse:

    Cara, muito obrigado, já me ajudou muito!

    Mas ainda sobra umas dúvidas minha:

    Como faço para buscar os valores de id e título que irão sair na url?

    Como redireciono para a página post?

    Simples não?

    Tudo que entra e GET "url" ao qual temos o array, é só ir ap índice do array que contém essa informação.

    Isso é você quem vai controlar no código ao repassar os links.


  17. 22 horas atrás, TheRonaldoStar disse:

    Eu quero que a listagem da ultima mensagem de cada usuário não todas as mensagem daquele usuário, ou seja somente da ultima mensagem de cada um usuário

    Nesse caso você terá que ter uma coluna na tabela para armazenar a data e a hora da última postagem, daí é só fazer a comparação com a data e a hora atual mais atual, só exibindo esse resultado.

     

    Só uma coisa queria ressaltar aqui:

    Você está lançando consultas dentro de loop, isso sobrecarrega demais e você perderá em performasse.

    O ideal é você fazer as consultas separadamente armazenar os valores daí manipular esses resultados.

    Há algum tempo me deparei com essa situação similar veja:

    https://forum.imasters.com.br/topic/580417-separar-resultados-com-base-de-outra-tabela/

     


  18. Existem diversas formas de trabalhar com urls amigáveis.

    Eu gosto de fazer assim:

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?url=$1

     

    Então tudo que entrar depois do endereço do website passa ser uma string url mesmo com barras etc...

    O que faço é buscar todas as ocorrências das barras e separar em índices

    <?php
    /*
     * Isso poderia ser um método de classe que retornasse o array $url
     */
    
    // Pegamos o valor que vem do apache pelo htacess url
    $filter = filter_input(INPUT_GET, 'url', FILTER_DEFAULT);
    // Se existir algum valor usamos se não o valor padrão será inicio
    $setUrl = empty($filter) ? 'inicio' : $filter;
    // Quebramos então em um array todas as ocorrencias de barras
    $explode = explode('/', $setUrl);
    // Caso haja algum valor nulo ou vazio ele será removido
    $url = array_filter($explode);
    
    var_dump($url);

     

    Então nesse caso (removi os acentos):

    post/1/tecnologia-da-informacao-ligada-ao-poder-judiciario-um-pequeno-historico

    <?php
    $url[0]; // É "post"
    $url[1]; // É "1"
    $url[2]; // É "tecnologia-da-informacao-ligada-ao-poder-judiciario-um-pequeno-historico"

     

    No mais é criar tratamentos para converter espaços em traços e acentos em letras comuns. E principalmente para remover códigos caso vá trabalhar com banco de dados.

     

×

Informação importante

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