Ir para conteúdo

Omar~

Members
  • Total de itens

    1325
  • Registro em

  • Última visita

  • Dias vencidos

    15

Posts postados por Omar~


  1. A lógica é simples cara...

    Bem, você terá uma tabela para armazenar essa notificação.

    Enviou mensagem, salva o registro na tabela de notificação.

    Em sua estrutura HTML você terá um local onde a consulta de notificação será feita, se tem alguma registro você indica da forma que achar melhor.

     

    Agora poder notificar em tempo real é um pouco mais complexo, mas simples pois estaremos fazendo a mesma coisa só iremos depender de javascript.

    De fato nunca mexi com esse lance de notificação em tempo real, mas está em meus planos implementar em meu website e o caminho a segui é só ler isso:

    https://developer.mozilla.org/en-US/docs/Web/API/Notifications_API

    https://developer.mozilla.org/pt-BR/docs/Web/API/notificacoes

     


  2. O melhor caminho seria corrigir qualquer erro.

    Mas você pode Ofuscar o erros do servidor (Não aconselho)...

    Porém só faça isso na aplicação final, pois enquanto estiver em produção os erros são vitais a aparecerem, se não aparecem não há como concerta-los.


  3. function gerarSenha() {
      var i = 0, p = '', t = Date.now();
      while (i != 42) {
        i++;
        p += Math.floor(Math.random() * 10);
      }
      p += t;
      return(p);
    }

    O resultado será um número de 55 dígitos aleatórios onde é impossível se repetir, pois seus últimos 14 dígitos é determinado pelo ano, mês, dia, hora, minuto, segundo, décimo e milésimo.

    Porém prefiro fazer coisas desse jeito em linguagem de servidor, pois o javascript que faz é a própria máquina do usuário.


  4. Normalmente em aplicações quando precisamos validar CPF, também precisamos além de pessoas físicas validar pessoas jurídicas então preparei esse exemplo tanto para verificação de CPF quando para CNPJ.

     

    Note que teremos 2 tipos de filtros...

    Um usando expressão regular, o que obriga a pessoa ter que digitar o campo de forma correta. Do contrário o formulário não pode ser submetido.

    Um usando script, que vai limpando qualquer caractere que não se enquadre no que é permitido.

    Fica a seu critério o que usar ou cominar os dois.

    Também a validação do lado do servidor, que é extremamente necessária pois tanto HTML como JS podem ser manipulados pelo usuário.

    <form method="POST">
        <p>Usando expressão regular</p>
        <input
            type="text"
            name="expressao"
            minlength="14"
            maxlength="18"
            pattern="([0-9]{2}[\.]?[0-9]{3}[\.]?[0-9]{3}[\/]?[0-9]{4}[-]?[0-9]{2})|([0-9]{3}[\.]?[0-9]{3}[\.]?[0-9]{3}[-]?[0-9]{2})"
            />
    
        <p>Usando script</p>
        <input
            type="text"
            name="script"
            minlength="14"
            maxlength="18"
            onkeypress="mask(this, cpfCnpj)"
            onblur="clearTimeout()"
            />
    
        <hr />
        <button>Executar</button>
    </form>
    
    <?php
    if (isset($_POST) && count($_POST)) {
        require_once(__DIR__ . DIRECTORY_SEPARATOR . 'StrValid.php');
        $valido = new StrValid();
        if ($valido->checkCpfCnpj($_POST['expressao'])) {
            echo("<p>O post expressao é um CPF ou CNPJ válido</p>");
        }
        if ($valido->checkCpfCnpj($_POST['script'])) {
            echo("<p>O post expressao é um CPF ou CNPJ válido</p>");
        }
        echo("<pre>");
        var_dump($_POST);
        echo("</pre>");
    }
    ?>
    
    
    <script>
        function mask(o, f) {
            v_obj = o;
            v_fun = f;
            setTimeout('obMask()', 1);
        }
        function obMask() {
            v_obj.value = v_fun(v_obj.value);
        }
        function cpfCnpj(v) {
            v = v.replace(/\D/g, ''); //Remove tudo o que não é dígito
            if (v.length <= 13) { //CPF
                v = v.replace(/(\d{3})(\d)/, '$1.$2'); //Coloca um ponto entre o terceiro e o quarto dígitos
                v = v.replace(/(\d{3})(\d)/, '$1.$2'); //Coloca um ponto entre o terceiro e o quarto dígitos de novo (para o segundo bloco de números)
                v = v.replace(/(\d{3})(\d{1,2})$/, '$1-$2'); //Coloca um hífen entre o terceiro e o quarto dígitos
            } else { //CNPJ
                v = v.replace(/^(\d{2})(\d)/, '$1.$2'); //Coloca ponto entre o segundo e o terceiro dígitos
                v = v.replace(/^(\d{2})\.(\d{3})(\d)/, '$1.$2.$3'); //Coloca ponto entre o quinto e o sexto dígitos
                v = v.replace(/\.(\d{3})(\d)/, '.$1/$2'); //Coloca uma barra entre o oitavo e o nono dígitos
                v = v.replace(/(\d{4})(\d)/, '$1-$2'); //Coloca um hífen depois do bloco de quatro dígitos
            }
            return v;
        }
    </script>

     

    Classe StrValid

    <?php
    /**
     * ********************************************
     * * @class StrValid
     * * @copyright (c) Spell master
     * * @version 2.1
     * * @see Classe para verificação de string
     * ********************************************
     */
    
    class StrValid {
    
        /**
         * ****************************************
         * Verificar se uma string possui somente 
         *  caracteres alfabéticos "Não acentuados
         *  e sem espaços"
         * ****************************************
         * @param {string} $subject
         * Entrada para verificação
         * @return {true} (A string é valida)
         * ****************************************
         */
        public function strCheck($subject) {
            if (preg_match('/^([a-zA-Z]+)$/i', $subject)) {
                return (true);
            }
        }
    
        /**
         * ****************************************
         * Verificar se uma string possui somente 
         *  caracteres numéricos
         * ****************************************
         * @param {string} $subject
         * Entrada para verificação
         * @return {true} (A string é valida)
         * ****************************************
         */
        public function intCheck($subject) {
            if (preg_match('/^([0-9]+)$/i', $subject)) {
                return (true);
            }
        }
    
        /**
         * ****************************************
         * Verificar se uma string possui somente 
         *  caracteres alfabéticos "Incluíndo
         *  acentos"
         * ****************************************
         * @param {string} $subject
         * Entrada para verificação
         * @return {true} (A string é valida)
         * ****************************************
         */
        public function strAccent($subject) {
            if (preg_match('/^([a-zA-ZÀ-ú]+)$/i', $subject)) {
                return (true);
            }
        }
    
        /**
         * ****************************************
         * Verificar se uma string possui somente 
         *  caracteres alfabéticos "Incluíndo
         *  espaços"
         * ****************************************
         * @param {string} $subject
         * Entrada para verificação
         * @return {true} (A string é valida)
         * ****************************************
         */
        public function StrSpace($subject) {
            if (preg_match('/^([a-zA-Z ]+)$/i', $subject)) {
                return (true);
            }
        }
    
        /**
         * ****************************************
         * Verificar se uma string possui somente 
         *  caracteres numéricos "com ou sem
         *  espaços"
         * ****************************************
         * @param {string} $subject
         * Entrada para verificação
         * @return {true} (A string é valida)
         * ****************************************
         */
        public function intSpace($subject) {
            if (preg_match('/^([0-9 ]+)$/i', $subject)) {
                return (true);
            }
        }
    
        /**
         * ****************************************
         * Verificar se uma string possui somente 
         *  caracteres alfabéticos ou numéricos
         *  "sem espaços ou acentos"
         * ****************************************
         * @param {string} $subject
         * Entrada para verificação
         * @return {true} (A string é valida)
         * ****************************************
         */
        public function strInt($subject) {
            if (preg_match('/^([a-zA-Z0-9]+)$/i', $subject)) {
                return (true);
            }
        }
    
        /**
         * ****************************************
         * Verificar se uma string possui somente 
         *  caracteres alfabéticos ou numéricos
         *  "incluíndo espaços ou acentos"
         * ****************************************
         * @param {string} $subject
         * Entrada para verificação
         * @return {true} (A string é valida)
         * ****************************************
         */
        public function strIntSpace($subject) {
            if (preg_match('/^([a-zA-Z À-ú 0-9]+)$/i', $subject)) {
                return (true);
            }
        }
    
        /**
         * ****************************************
         * Verificar se uma string possui somente 
         *  caracteres alfabéticos "Incluíndo
         *  acentos ou espaços"
         * - Tipo de verificação padrão para nomes
         * ****************************************
         * @param {string} $subject
         * Entrada para verificação
         * @return {true} (A string é valida)
         * ****************************************
         */
        public function nameCheck($subject) {
            if (preg_match('/^([a-zA-Z À-ú]+)$/i', $subject)) {
                return (true);
            }
        }
    
        /**
         * ****************************************
         * Verificar se uma string possui somente
         *  caracteres para uma url válida
         * ****************************************
         * @param {string} $subject
         * Entrada para verificação
         * @return {true} (A string é valida)
         * @example :
         * - https://url/?entrada_get=algum-valor
         *   Retorna true por ser válido
         * - /algumacoisa
         *   Retorna true por ser válido
         * ****************************************
         */
        public function urlCheck($subject) {
            if (preg_match('/^([a-zA-Z0-9-_:\/?&=%]+)$/i', $subject)) {
                return (true);
            }
        }
    
        /**
         * ****************************************
         * Verificar se uma string possui somente 
         *  caracteres válidos para um endereço de
         *  e-mail.
         * ****************************************
         * @param {string} $subject
         * Entrada para verificação
         * @return {true} (A string é valida)
         * ****************************************
         */
        public function mailCheck($subject) {
            if (preg_match('/^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{3})$/', $subject)) {
                return (true);
            }
        }
    
        /**
         * ****************************************
         * Verificar se uma string é um tipo de
         *  telefone válido.
         * @example :
         * - +55 (99) 99999-9999
         * - 99 99999-8888
         * - 9999-9999
         * - 9999999999999
         *   Ambos números são válidos.
         * ****************************************
         * @param {string} $subject
         * Entrada para verificação
         * @return {true} (A string é valida)
         * ****************************************
         */
        public function checkPhone($subject) {
            if (preg_match('/^(?:(?:\+|00)?(55)\s?)?(?:\(?([1-9][0-9])\)?\s?)?(?:((?:9\d|[2-9])\d{3})\-?(\d{4}))$/', $subject)) {
                return (true);
            }
        }
    
        /**
         * ****************************************
         * Verificar se uma string é um tipo de
         *  CPF válido.
         * @example :
         * - 000.000000-00
         *   CPF é válido.
         * ****************************************
         * @param {string} $subject
         * Entrada para verificação
         * @return {true} (A string é valida)
         * ****************************************
         */
        public function checkCpf($subject) {
            if (preg_match('/^([0-9]{3}[\.][0-9]{3}[\.][0-9]{3}[-][0-9]{2})$/', $subject)) {
                return (true);
            }
        }
    
        /**
         * ****************************************
         * Verificar se uma string é um tipo de
         *  CNPJ válido.
         * @example :
         * - 00.000.000/0000-00
         *   CNPJ é válido.
         * ****************************************
         * @param {string} $subject
         * Entrada para verificação
         * @return {true} (A string é valida)
         * ****************************************
         */
        public function checkCnpj($subject) {
            if (preg_match('/^([0-9]{2}[\.][0-9]{3}[\.][0-9]{3}[\/][0-9]{4}[-][0-9]{2})$/', $subject)) {
                return (true);
            }
        }
    
        /**
         * ****************************************
         * Verificar se uma string é um tipo de
         *  CPF ou CNPJ válido.
         * @example :
         * - 000.000000-00
         * - 00000000000
         *   CPF é válido.
         * 
         * - 00.000.000/0000-00
         * - 00000000000000
         *   CNPJ é válido.
         * ****************************************
         * @param {string} $subject
         * Entrada para verificação
         * @return {true} (A string é valida)
         * ****************************************
         */
        public function checkCpfCnpj($subject) {
            if (preg_match('/^([0-9]{3}[\.]?[0-9]{3}[\.]?[0-9]{3}[-]?[0-9]{2})|([0-9]{2}[\.]?[0-9]{3}[\.]?[0-9]{3}[\/]?[0-9]{4}[-]?[0-9]{2})$/', $subject)) {
                return (true);
            }
        }
    }

     


  5. Qual a linguagem back-end?

     

    Em todo caso não vejo anomalia alguma, uma vez que são usuários distintos, logo a soma é o correto a acontecer.

     

    É possível prever...

    Como...?

    Supondo que seja em um submit, logo eu seja o usuário-A e vejo que usuário-B possui o saldo de 10.

    Ao submeter o formulário basta que a informação do saldo atual seja enviado junto a quantidade de saldo que vou anexar.

    Então basta que compare se o saldo atual enviado é do mesmo valor que o saldo que visualizei.

    Assim sendo vejo que usuário-B tem o saldo de 10 e envio 50 para ele, se o saldo atual dele não for 10 é porque foi alterado.

     

    No caso de uso em banco de dados SQL mesmo, existe um delay de micro segundos para registros serem manipulados, sendo impossível que 2 registros aconteça naquela exata fração de segundo.


  6. <!-- Usando expressão regular -->
    <input
        type="text"
        pattern="([0-9]+)"
        maxlength="15"
    />
    
    <!-- Com uso de máscara -->
    <input
        type="text"
        maxlength="15"
        onkeypress="mascara(this, inteiro)"
        onblur="clearTimeout()"
    />
    
    
    <script>
        var input, tecla;
    
        function mascara(i, t) {
            window.input = i;
            window.tecla = t;
            setTimeout('chave()', 1);
        }
    
        function chave() {
            window.input.value = window.tecla(window.input.value);
        }
    
        function inteiro(v) {
            v = v.replace(/\D/g, '');
            return v;
        }
    </script>

     


  7. Isso é um porre mesmo....

     

    Fiquei curioso enquanto a isso:

    Em 03/10/2019 at 15:47, dimaszikaa disse:

    limitei a tentativa de acessos no painel de controle para 3, sendo assim bloqueando acesso ao login por 15 minutos e o ip também.

    O que estaria utilizando para armazenar essas tentativas falhas? Cookie?

    Se é cookie nem adianta mesmo...

     

    A melhor forma que vejo é usar um código de verificação "captcha". Pois como a regra do mesmo é sempre um código aleatório nenhum programa é capaz de prever seu resultado.

     

    Enfim já passei por isso, minha alternativa foi utilizar mesmo o código Captcha no login. Mas toda vez que determinado IP erra o login armazenei a tentativa falha em uma tabela quando o mesmo IP chegue a três erros consecutivos a requisição o captcha aparecia sendo necessário.

    Em X reincidências aquele IP era bloqueado de acesso.

     

    Um ponto ruim dessa minha alternativa foi na camuflagem de IP ao qual alguns usuários que não tinham nada haver acabaram tendo seus IP's bloqueados. No entanto foi necessário devido a 1 ou mais pessoas de má fé querendo atrapalhar.

     

    Existem diversos captcha na web até aquele famoso do google "Eu não sou um robô" que poderia está implementando. É algo extremamente chato tanto para o administrador da aplicação quanto para os demais usuários, mas vital quando necessário.


  8. A melhor formar de fazer isso é:

    Ao criar o link você o identifica, pode ser com o próprio id da consulta.

    Então usando o javascript ao abrir a página você remove todos os classificados active dos links.

    Logo após ao abrir a página você busca o link que contenha aquele id da página e adiciona o classificador active a ele.

     

    Exemplo:

    Criando os links

    <?php
    foreach ($array as $v) {
        ?>
        <a href="<?= $v['link'] ?>" id="link-de-id-<?= $v['id']?>"><?= $v['texto_a_exibir']? class="exemplo"></a>
        <?php
    }

     

    Na página que foi aberta consultamos seu id na consulta e usamos jascript

    <script>
        var links = document.querySelectorAll('a.exemplo');
        for (var i = 0; i < links.length; i++) {
            links[i].className = 'exemplo';
        }
        document.getElementById('link-de-id-<?= $query['id'] ?>').classList.add('active');
    </script>

    Primeiramente removemos qualquer active que contenha em algum link

    Então como o id da página tem o mesmo id do link adicionamos o classificador no link


  9. 9 horas atrás, peterstefan disse:

    Olá, estou capturando o http_user_agent do usuario, mais ele ta vindo com tudo esse nome ai

     

    Sim só irá retornar esses dados, pois são os dados da máquina que acessou o servidor, para um filtro você deve usar essa informação para buscar o que realmente deseja.

     

    Para simplificar eu criei essa classe já há algum tempo que pode usar para obter a informação que deseja:

     

    Classe UserAgent.php

    Citar

    Cuidado ao dar Ctrl+C & Ctrl+V

    O fórum aqui usa jquey para reescrever dados em JSON o que buga alguns tipos de caracteres não imprimíveis.

    Caso copie e cole use um editor que é capaz de interpretar caracteres não legíveis para apagar-los antes de salvar o arquivo.

    <?php
    /**
     * ****************************************************
     * @Copyright (c) 2017, Spell Master.
     * @version 1.2 : 2018 Spell Master
     * ****************************************************
     * @Class: Retorna dados na máquina que está acessamdo
     *         o servidor.
     * ****************************************************
     * @log v1.2 : Adicionado método para obter o IP da 
     *             máquina.
     * ****************************************************
     **/
    
    class UserAgent {
    
        private $userData;
        private $userIP;
        private $setOS;
        private $setBrowser;
        private $osTrue = null;
        private $browserTrue = null;
    
        /** ************************************************
         * @Method: Define os dados e chama os métodos.
         * *************************************************/
        function __construct() {
            $filterServe = filter_input_array(INPUT_SERVER, FILTER_DEFAULT);
            $filterIp = filter_input_array(INPUT_SERVER, FILTER_VALIDATE_IP);
            $this->userData = $filterServe['HTTP_USER_AGENT'];
            $this->userIP = $filterIp['REMOTE_ADDR'];
            $this->checkOs();
            $this->checkBrowser();
        }
    
        /** ************************************************
         * @Method: Verifica o sistema operacional.
         * *************************************************/
        private function checkOs() {
            $os = ['/windows nt 10/i' => 'Windows 10', '/windows nt 6.3/i' => 'Windows 8.1', '/windows nt 6.2/i' => 'Windows 8', '/windows nt 6.1/i' => 'Windows 7', '/windows nt 6.0/i' => 'Windows Vista', '/windows nt 5.2/i' => 'Windows Server 2003/XP x64', '/windows nt 5.1/i' => 'Windows XP', '/windows xp/i' => 'Windows XP', '/windows nt 5.0/i' => 'Windows 2000', '/windows me/i' => 'Windows ME', '/win98/i' => 'Windows 98', '/win95/i' => 'Windows 95', '/win16/i' => 'Windows 3.11', '/macintosh|mac os x/i' => 'Mac OS X', '/mac_powerpc/i' => 'Mac OS 9', '/linux/i' => 'Linux', '/ubuntu/i' => 'Ubuntu', '/iphone/i' => 'iPhone', '/ipod/i' => 'iPod', '/ipad/i' => 'iPad', '/android/i' => 'Android', '/blackberry/i' => 'BlackBerry', '/webos/i' => 'Mobile'];
            foreach ($os as  $reg => $value) {
                if (preg_match($reg, $this->userData)) {
                    $this->setOS = (string) $value;
                    $this->osTrue = true;
                }
            }
        }
    
        /** ************************************************
         * @Method: Verifica o navegador.
         * *************************************************/
        private function checkBrowser() {
            $browser = ['/msie/i' => 'Internet Explorer', '/firefox/i' => 'Firefox', '/safari/i' => 'Safari', '/chrome/i' => 'Chrome', '/edge/i' => 'Edge', '/opera/i' => 'Opera', '/netscape/i' => 'Netscape', '/maxthon/i' => 'Maxthon', '/konqueror/i' => 'Konqueror', '/mobile/i' => 'Handheld Browser'];
            foreach ($browser as $reg => $value) {
                if (preg_match($reg, $this->userData)) {
                    $this->setBrowser = (string) $value;
                    $this->browserTrue = true;
                }
            }
        }
    
        /** ************************************************
         * @Method: Retorna os dados da máquina que está
         * acessando.
         * *************************************************/
        public function getUserMachine() {
            return $this->userData;
        }
    
        /** ************************************************
         * @Method: Retorna o sistema operacional da máquina
         * que está acessando.
         * *************************************************/
        public function getOs() {
            if (isset($this->osTrue)) {
                return $this->setOS;
            } else {
                return " ";
            }
        }
    
        /** ************************************************
         * @Method: Retorna o navegador da máquina que está
         * acessando.
         * *************************************************/
        public function getBrowser() {
            if (isset($this->browserTrue)) {
                return $this->setBrowser;
            } else {
                return " ";
            }
        }
    
        /** ************************************************
         * @Method: Obtem o endereço de IP da máquina que
         * está acessando.
         * *************************************************/
        public function requestIP() {
            return $this->userIP;
        }
    }

     

    Usando:

    <?php
    require_once('UserAgent.php');
    $ua = new UserAgent();
    
    echo("<p>O IP que acessou o servidor é: {$ua->requestIP()}</p>";
         . "<p>O Sistema operacional que acessou o servidor é: {$ua->getOs()}</p>";
         . "<p>O navegador que acessou o servidor é: {$ua->getBrowser()}</p>";
         . "<hr />";
         . "<p>Todos dados da máquina: {$ua->getUserMachine()}</p>");

     


  10. É muito simples.

    A função embaralho recebe como parâmetro velho porém nessa linha onde a função é anexada a um objeto.

    imagens = embaralho(imagens);

    A variável/objeto/constante em vermelho não foi criada, portando você está passando para a função um parâmetro indefinido, logo length que é um contador de índices não pode contar algo que não existe.

    Em todo caso suspeito que está tentando criar um objeto chamando uma função referenciando o próprio objeto como parâmetro, e isso não é possível de fazer....

     

    A propósito seu objeto deveria ser criado dentro do escopo da função assim:

    var objeto = { imagens: embaralho(dados) }

    Outra coisa que vi.

    Na função virar ela utiliza um array que não pertence a ela "viradas" essa função também dará erro nesse quesito.

     

    Provavelmente você pode ter deixado passar alguma coisa nos vídeos anteriores ou o autor da série irá abordar isso nos próximos, ou mesmo ele pode nem sabe o que está fazendo....

    E isso acontece muito no youtub 99% do conteúdo relacionado a programação lá é feito por leigos que não sabe bo$&!@ nenhuma heheheh.... Pode não ser o caso, mas é bom ficar atenta a isso.

     

    Se você commitar as imagens em seu repositório, farei um clone aqui e posso ajeitar para você.


  11. 18 horas atrás, ccnfrankbr disse:

    1. posso aplicar uma pseudo classe (exhover) e um pseudo elemento ( ex: selection ) para o mesmo elemento ( p, h1, etc..)

    Não. Você pode transcrever no CSS novamente com uma nova pseudo, ambos vão funcionar desde-que não conflitem entre sí ou re-defina(substitua) propriedades.

     

    18 horas atrás, ccnfrankbr disse:

    2. posso aplicar uma pseudo classe / elemento a um elemento que tenha uma classe específica (p,h1, etc..)

    ex: .classe p:: { }

    Sim.

    .classe p.paragrago_expessifico::


  12. Arquivos necessários:

    https://github.com/Spell-Master/sm-web/tree/master/javascript/AjaxRequest

     

    <script src="AjaxRequest.js" type="text/javascript"></script>
    <link href="AjaxRequest.css" rel="stylesheet" type="text/css"/>
    
    <div id="atualizar_A">
        <?php include('primeira_consulta.php') ?>
    </div>
    <div id="atualizar_B">
        <?php include('segunda_consulta.php') ?>
    </div>
    
    <button onclick="ajax.load('atualizar_A', 'primeira_consulta.php')">Atualizar a primeira</button>
    <button onclick="ajax.load('atualizar_B', 'asegunda_consulta.php')">Atualizar a segunda</button>
    
    <script>var ajax = new AjaxRequest();</script>

     

     

    Mas percebi que você faz uma referencia de consulta 

    Em 25/09/2019 at 06:46, RodolfoValentim disse:

    descontosacrescimoid=346381

     

    Então se for para passar essa informação para o arquivo:

    <script src="AjaxRequest.js" type="text/javascript"></script>
    <link href="AjaxRequest.css" rel="stylesheet" type="text/css"/>
    
    <div id="atualizar_A"></div>
    <div id="atualizar_B"></div>
    
    <button onclick="ajax.load('atualizar_A', 'primeira_consulta.php?informacao=123456')">Atualizar a primeira</button>
    <button onclick="ajax.load('atualizar_B', 'segunda_consulta.php?informacao=123456')">Atualizar a segunda</button>
    
    <script>
        var ajax = new AjaxRequest();
        ajax.load('atualizar_A', 'primeira_consulta.php?informacao=346381');
        ajax.load('atualizar_B', 'segunda_consulta.php?informacao=346381');
    </script>


    Nos arquivos basta executar a query de acordo com a informacao

    $info = isset($_GET['informacao']) ? $_GET['informacao'] : false;
    // Faça um limpeza de string em $info para evitar sql-inject só então jogue-a em sua consulta
    
    /* ****** */
    descontosacrescimoid={$info}

     

     

    Você poderá usar além do método load() do AjaxRequest os métodos send() ou pop()

     

     


  13. 1 hora atrás, PRWEB disse:

    Se marco ai como vou desmarcar?

    Nesse caso podemos usar sim checkbox e fazer através de script o mesmo que o browser faz com o radio, a diferença é que não atacamos o input atual.

     

    <input type="checkbox" name="exemplo_A" value="1" class="exemplo" />
    <input type="checkbox" name="exemplo_B" value="2" class="exemplo" />
    <input type="checkbox" name="exemplo_C" value="3" class="exemplo" />
    
    <script>
        var checkBox = document.getElementsByClassName('exemplo'), i;
        // document.getElementsByTagName('exemplo'); /* Use isso se quiser deixar todos checkbox com o mesmo nome */
    
        for (i = 0; i < checkBox.length; i++) {
            checkBox[i].addEventListener('change', marcarCaixa, false);
        }
    
        function marcarCaixa(e) {
            for (i = 0; i < checkBox.length; i++) {
                if (checkBox[i] !== e.target) {
                    checkBox[i].checked = null;
                }
            }
        }
    </script>

     


  14. 7 horas atrás, arielson disse:

    Eu coloco a sua função no logout?

    Sim, você chama essa função quando for deslogar.... Lembre-se de encerrar/destruir as cessões também.

     

    Só que se você chegou a esse ponto de não saber se está criando cookies ou sessions, acho melhor rever todos seus arquivos e estudar a respeito desses recursos de armazenamento.

    https://www.php.net/manual/en/book.session.php

    https://www.php.net/manual/en/features.cookies.php

     


  15. Não entendi isso:

    4 horas atrás, arielson disse:

    $login_cookie = $_COOKIE['login'];

     

    Em nenhum código apresentado por você vi que criou algum cookie.

     

    A única cessão que consegui identificar que é criada seria essa:

    4 horas atrás, arielson disse:

    $_SESSION['nome'] = $email_bd['nome'];

     

    É só em logout.php destruir o índice dela:

    unset($_SESSION['none']);

    Ou se não saber exatamente qual sessão é você pode destruir toda super-global $_SESSION

    unset($_SESSION);

     

     

    Caso esteja criando cookies e não saiba qual preparei uma função aqui que pode matar todos os cookies mesmo sem saber quais são:

    function matar_cookies() {
        if (isset($_SERVER['HTTP_COOKIE'])) {
            $cookies = explode(';', $_SERVER['HTTP_COOKIE']);
            foreach ($cookies as $cookie) {
                $parts = explode('=', $cookie);
                $name = trim($parts[0]);
                setcookie($name, '', time() - 1000);
                setcookie($name, '', time() - 1000, '/');
            }
        }
    }

     


  16. @Sapinn

    Veja... O que você tem de fazer é criar o formulário de requisição (Isso acredito que já tenha feito).

    Enfim no seu form deve constar um input ao qual o usuário terá que digitar seu e-mail, 

    ao submeter os dados faça a consulta no banco de dados para encontrar o usuário que contenha esse e-mail fornecido e trazer os dados dele.

    Se existir crie uma função que modifique a senha dele (caso use algum tipo de criptografia na senha como password_hash), e faça o updade da senha do usuário. Caso não apenas armazene a senha dele uma variável por exemplo.

     

    Então basta enviar um e-mail usando a classe PHPMailer mesmo para ele como a senha.

     

    Você pode encontrar todo guia de como usar PHPMailer, na própria documentação no gitHub:

    https://github.com/PHPMailer/PHPMailer/wiki/Tutorial

     

    Exemplo de uma função para gerar uma senha automaticamente.

    Caso use criptografia na senha:

    <?php
    // Essa função irá criar uma senha de 10 caracteres aleatórios
    function criarSenha() {
      $senha = "";
      $caracteres = str_split('0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVxXyYwWzZ0123456789');
      for ($i = 0; $i < 10; $i++) {
        $senha .= $caracteres[array_rand($caracteres)];
      }
      return ($senha);
    }
    
    $senha_para_email = criarSenha(); // Isso você envia para o e-mail do usuário 
    $senha_para_db = password_hash($senha_para_email, PASSWORD_DEFAULT); // isso você salva no banco de dados

     


  17. 3 horas atrás, Luciano Marques disse:

    Estou tendo problemas para impedir acesso simultâneo no meu projeto.

    O que quis dizer com isso?

    Se o usuário já logou você deve ter armazenado esse login via SESSION ou COOKIE.

    Portanto não seria o login simultâneo e sim persistência nele.

     

    Digamos que seja login em diferentes tipos de browser......

    Bem nesse caso desconheço uma forma coerente de realizar tal ação.

    E olha que pesquisei, tente milhares de coisas, mas nada seria eficiente nesse termo.

    Aliás nunca vi isso sendo empregado em local algum.

    Acredito que seja impossível fazer.


  18. Isso significa concatenar....

    Quando vamos transcrever uma string ao qual nela pode entrar alguma variável ou ou expressão podemos usar desse recurso.

     

    print "Uma string";

    Ou seja será mostrado Uma string

    Mas se temos um texto ou qualquer outra coisa que não é parte da string e queremos anexar poderemos dizer:

    $a = "Mais alguma coisa";

    print "Uma string " . $a . " E outra coisa também";

    O que será mostrado Uma string Mais alguma coisa E outra coisa também

     

     

×

Informação importante

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