Accept cookie button

Asked

Viewed 2,442 times

1

Although searching about it I still could not solve. I created an acceptance term of cookie that appears in the Home on top of the header.

The button when clicking it is closed normally, however, what I am unable to do, is that the user when browsing the site and voting to home the term of cookie which has already been accepted. Any solution?

Code:

<div class="termo-de-cookie">
        <p>Com o objetivo de fornecer um serviço mais personalizado e ágil, armazenamos informações sobre como você usa este site. Esse processo é realizado por meio de pequenos arquivos de textos chamados cookies. Eles contêm pequenas quantidades de informação e são baixados para o seu computador ou outro dispositivo por um servidor deste site. O seu navegador, em seguida, envia esses cookies de volta a cada nova visita. Desta forma, podemos reconhecer e lembrar de suas preferências. Você pode encontrar informações mais detalhadas sobre cookies e como funcionam <a href="/termo-de-cookie/">em nossa página.</a></p>
        <div class="aceitecookie" id="closebtn" onclick="this.parentElement.style.display='none'">Confirmar e Fechar</div>
      </div>
  • You’re using what back language?

  • I’m only using PHP back, but I only use it for form. Since it’s an institutional website, I only use Js, Html and Css.

  • I’m not seeing the cookie part in your code, there’s only one this.parentElement.style.display='none', This just hides the div

1 answer

1


I managed to do it that way

/front javascript e jquery

    <div id="termo-de-cookie" style="display: none"></div>
<script
    src="https://code.jquery.com/jquery-3.4.1.js"
    integrity="sha256-WpOohJOqMqqyKL9FccASB9O0KwACQJpFTUBLTYOVvVU="
    crossorigin="anonymous"></script>
<script>


    //pegar o IP
    function getIp(callback)
    {
        function response(s)
        {
            callback(window.userip);

            s.onload = s.onerror = null;
            document.body.removeChild(s);
        }

        function trigger()
        {
            window.userip = false;

            var s = document.createElement("script");
            s.async = true;
            s.onload = function() {
                response(s);
            };
            s.onerror = function() {
                response(s);
            };

            s.src = "https://l2.io/ip.js?var=userip";
            document.body.appendChild(s);
        }

        if (/^(interactive|complete)$/i.test(document.readyState)) {
            trigger();
        } else {
            document.addEventListener('DOMContentLoaded', trigger);
        }
    }
    var ipN;
    getIp(function (ip) {
        window.ipN=ip;
        verificar()
    });
    //verificar se esta apagado
    function verificar(){
        $.post('ver_conf.php?ip='+ipN,
            function (data) {
                if (data.status === 'erro' || data.status === 'erro') {
                    $('#termo-de-cookie').empty();
                    $('#termo-de-cookie').append('<p>Com o objetivo de fornecer um serviço mais personalizado e ágil, armazenamos informações sobre como você usa este site. Esse processo é realizado por meio de pequenos arquivos de textos chamados cookies. Eles contêm pequenas quantidades de informação e são baixados para o seu computador ou outro dispositivo por um servidor deste site. O seu navegador, em seguida, envia esses cookies de volta a cada nova visita. Desta forma, podemos reconhecer e lembrar de suas preferências. Você pode encontrar informações mais detalhadas sobre cookies e como funcionam <a href="/termo-de-cookie/">em nossa página.</a></p>');
                    $('#termo-de-cookie').append('<div class="aceitecookie" id="closebtn" >Confirmar e Fechar</div>');
                    $('#termo-de-cookie').show();
                    //mensagem apagar
                    $('#closebtn').click(function () {
                        $.post('ver_conf.php?ip='+ipN+'&confirmar=1',
                            function (data) {
                                if (data.status === 'sucesso' || data.status === 'Sucesso') {
                                    $('#termo-de-cookie').hide();
                                }
                            });
                    });
                }
            });
    }

</script>

back in PHP:

 <?php
header('Content-Type: application/json');
if (isset($_GET['ip'])) {
    $ip = $_GET['ip'];
    if (isset($_GET['confirmar'])) {
        $ip=$_GET['ip'];
        setcookie($ip, 'confimado');
        echo json_encode(['status'=>'sucesso']);
    } else {
        $ip=preg_replace('@\.@is','_',$ip);
        if (isset($_COOKIE[$ip]) && $_COOKIE[$ip] == 'confimado') {
            echo json_encode(['status' => 'sucesso']);
        } else {
            echo json_encode(['status' => 'erro']);
        }
    }
}
  • 1

    If you’re using PHP you don’t even need this javascript there, take the IP directly via PHP. Now about using IP to validate who approved this personally I find a problem, many internet providers have dynamic ip, so the approval has to be something in the user’s browser, ie a "cookie" (or other storage medium) with long life time and that is renewed every new access, this clear only after the user confirm. Another thing, applying jQuery to something so simple is waste, you can use a simple JS (long live Vanilla.js).

Browser other questions tagged

You are not signed in. Login or sign up in order to post.