setcookie does not work

0

Hello, I have the following php code that creates a cookie so when I do echo this one it does not print anything on the screen and the search result in the DB is fine because it says that the $ result has an array and so it goes in if .

 $nomenecessario=$_GET['ref'];
$count=$_POST['nivelacessos'];
 if ($conn->query("UPDATE subditos SET niveis_acesso_id='$count' WHERE 
    id='$nomenecessario'") === TRUE){ 
 //Buscar na tabela usuario o usuário que corresponde com os dados digitado 
   no formulário
    $result_usuario = "SELECT * FROM subditos WHERE id='$nomenecessario' LIMIT 1";
    $resultado_usuario = mysqli_query($conn, $result_usuario);
    $resultado = mysqli_fetch_assoc($resultado_usuario);

    //Encontrado um usuario na tabela usuário com os mesmos dados digitado no formulário
    if(isset($resultado)){
        $cookie_email = $resultado['email'];
        setcookie($cookie_emailu, $cookie_email, time() + (86400 * 30), "/"); // 86400 = 1 day


           echo $_COOKIE[$cookie_emailu];
            $rer=0;
      //   echo "<script>   setTimeout(window.location='../',0);</script>"; 



}
}
    
asked by anonymous 25.12.2017 / 22:18

1 answer

1

Nothing like a minimal and minimal example. Looking in the php documentation has two major issues that can happen. Something will be printed before the call of setcookie() , causing the call to the function to return false . Or it may be that the cookie created is limited to a specific subdirectory (the fourth parameter of the setcookie() function is to indicate in which directories the cookie will be visible). Starting from this two problems create this folder structure to exemplify:

/(raiz)
    index.php
    DiretorioA
        a.php
    DiretorioB
        b.php

The index.php file has the following content:

<?php
//Diretorio raiz '/index.php'

if(!isset($_COOKIE['cookie_na_raiz'])){
    $status = setcookie("cookie_na_raiz", 
    'Este cookie foi criado na raiz do site', time()+3600);

    if($status){
    echo 'Cookie criado com sucesso';
    }else{
        echo 'Erro ao criar cookie';
    }
}

var_dump($_COOKIE);

Content of a.php :

<?php
//Diretorio a '/DiretorioA/a.php'

if(!isset($_COOKIE['cookie_na_pasta_a'])){
    $status = setcookie("cookie_na_pasta_a", 
    'Este cookie foi criado na pasta a', time()+3600, '/');

    if($status){
    echo 'Cookie criado com sucesso';
    }else{
        echo 'Erro ao criar cookie';
    }
}

var_dump($_COOKIE);

And lastly content of b.php :

<?php
//Diretorio b '/DiretorioB/b.php'

if(!isset($_COOKIE['cookie_na_pasta_b'])){
    $status = setcookie("cookie_na_pasta_b", 
    'Este cookie foi criado na pasta b', time()+3600);

    if($status){
    echo 'Cookie criado com sucesso';
    }else{
        echo 'Erro ao criar cookie';
    }
}

var_dump($_COOKIE);

Run each of the files (no matter what the sequence) just to create the cookies.

When you access the index.php file (after following the above step) it will be printed:

'cookie_na_raiz' => string 'Este cookie foi criado na raiz do site' (length=38)
  'cookie_na_pasta_a' => string 'Este cookie foi criado na pasta a' (length=33)

Accessing the a.php file the second time will print:

'cookie_na_raiz' => string 'Este cookie foi criado na raiz do site' (length=38)
  'cookie_na_pasta_a' => string 'Este cookie foi criado na pasta a' (length=33)

Finally, when you access the b.php file it will be printed:

'cookie_na_raiz' => string 'Este cookie foi criado na raiz do site' (length=38)
      'cookie_na_pasta_a' => string 'Este cookie foi criado na pasta a' (length=33)
'cookie_na_pasta_b' => string 'Este cookie foi criado na pasta b' (length=33)

This shows the visibility difference according to the domain where the cookie was created. Reproduce this example and one of the two situations must be happening in your code.

    
26.12.2017 / 03:44