Ir para conteúdo

POWERED BY:

Guilherme Luiz

Members
  • Total de itens

    446
  • Registro em

  • Última visita

  • Dias vencidos

    3

Tudo que Guilherme Luiz postou

  1. Guilherme Luiz

    Validação antes de submeter formulário

    Esse tipo de situação é ideal você tratar com JS porque faz as validações direto no DOOM. Agora se você optar por fazer isso em PHP você estará dando voltas porque veja os caminhos: JS → Inputa valor incorreto → Gera alerta → Usuario ajusta e da submit PHP → Inputa valor → Usuario da submit → Backend checa se é incorreto → Se for incorreto retorna alerta → Usuario faz as alterações (isso se você tiver armazenado em SESSION os dados preenchidos anteriormente para que o usuario não tenha que repreencher tudo) → Usuario faz novo submit Dessa forma, no JS a forma mais fácil seria algo mais ou menos var contrato = document.querySelector('input[name=contrato]:checked').value; var empresa = document.getElementByName('empresa').value; if (contrato == 'pj') { if (empresa.length == 0) { alert('preencha o nome da empresa'); } else { return } } Basicamente você vai checar se o input selecionado que tem o name CONTRATO tem o seu value como pj e se o valor do input EMPRESA for igual a zero, então é gerado um alerta, mas isso é algo bem basicão, mais que isso ai é preciso ver lá no tópico de Javascript
  2. Guilherme Luiz

    Ajuda, Update de Legenda em upload de multiplas fotos?

    Como os IDs do seu formulário surgem de um input[] você pode fazer um input[] tbm com o id da foto em modo hidden... por exemplo: HTML <input type="hidden" name="ids[]" value="<?php echo $item['id']; ?"> <input type="text" name="legenda[]" id="legenda" value="<?php echo $item['legenda']; ?>"> PHP foreach($_POST['ids'] as $k => $id){ $query ".. WHERE id='{$id}' and legenda='{$_POST['legenda'][$k]}'"; } Como o número de items de ID será exatamente o mesmo que o de LEGENDA então você pode iterar o array dos IDs e então acessar o valor das legendas pelo KEY ($k) Apesar dessa forma ser a mais fácil eu não gosto de usar assim porque se você tiver 1000 legendas, irá executar 1000 queries. Eu gosto de usar nesse cenário o mysqli_multi_query Vale a leitura https://stackoverflow.com/questions/37381532/which-is-better-one-big-query-or-multiple-small-query
  3. Guilherme Luiz

    Expressões regulares php

    E porque não utilizar a função nativa? mysqli_real_escape_string
  4. Guilherme Luiz

    Verificar se item (link) está autorizado a ser utilizado

    Olá pessoal! Tenho uma situação onde preciso adicionar um FLAG se o usuário estiver incluindo um link em sua mensagem para que eu possa filtra-la ou não. Se estiver incluindo um link, preciso checar se esse link está autorizado. Se sim, adiciono um FLAG false, se não, true. Com links absolutos, isso é simples de ser feito e já tenho feito: <?php $regex = "(((https?|ftp):\/\/)?(bit)?([a-z0-9+!*(),;?&=.-]+(:[a-z0-9+!*(),;?&=.-]+)?@)?([a-z0-9\-\.]*)\.(([a-z]{2,4})|([0-9]{1,3}\.([0-9]{1,3})\.([0-9]{1,3})))(:[0-9]{2,5})?(\/([a-z0-9+%-]\.?)+)*\/?(\?[a-z+&$_.-][a-z0-9;:@&%=+/.-]*)?(#[a-z_.-][a-z0-9+$%_.-]*)?)"; $linksAutorizados = ['bit.ly/123']; $mensagem = [ 'usuario' => 'teste', 'texto' => 'seja bem vindo ao meu site bit.ly/123' ]; $temLink = preg_match ($regex, $mensagem['texto'], $links); /** * $links retorna o seguinte array * 0: "bit.ly/123" * 3: "bit" * 7: "ly" * 8: "ly" * 13: "/123" * 14: "3" */ if ($temLink) { /* * Checo se link da mensagem é igual ao link da lista de linksAutorizados. * Se o link da mensagem for igual ao link da lista a mensagem não precisa ser filtrada * Se o link da mensagem for diferente ao link da lista, a mensagem precisa ser filtrada */ if ($links[0] == $linksAutorizados[0]) { $mensagem += [ 'filtrar' => false ]; } else { $mensagem += [ 'filtrar' => true ]; } } else { /* * Se não encontrar link na mensagem, ela não precisa ser filtrada */ $mensagem += [ 'filtrar' => false ]; } Obs: O acesso aos arrays foi em hardcoded para uma exemplificação mais clara. O meu problema é: E se eu quiser liberar links variáveis, ou seja, não importa o subdomínio ou demais parâmetros de querystring, checar somente o dominio Por exemplo *.meusite.com.br meusite.com.br/* subdominio.meusite.com.br/* Exemplo de array com links (que podem ser variaveis) autorizados para o usuario: $linksAutorizados = ['bit.ly/123', 'goo.gl/*', 'meusite.com.br/*' ]; Onde estão os asteriscos seriam os pontos que eu ignoro da verificação para filtro. Passei o dia fazendo alguns testes e pesquisando material no Stack mas não encontrei nada. Desde já muito obrigado por qualquer luz =)
  5. Guilherme Luiz

    Verificar se item (link) está autorizado a ser utilizado

    Boa!! Gostei da dica/orientação. Segue resultado <?php /** * $userLink = String com o link encontrado no texto * $links = defino array de links em whitelist para iterar * $authorizedLinks = Array pego por referencia de uma consulta ao Mysql com lista de links autorizados * $result = Por padrão já defino como true, mas se o link da mensagem for encontrado na whitelist, então defino para false */ $checkWhiteList = function($userLink, array $links = null) use (&$authorizedLinks) { $links = $authorizedLinks; $result = true; foreach($links as $link){ if(strpos($userLink, $link) !== false) { $result = false; } } return $result; }; Fiz uma função em closure para poder herdar o array com os links autorizados de outro escopo para não ter que realizar nova consulta ao meu banco de dados, dado que posso ter milhares de mensagens para checar, o que poderia causar sobrecarga ao meu bd. Dessa forma posso chamar essa função dentro do meu loop de mensagens milhares de vezes com apenas uma consulta a lista de links autorizados do meu banco de dados. Dessa forma se no meu banco eu tiver o link - meusite.com.br - e meu usuário imputar subdominio.meusite.com.br | meusite.com.br/querystring a função consegue identificar como link dinâmico e então autorizar. E caso eu queira link absoluto é só ter em meu banco de dados subdominio.meusite.com.br e se meu usuario imputar meusite.com.br o link será barrado. Consegui fazer exatamente o que pretendia. Obrigado!
  6. Guilherme Luiz

    variavel php curl

    Essa API parece que consome e retorna dados em JSON Sabendo disso fica muito fácil trabalhar! Veja exemplo e comentários <?php /* * Array com os parametros que a API solicita */ $jsonData = [ 'number' => '1194445566', 'message' => 'minha mensagem' ]; /* * Endpoint da API - Prefira sempre separar em variaveis para uma melhor leitura e desacoplamento de código */ $endpoint = 'http://api.url'; /* * Array com os HEADERs que a API exige que seja utilizado */ $headers = [ 'content-type: application/json', 'Authorization Basic: XXXXXXXXXXX' ]; /* * Inicialização do cURL */ $ch = curl_init(); /* * Array com opções/parametros que podemos usar no cURL * Utilize o parametro CUSTOMREQUEST somente se for algo diferente de POST ou GET * Se você quiser tratar os dados recebidos deixe a opção HEADER em false, mas para fins de debug deixe como true */ $chOptions = [ CURLOPT_URL => $endpoint, CURLOPT_RETURNTRANSFER => 1, CURLOPT_SSL_VERIFYHOST => 0, CURLOPT_SSL_VERIFYPEER => 0, CURLOPT_HTTPHEADER => $headers, CURLOPT_POST => 1, CURLOPT_POSTFIELDS => json_encode($jsonData), CURLOPT_HEADER => 0 ]; /* * Indicamos em qual array estão as opções do cURL e então o executamos */ curl_setopt_array($ch,$chOptions); $curlRequest = curl_exec($ch); /* * Se o request ao endpoint for TRUE então tratamos o callback fornecido * Supondo que o retorno também é em JSON, nós o transformamos num array na variavel $callack * Se o request ao endpoint por algum motivo der erro, então imprimimos o erro da conexão */ if($curlRequest){ $callback = json_decode($curlRequest,true); print_r ($callback); } else { echo 'cURL Error # - '.curl_error($ch); } /* * Indicar o fechamento do curl ao meu ver entra como opcional, mas caso sejam várias requisições em loop, então recomendo a utilização. */ curl_close($ch); O ideal será sempre entrar em contato com a empresa fornecedora da API porque dessa forma é certeza que eles iram conseguir ajuda-lo de forma pontual e orientada a API. Esse exemplo que demonstrei serve para qualquer API que você queira utilizar, desde que ela trabalhe com recebimento e retorno de dados em JSON
  7. Guilherme Luiz

    Url, Busca

    Não ficou claro qual a sua dúvida. Ao que me parece esse script foi feito sob o framework Laravel. Se você começar a "dissecar" as classes e dar uma olhada na documentação do framework, com certeza você terá uma clareza maior do que foi feito nele
  8. Guilherme Luiz

    CSS responsivo - agrupar boxes

    Veja o Bootstrap com ele você utiliza grids de uma forma muito simples. Mas ainda mais pra facilidar, veja o site Webflow É uma plataforma gratuita que da para criar webs responsivas com drag & drop bem bacana
  9. Guilherme Luiz

    Consultar em banco de dados ou ler arquivo?

    Um banco MySQL suporta uma TONELADA de consultas e eu penso que se a informação algum dia pode ser mudada eu prefiro sempre utiliza-lo porque um arquivo estático pode ficar em cache e usuários terem informações desatualizadas. Se os dados são "fixos" e não sofrem constante alterações, crie uma table em MySAM do mysql e tudo fica resolvido porque tabelas nesse formato são otimizadas para dados "estáticos". Caso você ainda assim prefira utilizar arquivo, prefira por arquivos em JSON, mais fácil de serem manipulados.
  10. Guilherme Luiz

    Campo com 3 casas decimais [Resolvido]

    Da uma olhada diretamente no repo. do git > https://github.com/plentz/jquery-maskmoney Pesquise pelas issues e pull requests para ver se é possivel fazer isso com esse script.
  11. Guilherme Luiz

    Erro em mostrar os dados

    Oloko bixo, quantas queries e redundancia de código.. Esse código "não vale a pena" ajustar ao meu ver, mas sim refatorar, deletar e fazer tudo de novo. Leia sobre INNER JOIN / UNION ALL / MULTI_QUERY em relação do MySQL e isso vai te dar uma luz sobre como refatorar todas essas suas queries
  12. Guilherme Luiz

    [RESOLVIDO] EXIBIR DATA E HORÁRIO ATUAL EM UM "textbox" DE UM FORMULÁRIO PHP

    A variável $data foi "hard coded" para fins de exemplificação, mas para você pegar a data do dia utilize a função date() <?php $hoje = date('Y-m-d'); echo $hoje; ?> https://www.php.net/manual/pt_BR/function.date.php Recomendo que você assista os seguintes materiais, dessa forma você vai entender o que está fazendo ao invés de ficar perdendo tempo com achismos e testes frustrados.
  13. Guilherme Luiz

    [RESOLVIDO] EXIBIR "IP" DO VISITANTE EM UM CAMPO DO FORMULÁRIO TEXTBOX

    https://stackoverflow.com/questions/3003145/how-to-get-the-client-ip-address-in-php Veja o exemplo no link acima
  14. Guilherme Luiz

    [RESOLVIDO] EXIBIR DATA E HORÁRIO ATUAL EM UM "textbox" DE UM FORMULÁRIO PHP

    O jeito errado de se fazer: $data = "18/03/2020"; echo "<input type=\"text\" value=\"$data\">"; Dessa forma o seu input estará recebendo um valor de string generalizando, não sendo uma data e não sendo formatado da forma correta. O jeito que considero certo de se fazer: $data = "18/03/2020"; $dataInternacional = date('Y-m-d',strtotime($data)); echo "<input type=\"date\" value=\"{$data}\">"; Dessa forma você estará formatando a sua data, independente do modelo que ela venha, para o padrão internacional de data e a aplicando num input do tipo DATE e dessa forma o campo fica "responsivo" a data do html5 caso ele seja editavel.
  15. Guilherme Luiz

    Rank de Vitórias -> PHP

    faz o contador fora do while e então faça um if de verificação de acordo com o status e some +1 para cada situação que coincidir... por exemplo: $vitorias = 0; $derrotas = 0; while($data = mysqli_fetch_assoc($sql)){ if($data['status'] == 'vitoria'){ $vitorias++; } if($data['status'] == 'derrota'){ $derrotas++; } } echo "Vencedores: {$vitorias}".PHP_EOL; echo "Perdedores: {$derrotas}".PHP_EOL;
  16. Guilherme Luiz

    [RESOLVIDO] Campo Automático com Data e Horário em Tabela

    Vale a recomendação para trabalhar com campos de data no MySQL - Sempre utilize a coluna em formatos DATE, DATETIME ou TIMESTAMP - Sempre salve o horario em UTC e então aplique o fuso na visualização - Com campos DATE e DATETIME lembre-se de converter a data para o padrão Y-m-d H:i:s Portanto, ao salvar data em campo DATE/DATETIME converta a sua data! $data = "18/03/2020 11:10:24"; $dataSql = date("Y-m-d H:i:s",strtotime($data)); $query = "INSERT INTO tabela (nome,data) VALUES ('meu nome','{$dataSql}')"; ...
  17. Guilherme Luiz

    Carrinho de Compras PHP

    Eu recomendo criar um array de itens no carrinho de acordo com o tipo de produto, porque se você tiver o $id repetido porque ele é o $id do tipo de produto e não do produto em si, você sempre sofrerá com essas substituições e além disso facilitará demais a "mão de obra" para incluir, alterar ou excluir item do carrinho.
×

Informação importante

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