Jump to content

Omar~

Members
  • Content count

    1151
  • Joined

  • Last visited

  • Days Won

    15

Everything posted by Omar~

  1. Bem simples de resolver se você tem mesmo acesso aos arquivos hospedados. A mensagem é clara e diz que o usuário sql palms não tem permissão de acesso devido a senha incorreta. Veja alguma documentação desse prestashop e ver em qual arquivo armazena os dados de acesso ao banco de dados. Acesse os arquivos na hospedagem e faça o download desse arquivo. Modifique os dados manualmente nesse arquivo, conforme os novos dados de acesso ao sql. Envie esse arquivo modificado para a hospedagem substituindo o que lá está com dados inválidos.
  2. Já de cara sem olhar a fundo podemos ver.... Quando isso aqui não estiver vazio entramos na condicional.... Então a variável $idclient será o valor do input não vazio... Aí nessa condição para ser válida $idclient deve ser vazio:
  3. Bom, uploads podem ser feitos de inúmeras formas. Aqui eu presumo que é um usuário logado que está tentando enviar arquivos, então preparei um exemplo genérico sobre o assunto, espero que seja algo como isso. Começando pelo html, um formulário de envio simples, e padrão para envio. Mas a pegada está no javascript controlando o que é selecionado antes de submeter o formulário. Aí no arquivo que vai receber os você faz Sei lá cara seu código também envia arquivos, então eu acho que a questão mesmo era salvar no banco de dados. Como desconheço a estrutura de sua tabela e quais dados realmente é para salvar, então a ajuda é mínima. Mas o esquema é esse aí mesmo cabe você adaptar a sua realidade.
  4. Rapaz está difícil entender o que de fato você está tentando fazer.... Se você já enviou os arquivos, porque uma nova função para enviar arquivo? Sei lá tenta isso aqui: https://github.com/Spell-Master/sm-web/tree/master/javascript/FileTransfer Assim você pode está sempre enviando arquivos sem sair da página atual. A propósito umas observações:
  5. Omar~

    submit sem refresh

    Primeiro isso aqui... Altere para... // Substituir ofuscação que só vai gerar problemas, por valor neutro quando dados não existem $nome = (isset($_POST['nome']) ? $_POST['nome'] : ''); E para envio sem recarregar: https://github.com/Spell-Master/sm-web/tree/master/javascript/AjaxRequest
  6. Omar~

    array retornar elementos

    https://forum.imasters.com.br/topic/587732-dizer-se-tem-ou-não-dados-repetidos-no-array/ E não é a mesma coisa?
  7. Omar~

    dizer se tem ou não dados repetidos no array

    Sem reinventar a roda, a função para isso é array_unique
  8. Omar~

    Problemas com variáveis PHP

    Estranho, segundo o input o índice fileimg deveria existir, então pode ser erro no formulário. Rode esse código: <form method="POST" enctype="multipart/form-data"> <input type="file" name="nome_do_input" /> <button type="submit">Enviar</button> </form> <?php $arquivo_enviado = (isset($_FILES['nome_do_input']) ? $_FILES['nome_do_input'] : false); if ($arquivo_enviado) { echo "<pre>"; var_dump($arquivo_enviado, $_FILES); echo "</pre>"; } Algumas ponderações: Para validar a extensão e dados do arquivo use a class finfo. Antes de querer checar o tamanho do arquivo, obtenha se o tamanho condiz com a configuração do seu servidor, para obter esse informação use "ini_get('upload_max_filesize')". Mas você pode alterar o tamanho máximo no PHP.ini
  9. Omar~

    Segurança dos formulário

    Desde sempre foi possível manipular o HTML de um formulário, hora que também sempre foi possível enviar dados por POST ou GET mesmo sem passar por sua aplicação. Se você pode impedir que alguém altere o html ou envie dados? A resposta é simples, e é não, você não pode impedir nada disso. (Se renderizou o HTML, entregou para o usuário é dele e ele pode manipular da forma que bem entender, desde o html, js, mídias etc...) O que você pode e "DEVE FAZER" é sempre tratar qualquer tipo de informação que venha de um ambiente externo principalmente se alguma dessas informações vão se usadas em um banco de dados. Lógico que o tipo e como vai ser tratada algum dado que entra depende de quão sensível ele é e qual sua finalidade. Exemplo se o tipo de dado que tenho que validar é um INTEGER e a informação que entrou além de números inteiros entrou alguma string ou flutuante, posso simplesmente lançar um erro ao invés de continuar meu código. Se vou por exemplo salvar uma string no banco de dados e essa string contém caracteres suspeitos como algarismos, chaves etc. Posso lançar um erro ou limpar essa string antes de acessar o database. No geral é isso, sempre validar se o tipo de dado é o que vai ser usado, uma limpeza de string aqui e alí, junto a PDO você garante 90% de segurança, só não se consegue 100% porque nada é realmente inviolável. Uma regra que valide seus dados? Depende como disse do que vai ser feito, e sim você pode criar uma regra/manha/truque como disse acima. Mas lembre-se que quanto mais filtros você passa mais seguro vai está e menos usabilidade sua aplicação irá ter. Proteger excessivamente só vai deixar a coisa devagar.
  10. Omar~

    Filtro de busca

    Sabia que se você usar as ferramentas corretas uma parte do problema é resolvido? Ao invés de usar um input checkbox use o radio que serve para esse tipo de situação. Bom, não de para eu entender o real problema, mas o que me aparenta é que você precisa envia um cabeçalho HTTP como POST. Se for esse o caso:
  11. Omar~

    Conversão de JPEG e PNG para WEBP com imagewebp

    Você está destruindo a imagem criada na variável $image? Pode ser um problema de cache. Já tive um problema similar e era apenas que eu não estava limpando a memória. Mas tente criar uma nova imagem já aplicando as correções grb, então você copia essa imagem para corrigir eventuais problemas de dimensionamento. Só então com essa cópia você cria o arquivo webp Mais ou menos isso: <?php $arquivo = 'imagem.jpg'; $imagem = imagecreatefromjpeg($arquivo); $imgX = imagesx($imagem); $imgY = imagesy($imagem); $novaImagem = imagecreatetruecolor($imgX, $imgY); imagealphablending($novaImagem, false); imagesavealpha($novaImagem, true); imagecopyresampled($novaImagem, $imagem, 0, 0, 0, 0, $imgX, $imgY, $imgX, $imgY); imagewebp($novaImagem, 'imagem.webp', 100); imagedestroy($imagem); // Importante para limpar o cache echo ("<img src=\"imagem.webp\" alt=\"\" />");
  12. Omar~

    DATA-HORAs

    Informação indispensável para saber como manipular datas. Mas o caminho é mais ou menos esse: <?php $dataDeTermino = strtotime('2021-10-30 14:00:00'); if ($dataDeTermino < strtotime(date('Y-m-d H:i:s'))) { echo ("Terminou, apague o registro nessa condição SE ELE EXISTE! "); }
  13. Omar~

    [Resolvido] Múltiplos checkbox

    Pouca informação para poder ajudar. Começando pelo menos relevante: Como é esse processo? Em que tipo de coluna é salvo essa informação? O mais relevante: A função explode cria um array com onde acada índice vai existir conforme o delimitador é definido. Como você está resgatando cada índice para pode definir o valor de um input, assim setar-lo como checado? Ver se te ajuda: <?php $string = 'valorA, valorB, valorC'; $array = explode(', ', $string); var_dump($array); ?> <hr /> Usando a função "in_array" <p><input type="checkbox" value="valorA" <?= (in_array('valorA', $array) ? 'checked=""' : null) ?>/>valorA</p> <p><input type="checkbox" value="valorX" <?= (in_array('valorX', $array) ? 'checked=""' : null) ?>/>valorX</p> <p><input type="checkbox" value="valorB" <?= (in_array('valorB', $array) ? 'checked=""' : null) ?>/>valorB</p> <p><input type="checkbox" value="valorC" <?= (in_array('valorC', $array) ? 'checked=""' : null) ?>/>valorC</p> <p><input type="checkbox" value="valorY" <?= (in_array('valorY', $array) ? 'checked=""' : null) ?>/>valorY</p> <hr /> Ou comparando arrays <?php $inputs = ['valorA', 'valorX', 'valorB', 'valorC', 'valorY']; $marcado = ''; foreach ($inputs as $valor) { foreach ($array as $checked) { if ($checked == $valor) { $marcado = 'checked=""'; } } echo ("<p><input type=\"checkbox\" value=\"{$valor}\" {$marcado} />{$valor}<p/>"); $marcado = ''; }
  14. Omar~

    DATA-HORAs

    Sem a estrutura da tabela fica difícil ajudar. De qualquer forma também é possível comparar datas/horários uma vez que alguém alguma hora irá acessar a aplicação e a tabela será lida. Se houver algum registro que foge da data/horário estipulado esse registro pode ser apagado antes que o HTML seja renderizado para o usuário.
  15. Omar~

    Inclusão de + itens no banco

    No HTML/JS depende de como você vai criar novos itens. Mas o esquema é que itens adicionais podem ter seu name como um ARRAY. <input type="text" name="exemplo[]" /> <input type="text" name="exemplo[]" /> <input type="text" name="exemplo[]" /> No PHP var_dump($_POST); Assim sendo poderá ver que a chave "exemplo" é um array com a quantidade de itens exemplo[] inseridos no formulário.
  16. Omar~

    Como consumir uma função de consulta SELECT pdo?

    Sim, do contrário você está se referindo a um atributo da classe. Não, os valores tem que existir, do contrário os parâmetros usados pelo método terá o valor NULL. Nem dentro, nem fora, separe os dois divisores da programação, um é o funcional outro é o orientado a objeto. Porque você conseguiu? Para início de conversa o objeto $pdo não existia, logo nenhum dos métodos da classe PDO não existia por isso o erro. Mas daí você chama uma global (que pode existir ou não) para armazenar um valor que acredito eu que venha do arquivo "conecta.php". O ideal no seu cenário é o arquivo conecta.php ser uma class conecta, assim sendo essa classe é responsável por estabelecer a conexão com o banco de dados e armazenar a conexão em um atributo público para ser acessado por outras classes. Dessa forma você previne erros recursivos caso haja erros ou algum problema na conexão. (Ou seja se não conectar o problema é a classe que conecta, dividindo a responsabilidade de cada coisa dentro da aplicação). Não que você esteja errado, mas só para salientar. Usar classes significa que você não quer ficar tendo que repeti a mesma coisa, no geral usar uma classe é reaproveitar ao máximo dados. Se por exemplo o método entrada de cara retorna um valor que pode existir ou não você não pode reaproveitar esse valor. Ao invés de retornar o ideal é que ele armazene o valor em um atributo, em outro método o valor possa se verificado, só então outro método retorne o valor se de fato ele existe. Se entendeu a lógica quando você envia dados para uma classe essa classe pode conter vários métodos que agem distintamente com os mesmos dados. No resumo uma classe são um aglomerado de funções que compartilham entre si os mesmos dados. Do contrário o mais coeso é usar uma programação funcional.
  17. Omar~

    Cadastro PHP e Login na mesma página

    @Thiago Duarte Dica: Não dê ctrl+c e ctrl+v, isso não funciona no mundo da programação. Entenda a lógica, esse é o caminho. Seu caso é mais afundo que um um simples post... Talvez eu esteja sendo leviano, mas pelo que aparenta você primeiro precisa saber sobre protocolo POST e uso de super globais no caso posts e sessions; sem esse conhecimento por sua parte, qualquer ajuda aqui seria superficial. Me perdoes se não fui coeso, mas se tivesse esse conhecimento sobre tais afins sua dúvida estaria respondida por esse conhecimento.
  18. Omar~

    manter conteúdo visível

    https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage Obs.: Não precisa criar uma variável para armazenar o objeto, só irá consumir memória desnecessária. Nota: SE É PARA FICAR VISÍVEL, PARA QUE "display:none"?
  19. Omar~

    Assinatura de e-mail em HTML desconfigurada

    Tente usar o a propriedade background-image. Exemplo: De fato não sei se vai dar certo uma vez que essas coisas da microsoft são tudo mau feitas.
  20. Omar~

    HTML

    Verifique a estrutura html, se houver erros a coisa não funciona. Pelo trecho de código postado localizei tags sendo fechadas sem que estivessem sido abertas, o que já é o suficiente para não funcionar. Obs.: Se estiver rodando com algum modo re-escrita de url no apache também não funciona BOOKMARK. Nesse caso você pode está usando javascript através da função scrollIntoView rolar a página até o local.
  21. Dar uma olhada aqui: https://www.cssscript.com/tag/date-picker/ Talvez possa encontrar um script que atenda a sua necessidade, caso não pode-se editar algum desses conforme você deseja. Além do mais você pode está usando algum desses scripts com base para você criar um para te atender conforme você deseja.
  22. Omar~

    Iniciante php

    Servidor apache e um editor de texto qualquer. Para servidor local, indico : https://www.apachefriends.org/pt_br/index.html Siga esse vídeo para fazer a instalação corretamente já com os serviços ativos para seu sistema win10: Como ferramenta de trabalho substituindo o editor de texto use uma IDE, como sugestão indico a que uso: https://netbeans.apache.org/download/ Também é bom um editor rápido com integração de código, no seu caso windows: https://notepad-plus-plus.org/downloads/ O mais importante, estudar muito, "mas muito mesmo" a documentação do PHP: https://www.php.net/ Como sugestão, não que no windows 10 você não possa programar, mas seria conveniente você usar um sistema nativo de 99,9% de um servidor, no caso o linux. Assim você já vai se familiarizando e entendendo como a coisa toda funciona.
  23. Fácil é! E também não é, porque depende do resultado final. Para fazer o upload, no geral você tem obter o arquivo através da super global $_FILES Então mover esse arquivo para um local específico. Para alterar as dimensões no caso 300pixels. Você ao invés de mover o arquivo cria uma cópia com a função: imagecopyresampled. Para alterar o nome e salvar você uma das funções abaixo dependendo do formato final que você deseja salvando a cópia criada com a função anterior: imagejpeg imagepng imagebmp imagegif Veja essa classe para upload de imagem (só que ela só aceita imagens jpeg e png): https://github.com/Spell-Master/sm-web/blob/master/exemplos/corte-e-salvamento-de-imagens/ImageUpload.php <?php require ('ImageUpload.php'); $upload = new ImageUpload(); $imageName = 'O nome que a imagem deve ter'; $tamanho = 300; // Se for maior que 300 de altura ou largura redimenciona para 300 mantendo o aspecto $upload->sendImage($_FILES['arquivo'], $imageName, $tamanho); No caso o $_FILES['arquivo'] irá buscar pelo valor de: <input type="file" name="arquivo" accept=".jpg,.jpeg,.png" /> Lógico que esse meu caso não estou verificando a naturalidade do arquivo enviado, se é uma imagem e se não é algo disfarçado de imagem. Você pode também está usando o javascript para ler a imagem na máquina do usuário, então recriar-la através de um elemento <canvas> então resgatar compilar-la em base64 e adicionar a string em uma <textarea> oculta. Quando submeter o formulário no backend você obtêm a string da textarea e com essa string criar uma imagem. A vantagem dessa segunda alternativa apesar de mais complexa é a praticidade para o usuário pois ele de fato não precisará fazer um upload.
  24. Omar~

    Pop-up toda ver que abrir o site.

    Primeiro um bloco na cara do usuário forçando a ver algo que a primeira mão não o interessa é uma estupidez e só irá poluir desvalorizar/site, provavelmente o usuário irá fechar a janela do seu site sem nem mesmo ler/ver. Muitos acreditam também que esses blocos são alguma forma de violar a máquina deles por isso saem sem mesmo esperar a página acabar de carregar (E alguns são mesmo). Aconselho você que crie um botão, bem visível para que o usuário possa clicar e ver as informações adicionais sobre o produto. No geral de uma googlada sobre "modal" ou acesse: https://github.com/Spell-Master/sm-web/tree/master/javascript/ModalShow Por exemplo depois da estrutura HTML do modal (se adicionar o js, o css a sua aplicação ambos contidos no link acima"): <script> var modal = new ModalShow('identificador'); modal.open('Título do Modal', true); // O modal irá abrir quando a página terminar de carregar e terá um botão para fechar setTimeout(function () { // Mo modal vai fechar sozinho depois de 5 segundos modal.close(); }, 5000); </script>
  25. Estou com uma tarefa aqui e não estou conseguindo criar uma lógica para adicionar uma transição entre os elementos. Segue da seguinte forma: Tenho uma caixa central que irá abrigar 3 ou mais caixas. Cada caixa filha tem exatamente as mesmas dimensões da paixa mãe. Ao executar a função a caixa que está ao centro move-se para esquerda e a da direita também assumindo a posição da caixa anterior. Quando por exemplo antes de chegar a última filha, a primeira que se moveu toma o lugar da ultima assim tornando-se uma espécie de loop infinito. Ou seja depois da última filha a primeira toma o lugar dela para que a atual última possa se mover ao centro. Exemplo: / [1] / [2] - [3] "clicou em avançar torna essa sequência" [1] / [2] / [3] Até aqui tudo bem, bastando eu clonar a primeira caixa atual, remover-la então logo em seguida adicionar a cópia no final. Porém aqui que entra a questão pois teria que adicionar uma animação de transição, de forma que que as caixas movam-se lentamente para esquerda. Aqui está o esboço de teste: HTML: CSS: Javascript: Eu pensei em recursos como marginLeft e translateX, mas em ambos casos sempre terei o problema que se eu mover negativamente as caixas, ao remover qualquer uma que é o caso da primeira ir para último, todas as demais caixas vão ficar fora da caixa central. Quem tiver alguma ideia como adicionar essa transição de movimento, ficaria grato com a ajuda.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.