-
Total de itens
1339 -
Registro em
-
Última visita
-
Dias vencidos
15
Tudo que Omar~ postou
-
Contar quantidades de imagem por input file
Omar~ respondeu ao pergunta de Jack Oliveira em Perguntas e respostas rápidas
Gostei da questão, nunca havia feito nada a respeito disso. Pois sempre limitei o upload a um único arquivo de vez. Enfim fiz algo assim: O usuário pode selecionar vários arquivos, se ele selecionar mais de 3 simplesmente redefino os arquivos selecionados no input, na verdade a função só irá pegar os 3 primeiros arquivos que ele selecionar e vai definir o valor do input com esses. <input id="exemplo" multiple="" type="file" style="display: none" accept="image/*" /> <label for="exemplo">Selecionar Imagens</label> <script> var exemplo = document.getElementById('exemplo'), dataT = new DataTransfer(); exemplo.addEventListener('change', function (e) { var alvo = e.target, selecionados = alvo.files; for (var i = 0; i < selecionados.length; i++) { if (i < 3) { dataT.items.add(selecionados[i]); alvo.nextElementSibling.innerHTML += ' ' + selecionados[i].name + '/'; } } alvo.files = dataT.files; }, false); </script> Acho que não precisaria lembrar, mas é bom... Você também terá que fazer uma verificação no servidor quando o usuário enviar os arquivos. E é muito simples, basta executar um loop com o laço for no array $_FILES do input, tudo índice que for maior que 3 você vai aplicando a função unset neles. De qualquer forma pelo javascript quando estava fazendo esse simples exemplo pude perceber um leque de infinitas possibilidades para a situação, dar para fazer cada coisa bacana a respeito, porém requer scripts mais complexos e detalhados, não sendo viável para um simples post aqui no fórum. -
Digitar em um textarea e aparecer em outro textarea com ckeditor
Omar~ respondeu ao pergunta de Jack Oliveira em Perguntas e respostas rápidas
Tente então algo como isso: O input está alí mas o editor não, ao digitar no input pelo menos 2 caracteres mostramos o local e o editor é inciado. Não sei se essa é a lógica, mas toda vez que alterar algo no input o conteúdo do editor é alterado <input type="text" id="exemplo" value="" /> <div style="display: none"> <textarea id="editor"></textarea> </div> <script> var exemplo = document.getElementById('exemplo'); exemplo.value = null; exemplo.addEventListener('keypress', iniciarEditor, false); function iniciarEditor(e) { var proximoElemento = e.target.nextElementSibling, editor = proximoElemento.children[0].id; if (typeof CKEDITOR.instances[editor] === 'undefined') { proximoElemento.removeAttribute('style'); CKEDITOR.replace(editor); } CKEDITOR.instances[editor].setData( e.target.value ); } </script> -
Digitar em um textarea e aparecer em outro textarea com ckeditor
Omar~ respondeu ao pergunta de Jack Oliveira em Perguntas e respostas rápidas
Primeiramente o "ckEditor 4" é o mesmo usando por esse fórum. Enfim, basta que que você crie um elemento qualquer (assim como é usado por esse fórum) assim quando clicar nesse elemento o editor é iniciado. Aí temos as opções de ter já uma textarea pronta para receber o editor, ou criar uma (no caso desse fórum a textarea já existe); independente qual for a iniciativa o elemento ao qual o editor vai iniciar deve ser mostrado pois vai ser uma iFrame. CKEDITOR.replace('iD_DA_TEXTAREA'); Aí vai depender da lógica que vai seguir para ter uma noção melhor de como deve prosseguir... No resto há uma infinidade de documentação espalhada na web sobre como usar essa ferramenta; confesso que nenhuma delas é de muita ajuda, a não ser confundir mais em vez de ir direto a situação real Exemplo você pode criar um elemento editável assim que uma key code é inserida pós clique o elemento alvo o editor seja iniciado..... seguindo os conceitos (ou mostra ou cria) Veja como eu realizei esse processo ao usuário clicar.....: https://github.com/Spell-Master/source-map/blob/master/modules/forum/post-new.php#L7 https://github.com/Spell-Master/source-map/blob/master/lib/javascript/sm-forum.js#L330 > a linha 335 https://github.com/Spell-Master/source-map/blob/master/lib/javascript/sm-editor.js#L28 obs.: Isso é o "rascunho" de um projeto meu portanto posso remover ou modicar tudo no github (serve para leitores futuros desse post) -
resultado de sql separados por virgula
Omar~ respondeu ao pergunta de igor8831 em Perguntas e respostas rápidas
Tente algo como isso: <?php $array = [ 0 => ['produto' => 'bala', 'valor' => '10,00'], 1 => ['produto' => 'doce', 'valor' => '30,00'], 2 => ['produto' => 'laranja', 'valor' => '14,00'], 3 => ['produto' => 'banana', 'valor' => '16,00'] ]; foreach($array as $chave => $indice){ echo ("<p>Nome do produto: {$indice['produto']} / valor: {$indice['valor']} / chave no array: {$chave}</p>"); } Se não for isso é porque interpretei/adivinhei errado qual é sua dúvida..... -
Você diz uma coluna em sua tabela no banco de dados sql? Se for execute o comando: ALTER TABLE nome_da_tabela DROP COLUMN nome_da_coluna
-
$load['parse']['title']
-
Tenta isso aqui: https://github.com/Spell-Master/sm-web/tree/master/javascript/AjaxRequest
-
Não entendi com o contexto geral qual é a dúvida. Mas especulando talvez isso seria o substituto para o problema: https://ckeditor.com/ckeditor-5/download/ Ou talvez esse que é o mesmo usado pelo IPS (o mesmo desse fórum pois é um IPS): https://ckeditor.com/ckeditor-4/download/ OBS.: Existem outros editores WYSIWYG, mas o melhor que o ckeditor é completamente in dependente ao jQuery (o mais letal veneno uma vez inventado para uma aplicação e o mais nocivo veneno da internet atualmente)
-
Formatar imagens PNG em JPEG
Omar~ respondeu ao pergunta de Jack Oliveira em Perguntas e respostas rápidas
Assim como o colega já mencionou png ou jpg tanto faz qualquer navegador vai carregar independentemente, pois isso se trata de front e não interfere em nada no servidor exceto no tamanho do armazenamento. Acontece que imagens PNG são mais pesadas para carregar portanto desaconselhável usar quando não for necessário. É possível mas meio complicado pois requer uso de algumas funções do PHP imagecreatefromjpeg ou imagecreatefrompng imagesx e imagesy imagecreatetruecolor imagealphablending imagesavealpha imagecopyresampled imagejpeg ou imagepng Combinando essas funções podemos recriar a imagem conforme desejamos convertendo-a para outro formato ou redimensionando. Por exemplo essa classe para upload de imagens https://github.com/Spell-Master/source-map/blob/master/system/class/model/ImageUpload.php Ela utiliza todas as funções acima, assim possui a possibilidade de definir uma altura ou largura máxima para imagem pois se é maior ela a redimensiona. $upload = new ImageUpload('diretorio_onde_salvar'); $upload->sendImage($_FILES['name_do_input'], 'nome da imagem', 600); Por exemplo se a imagem tiver a altura maior que 600 a classe redimensiona a altura e em proporção igual sua largura para manter o aspecto original, o mesmo vale se a largura for maior que 600. -
Sim $url[0] é a cidade e $url[1] será uma dessas opções. basta apenas programar o arquivo que será carregado por $url[0] para trabalhar com a informação correta conforme for o valor de $url[1]
-
@finogatto vamos por parte. Algum arquivo php funciona? Está rodando a aplicação local ou em uma hospedagem? isso não ficou claro. Se em uma hospedagem ela tem o apache e o php instalado? Se em uma hospedagem ela permite protocolos POST?
-
O problema é relativamente simples, pois é um padrão de arquitetura que uso a anos, então poderíamos simplificar as coisas. RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?url=$1 Pós produção se for conveniente você poderá remover as entradas RewriteCond, porque com isso alguém pode acessar acessar meusite.com/diretorio/arquivo.php. Enfim qualquer caractere inserido pós a primeira barra depois do endereço será uma entrada "url" armazenada na super global INPUT_GET e seu valor será uma string. Então simplificando sua situação vamos separar cada qual. <?php function ObterURL () { $filtro = filter_input(INPUT_GET, 'url', FILTER_DEFAULT); $definir = empty($filtro) ? 'inicio' : $filtro; $explode = explode('/', $definir); $array = array_filter($explode); return ($array); } Perceba que a função irá retornar pelo menos um índice "inicio" mesmo que INPUT_GET['url'] esteja vazio ou nulo Então no index.php começamos o processo: <?php require('ObterURL.php') $url = ObterURL(); /* // site.com/a/b/c será $url['a', 'b', 'c'] echo ($url[0] . '<br />'); var_dump($url); */ Até agora tudo bem seguimos seu conceito apenas simplificando. E é agora que começamos a estrutura da coisa toda e é nesse momento que acho que você está se perdendo. Como valor $url[0] carrego os arquivos que vão dar seguimento ao que quero aderir. Por exemplo o padrão "inicio" é porque ninguém acessou nada, se for "sao-paulo" carrego tudo referente a isso e por aí vai. Podemos etão criar uma função para anexar os arquivos conforme o valor de url[0] <?php function CarregarArquivo($valor) { switch ($valor) { case 'inicio': $arquivo = 'inicio'; break; case 'vitoria': case 'rio-de-janeiro': case 'sao-paulo': case 'salvador': case 'distrito-federal': $arquivo = 'cidades'; break; case 'catalogo': $arquivo = 'catalogo'; break; case 'buscar': $arquivo = 'pesquisa'; break; case 'contato': $arquivo = 'contato'; break; default: $arquivo = false; break; } if ($arquivo) { return ('paginas' . DIRECTORY_SEPARATOR . $arquivo . '.php'); } else { return ('paginas' . DIRECTORY_SEPARATOR . '404.php'); } } Adicionamos no index.php um require para o arquivo que contém a função e pedimos para incluir o arquivo conforma a string que essa função retornar. include (CarregarArquivo($url[0])); Então dessa forma conseguimos carregar os arquivos que vão fazer o que tem de fazer isoladamente sem nenhuma complicação. E se precisamos de mais alguma coisa é só consutar os valores de $url Exemplo: site.com/contado/outra_coisa $url[0] é contado e $url[1] é outra_coisa Por fim a nosso htaccess anula quaisquer demais entradas GET pois ele diz que só existe uma entrada a "url" então podemos contornar isso buscando essa informação do servidor ao invés da aplicação em sí. <?php function EntradaNoServidor() { // Função meramente para exemplificar $filtro = filter_input_array(INPUT_SERVER, FILTER_DEFAULT); $retorno = isset($filtro) ? $filtro : false; return ($retorno); } $uri = EntradaNoServidor(); $chave = explode('?chave=', $uri['REQUEST_URI']); if (isset($chave[1])) { echo ( 'Existe ?chave=' . $chave[1] . ' então podemos usar essa informação' . (empty($chave[1]) ? ' mas ela está vazia' : null) ); } else { echo ('Não existe uma entrada GET nesse arquivo'); } Lógico que dependendo da forma da estrutura de diretórios e arquivos seus as funções ou mesmo os arquivos devem ser adaptados para a lógica aqui apresentada. Se for o caso coloquei no g.drive o exemplo funcional disso que apresentei. https://drive.google.com/file/d/1O-jq3luqLybShUtltbIjgKdGSrTVd1zc/view?usp=sharing
-
Eu mudaria a navegação para se realizada só com ajax, porém o probela a barra de url persiste. Bom você pode está usando esse meu script para realizar a navegação por ajax que esse problema é sanado: https://github.com/Spell-Master/sm-web/tree/master/javascript/AjaxRequest De qualquer forma se for o caso de usar frame pode optar por manipular a barra de navegação: https://developer.mozilla.org/en-US/docs/Web/API/History/replaceState https://developer.mozilla.org/en-US/docs/Web/API/History/pushState
-
foto pelo site salvando a imagem na raiz do site
Omar~ respondeu ao tópico de vmenezes em Javascript
Tem sim e não tem.... Depende de como é realizado esse processo de "bater foto" Veja que nesse javascript que criei para realizar ajuste de corte de imagem, precisamente nessa linha: https://github.com/Spell-Master/sm-web/blob/master/javascript/ImageCut/ImageCut.js#L416 Pego o canvas criado que é em uma imagem PNG da imagem alvo, ao qual será o código base64 e esse código 64 pode ser usado para recriar a imagem no servidor enviando-o. Porque aí que está a questão quando seleciona o corte a imagem deve ser somente a área de corte, portanto a mesma técnica pode ser usada em sua situação "obter o base64 da sua foto que foi batida" Porém fico-lhe devendo como fazer isso em asp....- 2 respostas
-
- javascript
- html
-
(e mais 1 )
Tags:
-
//extract($_POST); //extract($_COOKIE); require_once("../config.php"); //$senha_ = $_POST["senha_"]; //$senha_ = strip_tags($senha_); //$senha_ = md5($senha_); //$login_ = $_POST["login_"]; //$login_ = strip_tags($login_); $senha = (isset($_POST['senha_']) ? $_POST['senha_'] : false); $login = (isset($_POST['login_']) ? $_POST['login_'] : false); if (!$senha) { // Não existe o índice senha_ na super global $_POST } else if (empty($senha)) { // $senha não possui valor algum para manipular } else if (!$login) { // Não existe o índice login_ na super global $_POST } else if (empty($login)) { // $login não possui valor algum para manipular } else { $senha_ = password_hash($_POST['senha_'], PASSWORD_DEFAULT); $login_ = htmlentities($_POST['login_']); // Dessa forma você registra o usuário e também pode validar seu login } Qualquer dado deve ser verificado antes de usar, além do mais o PHP em desencorajando as formas procedurais de códigos a cada tempo que passa. Para usar a encriptação por password_hash a coluna ao qual vai armazenar esse valor, aconselho ser um varchar com o tamanho de 400 a 500 entradas. password_hash: Irá criar uma sequência criptográfica portanto nenhum código será usado no banco. htmlentities: Irá substituir qualquer tag por entidade html portanto nenhum código será usado no banco.
-
Redirecionar automaticamente de 20 em 20.
Omar~ respondeu ao tópico de OSVALDO ARANTES JÚNIOR em PHP
Você teria que mudar sua lógica de forma que as respostas que estiverem corretas sejam armazenadas. Não sei como você está passando as peguntas, nem mesmo como contabiliza os acertos então fica complicado dar uma resposta mais clara. Se fosse eu faria algo similar a isso: <?php session_start(); $acertos = (isset($_SESSION['acertos']) ? (int) $_SESSION['acertos'] : 0); $pergunta = ['a', 'b']; if ($acertos < 2) { $resposta = 'a'; } else if ($acertos < 4) { $resposta = 'b'; array_push($pergunta, 'c', 'd'); } else if ($acertos < 6) { $resposta = 'f'; array_push($pergunta, 'c', 'd', 'e', 'f'); } else { $resposta = 'c'; array_push($pergunta, 'c', 'd', 'e', 'f', 'g', 'h'); } if (isset($_POST['exemplo'])) { $_SESSION['acertos'] = ($_POST['exemplo'] == $resposta ? ($acertos + 1) : $acertos); } echo ("Você até agora acertou {$acertos} perguntas"); ?> <form method="POST" action=""> <select name="exemplo"> <option value="">Selecione a Resposta</option> <?php foreach ($pergunta as $p) { ?> <option value="<?= $p ?>"><?= $p ?></option> <?php } ?> </select> <button type="submit">Enviar Resposta</button> </form> -
Não seria algo como isso? https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat
-
<audio id="exemplo"> <source src="arquivo_de_audio.wav" type="audio/x-wav"> </audio> <script> document.getElementById('exemplo').play(); </script> Use um arquivo pequeno, pois ao acessar a página o browser irá fazer o download automaticamente do arquivo, se ele for grande a página vai demorar para carregar, além também que o som vai demorar para tocar.
-
Conflito com ScrollTop [obs¹] botão para voltar para topo.
Omar~ respondeu ao tópico de 4Unknow em Javascript
Bom, eu não mecho com jQuery.... Então o que posso te ajudar é como diminuir em muito (mas muito mesmo) o uso de memória para realizar as tarefas tão simples e desejadas. Começando por observações: Isso aqui não é um array Para que ficar varrendo o documento toda hora em busca de um elemento, ainda mais com jquery que é extremamente lento para executar a busca? Isso é sempre inteiro a função para conversão aqui é não está fazendo nada a não ser consumir CPU Um conflito... Seu problema deve ser esse pois isso pode está reescrevendo. Além do mais o problema pode ser justamente que os dados em re-escrita etão sobrecarregando a memória. Mais ou menos no sentido Função diz que o X e outra função diz que Y daí o browser não entende o que é para fazer com a informação, fazendo uma função anular outra. Como disse não mecho com jquery então apresentarei duas maneiras de executar 1 usando apenas HTML (recomendo): 2 usando javascript (javascript não jquery) -
Digamos que eu tenha 2 arquivos chamados exemplo_A.php e exemplo_B.php. Dentro do A eu quero incluir o B, mas o B está em outro diretório. Então o certo não seria eu indicar um url para buscar esse arquivo, uma vez que a url já é uma variante da aplicação e o php não gosta disso o que geralmente vai dar em erro mesmo. Então o correto é só indicar diretórios mesmos e nada de usar url's. include ('../outro_diretorio/arquivo_B.php'); E bingo! funcionou.... Porém devido a certas reescritas do apache não dar para buscar o arquivo dessa forma, então basta apenas que indique a partir de onde está o arquivo atual usando a contante __DIR__: include (__DIR__ . '/../outro_diretorio/arquivo_B.php');
-
Conflito com ScrollTop [obs¹] botão para voltar para topo.
Omar~ respondeu ao tópico de 4Unknow em Javascript
Tenta assim: /* Rola a página para o topo */ function rolarParaTopo () { var $tempo = -window.scrollY / (1000 / 50); var $intervalo = setInterval(function () { if (window.scrollY != 0) { window.scrollBy(0, $tempo); } else { clearInterval($intervalo); } }, 10); } /* * Rola a página para um elemento no HTML, exemplo: * Javascript * rolarPara(#alguma_coisa); */ function rolarPara(alvo) { document.querySelector(alvo).previousElementSibling.scrollIntoView(false); }; Você também pode criar um botão para ir ao topo assim: <a href="#" alt="">Subir para o topo</a> -
Também, dê uma googlada usando como pesquisa: php diff compare github Você encontrará também diversos projetos no git-hub com arquiteturas de comparação aos quais indicam onde uma string não é igual a outra.
- 3 respostas
-
- escrevente
- comparar textos
- (e mais 5 )
-
Muito bom que resolveu..... Sim.... Entorto o nariz para qualquer coisa que promete entregar algo que não passou por meu controle de qualidade (Que não foi eu mesmo quem fez).
-
Seguindo a arquitetura: __DIR__ //> No mesmo diretório que está o arquivo que contém a função __autoload DIRECTORY_SEPARATOR //> Separar diretório $dirName // Em qualquer dos diretórios listados em $cDir DIRECTORY_SEPARATOR //> Separar diretório $Class . '.class.php' //> aquivo de classe .class .php Então no mesmo local onde está a função deve haver os diretórios 'Conn', 'Helpers', 'Models' e dentro de um deles o arquivo Read.class.php O arquivo está lá nesse local e dar erro se implementado esses tais pdf e mpdf. É quase que certeza que em algum arquivo presente na composição desses aí existe um autoload funcionando que sobrescreve a sua função gerando conflito. Se for o caso é só apagar a função conflitante e usar a outra. Abra arquivo por arquivo que compõe pdf e mpdf e remova quaisquer includes e requires de classes que esses arquivo possam conter e use sua função. A propósito o método mágico __autoload está obsoleto nas últimas versões do PHP você deve usar a função spl_autoload_register agora. Exemplo de spl_autoload_register:
-
Além do que o Matheus disse, não sei quem instalou o sql na máquina e nem como instalou. Nesse caso em uma hospedagem na grande maioria dos casos justamente por medidas de segurança sobre o usuário root pode acontecer as algumas situações: Usuário root existe, mas não tem acesso nem a leitura do banco de dados. Usuário root existe, mas tem senha de acesso ao do banco de dados. Usuário root não existe. De qualquer forma se essa função fazer o que deveria fazer mysqli_errno() alertaria sobre quaisquer eventuais problemas de conexão o que inclui o caso do usuário. NOTA*