Ir para conteúdo

Omar~

Members
  • Total de itens

    1325
  • Registro em

  • Última visita

  • Dias vencidos

    15

Tudo que Omar~ postou

  1. Omar~

    Retorno nulo de valores

    Por acaso seria algo como isso? <input type="text" id="valor1" /> <select id="operador"> <option>Adição</option> <option>Subtração</option> <option>Multiplicação</option> <option>Divisão</option> </select> <input type="text" id="valor2" /> <button onclick="calcular()">Calcular</button> <div id="divRes"> Aqui vai o resultado! </div> <script> function calcular() { var divRes = document.getElementById('divRes'), v1 = document.getElementById('valor1').value.trim(), v2 = document.getElementById('valor2').value.trim(), operador = document.getElementById('operador'), valor1 = parseFloat(v1), valor2 = parseFloat(v2), seletor = operador.selectedIndex, resultado; if (!v1 || !v2) { divRes.innerText = 'Preencha os campos com números'; } else if (isNaN(v1) || isNaN(v2)) { divRes.innerText = 'Use somente números para calcular'; } else { switch (seletor) { case 0: resultado = (valor1 + valor2); break; case 1: resultado = (valor1 - valor2); break; case 2: resultado = (valor1 * valor2); break; case 3: resultado = (valor1 / valor2); break; } divRes.innerText = resultado; } } </script>
  2. Omar~

    Validar CPF

    @gersonab HTML: <input type="text" name="cpf" minlength="14" maxlength="18" placeholder="Forneça seu cpf" onkeypress="mask(this, cpf)" onblur="clearTimeout()" pattern="([0-9]{3}[\.][0-9]{3}[\.][0-9]{3}[-][0-9]{2})" /> Javascript: function mask(o, f) { v_obj = o; v_fun = f; setTimeout('obMask()', 1); } function obMask() { v_obj.value = v_fun(v_obj.value); } function cpf(v) { v = v.replace(/\D/g, ""); v = v.replace(/(\d{3})(\d)/, "$1.$2"); v = v.replace(/(\d{3})(\d)/, "$1.$2"); v = v.replace(/(\d{3})(\d{1,2})$/, "$1-$2"); return v; } PHP: if (preg_match('/^([0-9]{3}[\.][0-9]{3}[\.][0-9]{3}[-][0-9]{2})$/', $_POST['cpf'])) { // É Válido } else { // CPF fornecido não é válido! }
  3. Omar~

    Exibir dados de um array que passa de 600 mil índices

    Isso ocorre pelo excesso necessário para processamento por parte do hardware do usuário. Uma boa seria criar uma paginação de resultados no servidor e só entregar alguns dos índices ao usuário, assim sendo ele poderá paginar entre determinados índices desse array.
  4. Omar~

    Criar XML em um diretorio determinado

    fopen('diretório/arquivo.xml','w'); https://www.php.net/manual/pt_BR/function.fopen.php
  5. var string = 'teste', saida; saida = string.substr(-1); // Saída "e" console.log(saida); saida = string.substr(-2); // Saída "te" console.log(saida); saida = string.substr(-3); // Saída "ste" console.log(saida); String.prototype.substr() Funciona da seguinte forma: Quando se passa uma quantidade de letras ela começa pelo início da string, se for um número negativo começa do fim para o início.
  6. Então, cá estou eu tentando fazer umas expressões regulares para validação de links para mídias sociais e me esbarrei em alguns problemas a averiguação da string: A ideia é ter uma expressão para cada mídia social presente no atual momento, só aceitando uma url válida para aquela mídia. Estou com um problema em passar condicionais que quando a string entrar num determinado formato ela deve seguir exatamente o modelo válido para aquela situação. Separei cada condicional em uma linha para melhor entendimento: <?php $urlA = "https://www.facebook.com/profile.php"; // ** ERA PARA SER INVÁLIDO $urlB = "https://www.facebook.com/profile.php?id="; // ERA PARA SER INVÁLIDO $urlC = "https://www.facebook.com/"; // ** ERA PARA SER INVÁLIDO $urlD = "https://www.facebook.com/Fulano"; // Válido, está OK $urlE = "https://www.facebook.com/profile.php?id=999999999999999"; // Válido, está OK $urlF = "https://www.facebook.com"; // ** ERA PARA SER INVÁLIDO $urlG = "https://www.faceboo"; // ** ERA PARA SER INVÁLIDO if (preg_match( '/^' . '(https[\:][\/][\/]www[\.]facebook[\.]com)' // Valida o endereço oficial da mídia . '?([\/])' // Caso contenha ou não uma "/" no final da url . '?([a-zA-Z À-ú 0-9]+)' // Valida se o link do perfil segue um modelo amigável (expl: /fulano) . '|(?:profile[\.]php[\?]id[\=]([0-9]{15}))' // Nessa condicional não estou acertando . '?(.*)' // Essa também não . '$/', $urlA)) { echo 'válido'; } else { echo 'inválido'; } Como podem notar são as duas últimas condicionais que estou com problemas, que são necessárias a correta averiguação das entradas na string, mas seu as adicionar assim como está no exemplo acima tudo desanda fazendo com que não der certo, uma vez removidas as urls que estão inválidas não são aceitas fazendo com que der certo, mas no entanto outras que são válidas passam a não ser aceitas. Onde estou errando? Ao meu ver escrevi a expressão corretamente, mas na prática está errada. Obs.: Por enquanto só escrevi essa para facebook farei para as demais depois que resolver esse empasse.
  7. Omar~

    Condicional quando houver na expressão [RESOLVIDO]

    Poxa foi simples, vacilo meu eu estava comparando as entradas de acordo com string completa, sendo que o correto seria comparar só a partes que sobreponha depois da "/" no endereço. Aqui a solução, aproveitei e simplifiquei a expressão: /^https\:\/\/www\.facebook\.com?\/(?:([a-z0-9\-\_]+)|(?:profile\.php\?id\=([0-9]{15})))$/i Para quem cair aqui de paraquedas segue um exemplo prático de verificação: <?php $url[0] = "https://www.facebook.com/profile.php"; // INVÁLIDO $url[1] = "https://www.facebook.com/profile.php?id="; // INVÁLIDO $url[2] = "https://www.facebook.com/"; // INVÁLIDO $url[3] = "https://www.facebook.com/Fulano"; // Válido, supostamente esse perfil existe $url[4] = "https://www.facebook.com/profile.php?id=999999999999999"; // Válido, supostamente esse perfil existe $url[5] = "https://www.facebook.com"; // INVÁLIDO $url[6] = "https://www.faceboo"; // INVÁLIDO function validar($param) { if (preg_match( '/^' . 'https\:\/\/www\.facebook\.com' . '?\/' . '(?:([a-z0-9\-\_]+)' . '|(?:profile\.php\?id\=([0-9]{15})))' . '$/i', $param)) { return 'válido'; } else { return 'INVÁLIDO'; } } foreach ($url as $key => $value) { echo $key . ' - ' . $value . ' - ' . validar($value) . '<br>'; }
  8. Omar~

    CSS condicional

    Para tal você precisa de pré processadores de css (veja esse por exemplo: sass). Existe uma desvantagem grande nisso, tempo de carregamento e processamento lento. A melhor forma de executar tal afim é por meio de javascript alterando características do html pós carregado, ou por linguagem de servidor já entregado com html definido ao cliente. Em ambos dois casos é infinitamente melhor que usar um pré processador.
  9. Omar~

    Alterar CSS se COOKIE existir

    Usando o PHP <div class="clickoff" style="pointer-events: <?= isset($_COOKIE['existe']) ? 'auto' : 'none' ?>;"></div>
  10. Omar~

    DataGrid com opção de movimentar (reposicionar)

    Estou desenvolvendo uma aplicação ao qual justamente tenho setores são listados na página, havendo a possibilidade do administrador controlar a ordem que esses setores vão ser exibidos. Minha lógica para fazer o tal foi: Ter uma coluna X tipo (int) na tabela justamente para armazenar a ordem de exibição. Ao criar novo registro consulto a tabela e vejo quantos registros existem, assim obtenho o último número a ser exibido (isso pode ser feito através da função count), com esse valor somo com ($valor += 1) e salvo o novo registro X esse passando a ser o último. Ao editar nada mais faço que consultar alternando os valores entre eles, exemplo (se o N°3 vai ser Nº2, é fazer um updade no registro cujo seja número 2 ser 3 e o 3 ser 2). Em resumo nada mais é que alterar os valores através de update.
  11. Omar~

    Erro ao enviar a mensagem!

    Primeiro devo falar que seu código está completamente exposto a ataques. if(!$result) Se a variável não existe ou se não for nula entra nessa condição.
  12. Omar~

    Erro na exibição da imagem php

    O erro pode está justamente aqui: Não seria?: <?= substr($ultimos['imagens'], 0, -4); ?> Só que também deve-se ficar atento se a string realmente condiz com o nome da imagem que possa está na pasta img
  13. Impossível alguém lhe responder pois não teremos como saber como é o comportamento de sua classe de upload. Mas sim é possível. Veja isso talvez lhe ajude: https://github.com/Spell-Master/sm-web/tree/master/exemplos/corte-e-salvamento-de-imagens Pois essa aplicação de desenvolvi faz justamente isso, pós o upload com sucesso entra em ação o script para ajustar o corte da imagem.
  14. Omar~

    Dúvidas sobre sequencia de div's em CSS

    Provavelmente, o elemento ao qual anexou uma cor de fundo não possui tamanho, logo não verá seu background pois seu tamanho é 0X0 pixel's. Também devemos lembrar sobre a questão de cache do browser, ao qual pode não está definindo novas propriedades. Ambos casos podem ser averiguados usando a ferramenta de inspeção. Mais uma coisa, não que isso atrapalhe ou mesmo der problema mas essa definição não deveria existir. O correto seria: * {padding:0; margin:0} /* Tudo por padrão não possui espaçamentos */ body, ul {background: #e2e2e2} ul{list-style: none} O escopo da página não é uma lista logo a estilização de lista não é válida, causando um "warnning" na depuração do CSS. Já a tag <ul> "lista desordenada" pode receber list-style.
  15. Omar~

    Ajuda em Laço de Repetição com PHP

    <?php $string = '11223344556677889900'; $separa = str_split($string, 2); echo '<pre>'; var_dump($separa); echo '</pre>'; $string = '11, 22, 33, 44, 55, 66, 77, 88, 99, 00'; $separa = explode(", ", $string); echo '<pre>'; var_dump($separa); Aí complica, pois temos que repensar muito na forma de gerar os números. Mais detalhes em: https://forum.imasters.com.br/topic/580228-combinação-letra-e-numeros-com-apenas-uma-repetição/?tab=comments#comment-2272548 Podemos tentar alternativas, nesse caso os números que serão gerados são pré definidos a não gerandos pelo rand, pois para isso requer funções de checagens se o número atual já existe e tal. Assim sendo optei por criar um array com todos os números possíveis para serem gerados tipo: $numeros_validos = ['01', '02', '03 ......]; Porém criar isso "na unha" é demorado usamos o php então para criar esse array <?php $numeros_validos = []; for ($i = 1; $i < 100; $i++) { // Total de 99 números gerados 1,2,3.... até 99, essencial começar pelo 1 para não gerar o número zero $numero = ($i < 10 ? "0{$i}" : "{$i}"); // caso seja 1,2,3... fazemos com que os números sejam 01,02,03... $numeros_validos[$i] = $numero; } Como nosso array é 01,02,03... até o 99. O pulo do gato para gerar o sorteio será misturar esses índices, como não há números repetidos no array não teremos números repetidos no sorteio. De acordo com meus cálculos existe um provabilidade de 1,50% de gerar cartelas com o mesmos números e apenas de 0,15% de seguirem a mesma sequência.
  16. Omar~

    Tag <video> não funciona no Chrome

    A correta utilização seria: <video controls="controls" autoplay="autoplay"> <source src=" ENDEREÇO DO ARQUIVO " type=" MIME-TYPE "> </video> Porém o youtube não deixa que seus conteúdos sejam exibidos por hotlink, o motivo disso eu não sei. De qualquer forma se você usar iframe vai obter o resultado desejado.
  17. Omar~

    Ajuda em Laço de Repetição com PHP

    Seria bom se eu tivesse/soubesse como é sua estrutura SQL da tabela para dar um exemplo melhor. Mas seguindo suas informações deduzo aproximadamente como é a tabela, no meu exemplo a criei assim, lógico inserindo o conceito do exemplo: DROP TABLE IF EXISTS `cartelas`; CREATE TABLE `cartelas` ( `c_id` int(9) NOT NULL AUTO_INCREMENT COMMENT 'identificador único', `c_user` int(9) COMMENT 'identificador do usuário', `c_reference` int(9) COMMENT 'código de referencia', -- `c_quantidade` int(9) COMMENT 'quantidade de cartelas', -- Não entendi o porque disso então apenas é comentário `c_status` ENUM('0','1') COMMENT '0 = sem paragamento, 1 = pago', `c_value` int(2) COMMENT 'valor da cartela', `c_numero` int(2) COMMENT 'número da cartela gerada', PRIMARY KEY (`c_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; No HTML preferir substituir o input por um seletor que dar mais praticidade ao usuário e já de cara podemos fazer um limitação pelo HTML (Lógico que isso pode ser manipulado por pessoas má intencionadas, porém no back-end trataremos disso também) <form method="post"> <p>QUANTIDADE DE JOGO</p> <select name="qtd_cartela"> <option value="">Quantidade de cartelas</option> <option value="1">1 cartela</option> <option value="2">2 cartelas</option> <option value="3">3 cartelas</option> <option value="4">4 cartelas</option> <option value="5">5 cartelas</option> <option value="6">6 cartelas</option> </select> <input type="submit" value="Gerar Cartela" /> </form> No caso meu são no máximo seis cartelas, tente limitar ao número mais baixo o possível, pois usaremos um loop para registrar dados, e se o loop for muito extenso pode travar o servidor. Entramos então na parte back-end Em primeiro eu estabeleci conexão com o banco de dados: $host = '127.0.0.1'; // IP do banco de dados $db = 'bingo'; // Nome do banco de dados $usuario = 'root'; // usuário que tem permissão de manipular o banco $senha = ''; // senha do usuário que tem permissão .... try { $dsn = "mysql:host={$host}; dbname={$db}"; $options = [PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8']; $con = new PDO($dsn, $usuario, $senha, $options); } catch (PDOException $erro) { die('Erro na conexão: ' . $erro->getMessage()); } Um ponto que devemos ficar atento é o índice $userlogin['user_id'], ao qual deduzo que seja um índice de cessão, nesse caso devemos ficar atento a esses dados pois eles provém da máquina do usuário, ao qual podem ser manipulados e inserido códigos. Temos que prever o sql injection pois esse é o único dado que vamos registrar ao qual nosso sistema não irá gerar. $user_id = htmlentities($userlogin['user_id']); Sobre a parte de gerar o código de cada cartela continua a mesma coisa como disse no outro post. Registamos então os dados varrendo o array $cartela e usando o objeto de conexão PDO, a cada volta uma query será lançada, por isso a importância de limitar. Infelizmente não consigo pensar em outra alternativa para não ter que fazer o que deseja. $sql = $con->prepare( 'INSERT INTO cartelas ( c_user, c_reference, c_status, c_value, c_numero ) VALUES ( :user, :reference, :status, :value, :numero )' ); foreach ($cartela as $value) { $sql->execute([ 'user' => $value['user_id'], 'reference' => $value['cod_reference'], 'status' => $value['status_cartela'], 'value' => $value['valor_cartela'], 'numero' => $value['numero_cartela'], ]); } Para mostrar o dados é simples então, temos o array $cartela ao qual vamos varrer também assim como foi feito para registrar no banco, a única diferença é que vamos mostrar os dados. E aqui todo o código do exemplo junto:
  18. Omar~

    Ajuda em Laço de Repetição com PHP

    Hora se você quer registrar cada sorteio em cada tabela basta lançar a query a cada volta do loop. Porém isso requer uma depuração minuciosa, limitando a quantidade de voltas que o loop vai dar, muita atenção para evitar loop's infinitos. No caso você pega o valor vindo de POST para delimitar a quantidade de cartelas, esse valor deve ser tratado e limitado para evitar milhares de voltas no loop. Do contrário poderá causar uma sobrecarga do servidor. As demais questões sobre mostrar o valores nada mais que irá apresentar os dados gerados dentro do loop, o que nos remete a isso: Você cria o array ARR dentro do loop, de fato ele terá seus dados gravados em memória, porém como no casso $arr só possui um índice a cada volta do loop ele é recriado com novos valores. Quando temos que resgatar valores abstratos que foram gerados em loops temos que optar o arrays-multi dimensionais para não reescrever dados. $arr[INDICE] = [ ... valores do array nesse índice Com isso pós o loop teremos um array com todas informações geradas pelo loop.
  19. Omar~

    Ajuda em Laço de Repetição com PHP

    Bom, se a questão é gerar vários números que seriam cartelas e cada cartela tenha seu número aleatório, é só seguir a mesma lógica usando-se de dois loop's para isso. Fazendo então que cada cartela seja um índice de array. <?php $totalNumber = 25; $total = ''; //$qtd = $bingo['qtd_cartela']; $qtd = 3; $cartela = []; for ($j = 0; $j < $qtd; $j++) { for ($i = 0; $i < $totalNumber; $i++) { $numberGenerator = rand(1, 90); $total .= $numberGenerator; } $cartela[$j] = $total; $total = ''; } echo '<pre>'; var_dump($cartela);
  20. Omar~

    Framework para html

    Convenhamos, para que pegar algo que não é sua estrutura para compor parte de sua estrutura html? Porque pelo que dar para entender é que você quer pegar parte do html alheio e anexar ao seu. De fato não sei exatamente o que pretende, se o arquivo está em qualquer diretório de sua aplicação o include como mencionei irá funcionar sim, se for algo externo deve ficar atento pois isso irá abrir um falha de segurança ao qual o XSS pode rodar sem problemas (por isso include externo já vem bloqueado por segurança). Em todo caso utilizar-se de classes para compor o html quando repetições forem corriqueiras é a melhor alternativa. <?php /* Isso seria um arquivo de classe */ class exemplo { public function digaOla() { $html = '<div class="ola_mundo">'; $html .= '<p>Olá mundo</p>'; $html .= '</div>'; return ($html); } } /* Isso seria um arquivo separado ao qual quero um divisor e um parágrafo com o texto olá mundo assim como a classe mostra */ $html = new exemplo(); echo ($html->digaOla()); echo ($html->digaOla()); echo ($html->digaOla()); Para permitir include externo vá no arquivo PHP.INI e altere essa configuração: allow_url_include = Off Porém como disse você estará metendo os pés pelas mãos abrindo breja de ataque XSS. Será necessário permissão do servidor ao qual está tentando puxar o arquivo.
  21. Omar~

    Centrralizar e Alinhar DIVS

    CSS * {margin:0; padding:0} .centralizar_internos { text-align: center } .coluna { display: inline-block; /* Isso irá alinhar lado a lado */ vertical-align: top; /* Isso irá alinhar ao topo */ margin: 0 10px; /* margem de zero ao cima e baixo e 10px esquerda e direita */ width: 250px; /* Tamanho fixo para melhor responsabilidade */ height: 350px; border: 2px solid #656565; border-radius: 15px; background-color: #373737 } /* Alterando características em telas cujo a resolução máxima é 600 pixels */ @media (max-width: 600px) { .coluna { margin: 0; /* Removendo as margens */ width: 98% /* Definindo nova largura */ } } HTML <div class="centralizar_internos"> <div class="coluna"> <img src="./img/programacao.png" alt="a propiedade 'alt' é obrigatório em imagens!!!" /> <h1>Softwares</h1> <p>Possuimos diversos Softwares para a sua empresa.</p> </div> <div class="coluna"> <img src="./img/bancodedados.png" alt="a propiedade 'alt' é obrigatório em imagens!!!" /> <h1>Banco de Dados</h1> <p>Organimazanos todos seus dados e configuramos oque precisa.</p> </div> <div class="coluna"> <img src="./img/mobile.png" alt="a propiedade 'alt' é obrigatório em imagens!!!" /> <h1>Desenvol. Mobile</h1> <p>Fazemos o aplicativo ideal para a sua Empresa.</p> </div> <div class="coluna"> <img src="./img/rede.png" alt="a propiedade 'alt' é obrigatório em imagens!!!" /> <h1>Estrutura de Rede</h1> <p>Fazemos toda o mapiamento da rede e implantação.</p> </div> </div>
  22. Omar~

    Framework para html

    Basta que informe o caminho para o arquivo, exemplo: include ('pasta/pasta/arquivo.php'); Vale lembrar que uma boa técnica para prever perca de diretório com inclusão basta informar onde está o arquivo a partir de onde está o arquivo atual. Digamos então que estamos na pastaA que está dentro da pastaB que se encontra no mesmo diretório que está a pastaC ao qual lá dentro existe o arquivo para incluir. Então a inclusão sem risco de erro seria: include (__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'pastaC' . DIRECTORY_SEPARATOR . 'arquivo.php'); Uma outra forma mais prática e mais eficaz de trazer repetições de estruturas é criar uma ou mais classes as quais seus métodos criam o html.
  23. Omar~

    Digitar só números 2

    Bom esse seria um recurso mais simples ao input <input type="text" pattern="([0-9]+)$" required /> Ou seja se o input for inserido qualquer coisa que não seja número ao tirar o focus sobre o input o browser já acusa que está errado e nem formulários serão submetidos enquanto o input não estiver correto. Mas entramos em outro cenário, onde o usuário irá digitar qualquer coisa no input e nada acontecerá, a menos que ele insira números. Ou somente números serão escritos dentro do input. <input type="text" onkeypress="gerenciar_input(this, numeros)" onblur="clearTimeout()" /> <script> function gerenciar_input(a, b) { ipt = a; obj = b; setTimeout('mascara()', 1); } function mascara() { ipt.value = obj(ipt.value); } function numeros(v) { v = v.replace(/\D/g, ''); return v; } </script> Isso nada mais que fará uma análise a cada caractere inserido, se não for número é imediatante removido em 1 micro-segundo. Obs.: Se for algo crucial de nada adianta sem uma verificação back-end.
  24. O problema está aqui, porque de fato nada é perdido dentro do disco e sim sobre escrito. Meu conselho é que não manoseie o HD e leve a uma empresa especializada sobre tal afim (Esse tipo de serviço e extremamente caro) assim como disse o @Lord Enigm@. Quanto mais você manusear o hardware menor serão as chances de recuperação de dados.
  25. Omar~

    Checar usuário logado

    <?php session_start(); $_SESSION['php'] = 1; if (isset($_SESSION['php'])) { var_dump($_SESSION); } https://www.php.net/manual/pt_BR/reserved.variables.session.php
×

Informação importante

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