-
Total de itens
446 -
Registro em
-
Última visita
-
Dias vencidos
3
Tudo que Guilherme Luiz postou
-
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 respostas
-
Ajuda, Update de Legenda em upload de multiplas fotos?
Guilherme Luiz respondeu ao tópico de Hugo Lima em PHP
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 -
E porque não utilizar a função nativa? mysqli_real_escape_string
-
Verificar se item (link) está autorizado a ser utilizado
Guilherme Luiz postou um tópico no fórum PHP
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 =) -
Verificar se item (link) está autorizado a ser utilizado
Guilherme Luiz respondeu ao tópico de Guilherme Luiz em PHP
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! -
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
-
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
-
CSS responsivo - agrupar boxes
Guilherme Luiz respondeu ao tópico de FabianoSouza em Desenvolvimento frontend
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 -
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.
-
Campo com 3 casas decimais [Resolvido]
Guilherme Luiz respondeu ao tópico de manolegal em Javascript
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. -
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
-
[RESOLVIDO] EXIBIR DATA E HORÁRIO ATUAL EM UM "textbox" DE UM FORMULÁRIO PHP
Guilherme Luiz respondeu ao tópico de Alberto Nascimento em 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. -
[RESOLVIDO] EXIBIR "IP" DO VISITANTE EM UM CAMPO DO FORMULÁRIO TEXTBOX
Guilherme Luiz respondeu ao tópico de Alberto Nascimento em PHP
https://stackoverflow.com/questions/3003145/how-to-get-the-client-ip-address-in-php Veja o exemplo no link acima -
[RESOLVIDO] EXIBIR DATA E HORÁRIO ATUAL EM UM "textbox" DE UM FORMULÁRIO PHP
Guilherme Luiz respondeu ao tópico de Alberto Nascimento em 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. -
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;
-
[RESOLVIDO] Campo Automático com Data e Horário em Tabela
Guilherme Luiz respondeu ao tópico de Alberto Nascimento em MySQL
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}')"; ... -
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.
- 4 respostas
-
- php
- carrinho de compras
-
(e mais 1 )
Tags: