Jump to content

Omar~

Members
  • Content count

    932
  • Joined

  • Last visited

  • Days Won

    15

Everything posted by Omar~

  1. Omar~

    Desativar cadastro automaticamente após um período

    Se quer algo automatizado sem intervenção humana você precisará de executar um cron job no servidor que automaticamente executará a query de tempos em tempos. Acho desnecessário e complexo para coisas simples como essa que você propõe. Então vou fixar em algo mais simples como dito antes. Bem com a coluna para registro de data uma coluna par definir "ativo" torna-se obsoleta pois só com a "data" dar para fazer esse gerenciamento, mas..... mas então usar uma coluna "ativo". Quando o usuário executa o login e senha login/mail estão corretos, antes de fato as sessões/cookies serem criados você deve está armazenando os dados do login em um array ou em variáveis certo? Então dentro dessa condição: if (strtotime(DATA_NA_COLUNA) < strtotime(date('Y-m-d'))) { // A data expirou } Passamos outra condição if (strtotime(DATA_NA_COLUNA) < strtotime(date('Y-m-d'))) { // A data expirou if ($valor_da_coluna_ativo_do_usuario == '1') { // Aqui você faz o "updade" da tabela no índice desse usuário que tentou logar e já expirou sua data } } else { // Iniciar session's cookie's (LOGAR) } Então ao ele logar se da data dele expirou verifica-se o valor da coluna "ativo" se for 1, uma query será executada atualizando os dados do usuário pois seu acesso expirou, mas o valor da sua coluna "ativo" ainda está em 1.
  2. Simples; o índice email na super global POST, não existe.... Portanto a variável $email é indefinida. Antes de tudo, e veja quais são os dados disponíveis: var_dump($_POST) A propósito, antes de inserir qualquer dado que cada um seja checado, re-checado, verificado e limpo.
  3. Omar~

    Desativar cadastro automaticamente após um período

    Você pode está criando uma coluna na tabela do tipo date. Quando vai ativar o cadastro pega a data atual e incrementa os 30 dias $hoje = date('Y-m-d'); $expira = date("Y-m-d", strtotime("{$hoje} +1 month")); Assim sendo quando logar uma checagem da coluna é feita, se a data expirou o login não é efetuado. if (strtotime(DATA_NA_COLUNA) < strtotime(date('Y-m-d'))) { // A data expirou }
  4. Omar~

    DIV do Formulário centraliza "Carrossel" ao clicar

    https://developer.mozilla.org/pt-BR/docs/Web/API/Element/scrollIntoView
  5. Omar~

    include - pegar variável especifica

    Direto ao ponto. Você não explicou nada do seu problema.... Direto ao ponto. Deveria ter uma função que retornaria um array com os dados necessários ao invés de ficar dando include. Direto ao ponto. Me parece algo muito recursivo. Direto ao ponto. Um foreach resolveria tudo se fosse uma função que retornasse os dados necessários. Direto ao ponto. Comparar dados usando IF poderia resolver (lembrando que existe in_array também). Em resumo para que o include? Pois o que está fazendo é só incluir e exibir os valores das variáveis
  6. Omar~

    JOIN em 3 Tabelas

    Então alguém teria uma ideia se existe uma forma mais correta (otimizada) para está executando uma query como essa: SELECT pages.p_hash, pages.p_title, pages.p_sector, pages.p_created, sectors.s_hash, sectors.s_title, sectors.s_link, users.u_hash, users.u_name FROM pages INNER JOIN sectors ON pages.p_sector = sectors.s_hash INNER JOIN users ON pages.p_created = users.u_hash Não que venha ao caso mas por explicação mesmo. Entro na tabela páginas setores e usuários . Pois tenho que apresentar dados da página, o setor onde se encontra e quem foi o autor
  7. Omar~

    JOIN em 3 Tabelas

    Como disse só uma listagem para o administrador do sistema saber tudo que já foi postado. Na via de tal como meu prazo está apertado e como desse jeito não vi problemas de performasse deixei como está.
  8. Omar~

    JOIN em 3 Tabelas

    A questão é essa o desempenho... E a tabela "pages" possui mais de 16.000 registros. O negócio é um website de uma prefeitura ao qual estou adicionando recursos administrativos, pois não havia um recurso para saber o que já foi postado a não ser indo paginando nas postagens, e quero implementar justamente uma lista de tudo, de forma a um click acessar uma postagem, editar/excluir de forma rápida. A arquitetura fica sendo: Tabela "sectors" é usada para armazenar que tipo de postagem é (Saúde, educação etc...) Tabela "pages" é usada para armazenar os post's referentes a cada tipo de postagem.
  9. Primeiramente a tag <input> não serve para sua questão use a tag <textarea> Acontece que nesse termo você precisará o Javascript para interver no HTML. Você precisará remover o comportamento padrão do submit do fomulário no html Exemplo: <form method="POST" onsubmit="return(false);"> Ou seja quando a key "enter" for pressionada não há retorno do form. No entanto para enviar os dados do formulário também precisará do javascript para capturar os valores de cada elemento do formulário. Sugiro que utilize esse script de desenvolvimento meu mesmo: https://github.com/Spell-Master/sm-web/tree/master/javascript/AjaxRequest Mas, também pode user detecção de evento ao form no caso keypress e se for o enter dar um retorno falso assim sendo essa tecla não submete o formulário.
  10. Faça o download desses arquivos e adicione eles a sua tag <head> no index https://github.com/Spell-Master/sm-web/tree/master/javascript/AjaxRequest ou https://github.com/Spell-Master/sm-web/tree/master/min/AjaxRequest <div id="validacao"></div> <form method="POST" id="formulario" onsubmit="return ajx.form(this.id, 'validacao', 'validar.php')"> <input type="text" name="nome" /> <input type="text" name="sobrenome" /> <input type="text" name="email" /> <input type="text" name="idade" /> <input type="text" name="telefone" /> <button>Validar</button> </form> <script> ajx = new AjaxRequest(); </script> validar.php <?php // Faça a verificação se os dados existem antes // Faça checagem de caracteres antes // Limpe os dados antes para evitar injeção de código $mail = 'aaaa@aaa.com'; if ($_POST['email'] === $mail) { echo("Esse e-mail existe"); } else { echo("<pre>"); var_dump($_POST); echo("</pre>"); } Lógico que aqui usei uma variável para comparar se o email existe. O que você deve fazer é consultar em seu banco de dados se o e-mail digitado pelo usuário existe
  11. Omar~

    Ignorar a Posição do Mouse

    Ah sim, então as questão não é o click e sim a posição do ponteiro do mouse. Isso pode ser que não vai dar para contornar, porque nessa situação a exibição do suposto anúncio + um script captcha. No entanto podemos tentar enganar o script dizendo que o mouse está em cima sem mesmo ele está lá. Certo com esse exemplo podemos ver que temo algo sendo feito quando o cursor vai em cima do elemento e algo quando ele sai, acredito que essa seja a raiz da questão, pois como você diz o mouse tem que está em cima. O que vamos fazer é detectar um click e dizer que o mouse está em cima sem mesmo está. Usando um despachante de eventos . Com esse exemplo temos um evento ouvinte click que é o documento se esse clique é em cima de um elemento cujo possua um classificador .btn, o evento é disparado e outro despachado sendo que o alvo é o elemento que o cursor deve está em cima, assim sendo ele diz que o mouse está em cima sem mesmo nunca teve estado. Bom acho que é isso, caso não tente localizar qual é o evento ouvinte do captcha do tal anúncio despache da mesma forma o evento de ativação em cima dele.
  12. Omar~

    Ignorar a Posição do Mouse

    Caro @dmelo esse negócio de forçar click em um elemento "viola em muito as boas práticas da web". Mas sim é "possível" desde que não viole as diretrizes dos software anti-vírus/spyware do usuário. Se as definições vem de jQuery já adiciona um alerta messes softwares que o usuário possa ter. Se explicar direito como e quando isso deve acontecer posso mostrar para você um exemplo. Lembre-se que o javascrirpt é executado na máquina do usuário. E jQuery (É BOSTA INÚTIL) que dar atalhos sem necessidade as funções nativas do javascript. No mais pelo que entendi é atrelar ao documento o evento click e esse ouvinte irá buscar o classificador btn, quando ele a disparar o evento irá executar uma ação.... Entre mais um classificador não seria a questão inicial e sim um identificador, mas isso depende das questões do que fazer, dependeria o que realmente vai fazer, depende do que realmente precisa pela sua questão que ficou mau explicada...
  13. Omar~

    identificar valor especifico em texto com select MYSQL

    Pelo meu entendimento é só: WHERE coluna_id = :busca Mas aí tem que ver no meu caso usando PDO + statements. Daí em ver como é a estrutura da tabela, como é salvo o usuário logado etc... Enfim ao meu ver é só comparar: Valor igual a valor....
  14. Omar~

    Trazendo formato data invertida

    Use essa função que criei ela serve tanto para coluna tipo date como para datetime function dateTime($dateTime) { $timestamp = explode(' ', $dateTime); $getDate = implode('/', array_reverse(explode('-', $timestamp[0]))); return ($getDate . ' ' . (isset($timestamp[1]) && preg_match('/:/', $timestamp[1]) ? $timestamp[1] : null) ); } $dateA = '1111-22-33'; // Formato Y-m-d $dateB = '1111-22-33 01:02:03'; // Formato Y-m-d H:i:s var_dump(dateTime($dateA)); // Saída 33/22/1111 var_dump(dateTime($dateB)); // Saída 33/22/1111 01:02:03
  15. Omar~

    Codeigniter + PHP - Gravar Pontuação de Produtos

    Com checkbox não dar, teria que usar radio <input type="radio" name="pontos" value="0" checked="" /> <input type="radio" name="pontos" value="1" /> <input type="radio" name="pontos" value="2" /> <input type="radio" name="pontos" value="3" /> <input type="radio" name="pontos" value="4" /> <input type="radio" name="pontos" value="5" />
  16. Seria isso? var maiuscula = 'essa string vai ser maiúscula'; console.log(maiuscula.toUpperCase()); var minuscula = 'ESSA STRING VAI SER MINÚSCULA'; console.log(minuscula.toLowerCase()); No contexto você pode pegar o nome da lista converter e fazer o mesmo com o que o usuário digita, depois comparar se são iguais...
  17. Se for um ambiente de desenvolvimento você pode optar por sempre acessar a página em janela anônima (Navegação privada), assim sendo nunca será salvo nada. O mais ideal se for o caso de desenvolvimento é que use um browser específico para isso (sugiro o firefox por ser de longe o melhor browser atualmente existente) Com o firefox aberto clique no botão superior no canto direito "Abrir Menu" Clique em "Opções" Clique em "Privacidade e Segurança" Role a página até encontrar "Histórico" Selecione "Nunca Memorizar"
  18. Omar~

    Fazendo Upload de vídeo

    Desculpe; falha minha, não abordei questão responsiva e sim os erros de propriedades e atributos da tag. Mas se for essa a questão está aqui a solução em um contexto geral com tag's, propriedades e atributos. Deixando o vídeo adaptável para a resolução de tela <video controls="" style="width:100%; height:auto"> <source src="seuvideo.mp4" type="video/mp4" /> </video> Pois a adaptação do vídeo é volátil dependendo do elemento pai onde o a tag <video> vai ser inserida
  19. Omar~

    Fazendo Upload de vídeo

    Isso é o porque o browser que está usando é "bonzinho" e está corrigindo automaticamente seus erros. O que não se pode esperar de todos os diferentes tipos de navegadores. Porque o correto seria: <video controls> <source src="seuvideo.mp4" type="video/mp4" style="min-width:800px; max-width:100%; height:auto" /> </video>
  20. Omar~

    Página de erro ou de redirecionamento

    Isso é porque já na arquitetura da sua aplicação já está com erro/completamente desorientada. Tentar contornar agora é burrice. O melhor jeito é rever como os dados são trafegados e concertar da origem. Me faz pensar se esse tipo de dado passa o que mais passa?! Respondendo a pergunta.... Use a constante global $_SERVER['REQUEST_URI'] para obter a url (isso nem precisaria se a aplicação fosse coordenada corretamente). Use a função explode para separar cada índice de entrada Compare o valor que deseja com o índice em questão Se inválido redirecione com php usando a função header ou com javascript usando a função location No mais precisaria saber se o mode reescrita do apache está fazendo alguma coisa. Como a indexação de índices da url é usado para fazer consultas.
  21. Omar~

    Dúvida com link e div's

    A barra branca superior você pode definir uma altura por padrão tipo 150px. Dentro dela você define duas tag's <div>. Uma com a propriedade float: left onde vai está o texto, outra com float: right que vai está os ícones. Ainda dentro dessa tag da barra branca pós as duas tag's div defina outra com a propriedade float clear. A que contém a imagem de fundo você dar um margin-top com a altura da tag da barra branca no caso aqui 150px. Continuando essa tag você pode definir a altura como height: calc(100vh - 150px). Daí nessa tag você pode optar por um padding que irá espaçar internamente qualquer elemento seguindo pela propriedade align: center ou (align-items:center; display:flex; flex-direction:row; flex-wrap:wrap; justify-content:center) que irá alinhar central na horizontal e vertical qualquer elemento interno. Tenha em mente que um documento HTML formatado nada mais é que blocos dentro de blocos independente do que você pode ver na tela do browser.
  22. Omar~

    Quanto e como cobrar por um site?

    Olá @GabrielSCastro o que posso dizer é como eu procedo. Independente do quão complexo for a software que irei desenvolver, em negociação com o cliente ele me diz o que quer, vejo as possibilidades para tal e estipulo o tempo que levaria para desenvolver, seja um mês/dois uma semana etc... Eu cobro com base no salário mínimo comercial (o que é muito barato), desde a apresentação do rascunho que seria uma prévia do que ele deseja, assim sendo podendo haver ajustes adesões ou remoções. No caso de manutenções eu dou 2 a 6 meses grátis (conforme for a complexabilidade do website) para afins de correções de bugs que possam surgir. Se caso o cliente queira modificações pós entrega do software a cobrança segue o mesmo padrão de desenvolvimento. No caso de manutenção de website de terceiros (que não foi eu quem desenvolveu) como o dobro do valor, pelo fato que em 99% dos casos foi feito por alguém inexperiente e ele fez "merd....." e na maior parte dos casos é mais rápido refazer do que concertar. Para hospedagem eu só indico para o cliente uma empresa, mas caso ele queira que eu o faça também cobro por fora.
  23. Omar~

    Google Chrome Vs Mozilla

    Rapaz por desconhecer o HTML e CSS, ninguém aqui vai poder ajudar... O que posso dize é que use o console de inspeção no browser para localizar o problema. Ctrl + Shift + I no Chorme ou Ctrl + Shift + C no Mozilla Assim sendo você poderá analisar item por item o porque do vazamento. Sendo leviando posso dizer que o problema é uso da propriedade width que são fixos ao invés de relativos. Mau ou uso indevido de overflow's. Tags não fechadas ou não escapadas. Uso indevido de tags para posicionamento má definição (cada tag tem sua função especifica no documento html).
  24. Omar~

    Favoritar

    Isso é algo muito simples desde que você tenha uma noção nem que seja básica de como manipular dados... A cada upload de imagem ela deve ser registrada em um banco de dados A tabela para esse afim deve possuir uma coluna para identificar-la outra para contagem de votos. CREATE TABLE `imagens` ( `id` int(9) NOT NULL AUTO_INCREMENT COMMENT 'Esse é o identificador da imagem', `nome` varchar(200) NOT NULL DEFAULT '' COMMENT 'Nome do arquivo de imagem', `votos` int(9) NOT NULL DEFAULT '0' COMMENT 'Contador de votos', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; Ao exibir a imagem adicione um botão cujo irá chamar uma função enviando a informação de qual imagem é. <button onclick="votar('<?= $identificar_imagem ?>')">Votar na imagem</button> A função por sua vez irá executar um ajax para que não haja recarregamento passando por um protocolo GET a informação de qual imagem foi votada para um arquivo. function votar(id_da_imagem) { // Execute o ajax informando o arquivo e o identificador da imagem // ('arquivo_de_voto.php?imagem='+ id_da_imagem); } No arquivo que vai receber essa informação faça um SQL SELECT na tabela de imagem selecionado a imagem que tenha o ID da informação GET['imagem'] Com essa informação adicione um variável de contagem. $contagem = ($resultado_de_votos_da_imagem += 1); Então é só fazer o SQL UPDATE nessa mesmo registro atualizando a coluna de votos. Ponderações: Você também deve possuir uma segunda tabela que irá armazenar quem já votou nessa imagem, para que antes de fazer o updade possa checar se aquela pessoa já votou na imagem, do contrário uma pessoa pode clicar milhares de vezes no botão assim votando diversas vezes. Usar-se de manipulador de tempo para que um maldosos não vá ao console ou em outra aplicação http e adicione uma função em micro-segundo para voto (é como se a pessoa clicasse centenas de vezes por segundo) sobre esse botão ou o arquivo que recebe, do contrário seu servidor será sobrecarregado de requisições (isso se a conexão e a máquina dele aguentar).
  25. Omar~

    Como usar o AJAX para dar UNSET?

    Adicione o JS e CSS desse link a sua aplicação: https://github.com/Spell-Master/sm-web/tree/master/min/AjaxRequest Ou pelo código sem minificar: https://github.com/Spell-Master/sm-web/tree/master/javascript/AjaxRequest <a class="link" onclick="finalizar()">finalizar</a> <div id="sair"></div> <script> function finalizar() { finalizar.prototype = new AjaxRequest(); finalizar.prototype.open('sair', 'diretorio/terminar.php'); // Ou use um desses dois métodos abaixo: // finalizar.prototype.send('sair', 'diretorio/terminar.php'); // finalizar.prototype.pop('sair', 'diretorio/terminar.php'); } </script> No arquivo terminar.php <?php unset($_SESSION['prestacao']); unset($_SESSION['nomeproj']); ?> <script>window.location.href = 'areaUsuario.php';</script>
×

Important Information

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