Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Cookies v JS se nedaří načíst v PHP scriptu

Aktivity
Avatar
gorri
Člen
Avatar
gorri:2.2.2021 10:30

Zdravím a prosím o radu.
Nějakou dobu se pokouším spustit script, který vytvoří (pokud je podmínka v JS splněna) cookies (také v JS) a následně na to má vyhodnotit script, který je v PHP. PHP script má v sobě napsáno, aby zkontroloval hodnoty cookies (vždy konkrétní cookies), ale PHP script mi přes print_r($_COOKIE) ukazuje, že cookies neexistují. Dokázal by mi někdo poradit, kde dělám chybu?
Jen pro info. S JS se pořád učím :-D
Celý script vypadá následovně:
JS

<script>
function cheuser() {
    if(document.getElementById("userw").value !== '')
    {
        cookies.set('usn', document.getElementById("userw").value);
        $(document).ready(function(){
        $(".checkuser").click(function(){
          $("#vuse").load("process/check.php");
        });
      });
    }
    else
    {
        document.getElementById("alns").innerHTML = "Napište e-mailovou adresu";
    }
}
</script>

Formulář

<div id="chuser" class="dnone">
            <div id="vuse"></div>
            <p class="alert dnone" id="alns"></p>
            <label for="userw">Napište e-mailovou adresu<span>* Povinné</span></label>
            <input type="text" name="userw" id="userw" placeholder="Napište e-mailovou adresu" title="Napište e-mailovou adresu" >

            <a id="utrcl" onclick="cheuser()" class="checkuser" title="Pokračovat">Pokračovat</a>
        </div>

PHP script

ini_set("session.use_only_cookies", true);
ini_set('display_errors', 0);
session_start();
header('Content-Type: text/html; charset=UTF-8');
mb_internal_encoding("UTF-8");
date_default_timezone_set("Europe/Prague");
include ('../../connect.php');
include ('../../global.php');
if(validate_email($_COOKIE['usn']))
{
    if(!Db::querySingle('SELECT * FROM user WHERE mail_addr=?', $_COOKIE['usn']))
    {
        ?>
    <p class="alert">Uživatel nenalezen.</p>
    <a class="nst" onclick="startreg()" title="Přejít k registraci">Registrovat</a>
    <?php
    }
    else
    {
        ?>
    <script>
        document.getElementById("chuser").classList.add("dnone");
        document.getElementById("gamestr").classList.remove("dnone");
    </script>
    <?php
    }
}
else
{
    ?>
    <p class="alert">Toto není e-mailová adresa!</p>
    <?php
}

Budu moc rád za rady.
Všem děkuji :-)

Zkusil jsem: Google, stackoverflow, w3school

Chci docílit: Rozjet script bez nutnosti refresh stránky.

Odpovědět
2.2.2021 10:30
Když vím, tak poradím. Nikdo neví všechno :-)
Avatar
Samuel Hél
Tvůrce
Avatar
Samuel Hél:2.2.2021 12:47

Koukni na lekci datových úložišť v JS. Je tam popsáno, jak se cookies vytvářejí atd.
Doporučuji si při psaní JavaScriptu otevírat v prohlížeči konzoli, která ti zahlásí chyby. Např. máš chybu na tomto řádku:

cookies.set('usn', document.getElementById("userw").value);

kde proměnná cookies není definována. Pokud neumíš konzoli v JS používat, píše se o tom také zajímavý kurz o debuggingu

 
Nahoru Odpovědět
2.2.2021 12:47
Avatar
gorri
Člen
Avatar
gorri:2.2.2021 13:42

Mě se cookies vytvoří. Mám script, který definuje cookie.set. Cookies se vytvoří (to vidím v konzoli) ale v PHP pokud neudělám refresh, tak mi print_r($_COOKIE) řekne NULL. Po refresh stránky cookies existují a vypíše mi je i s obsahem. Snažím se jen jen zobrazit v PHP scriptu, který je zavolany.

Nahoru Odpovědět
2.2.2021 13:42
Když vím, tak poradím. Nikdo neví všechno :-)
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.