web-dev-qa-db-fra.com

Comment puis-je tester si un cookie est défini à l'aide de php et si ce n'est pas le cas, ne faites rien

J'ai essayé

 $cookie = $_COOKIE['cookie'];

si le cookie n'est pas défini, cela me donnera une erreur 

PHP ERROR
Undefined index: cookie

Comment pourrais-je l'empêcher de me donner une variable vide> 

15
Aaron

Utilisez isset pour voir si le cookie existe.

if(isset($_COOKIE['cookie'])){
    $cookie = $_COOKIE['cookie'];
}
else{
    // Cookie is not set
}
41
Rocket Hazmat

Vous pouvez utiliser array_key_exists à cette fin comme suit:

$cookie = array_key_exists('cookie', $_COOKIE) ? $_COOKIE['cookie'] : null;
15
John Parker

En fonction de vos besoins.

// If not set, $cookie = NULL;
if (isset($_COOKIE['cookie'])) { $cookie = $_COOKIE['cookie']; }

ou

// If not set, $cookie = '';
$cookie = (isset($_COOKIE['cookie'])) ? $_COOKIE['cookie'] : '';

ou 

// If not set, $cookie = false;
$cookie = (isset($_COOKIE['cookie'])) ? $_COOKIE['cookie'] : false;

Références:

6
Shoe

Essaye ça:

 $cookie = isset($_COOKIE['cookie'])?$_COOKIE['cookie']:'';
 //checks if there is a cookie, if not then an empty string
4
Neal

Exemple non mentionné dans les réponses: supposons que vous définissiez un cookie pendant 60 secondes si les conditions sont réunies:

if ($some_condition == $met_condition) {
    setcookie('cookie', 'some_value', time()+ 60, "/","", false);
}

Techniquement, nous devons vérifier qu’il est réglé ET qu’il n’est pas expiré ou il émettra des avertissements, etc.:

$cookie = ''; //or null if you prefer
if (array_key_exists('cookie', $_COOKIE) && isset($_COOKIE['cookie'])) {
    $cookie = $_COOKIE['cookie'];
}

Vous voudriez vérifier de manière à ce que les cookies expirés ne soient pas utilisés et c'est défini, l'exemple ci-dessus pourrait évidemment ne pas toujours définir le cookie, etc. Array_key_exists consiste principalement à empêcher les avertissements d’être affichés dans les journaux, mais cela ne fonctionnerait pas.

0
Mike Q