Согласно определению $_REQUEST
в ассоциативном массиве, который по умолчанию содержит содержимое $_GET
, $_POST
и $_COOKIE
.
Другими словами, ваш $_GET['language']
перезаписывается на $_COOKIE['language']
, в результате чего $_REQUEST['language']
равно $_COOKIE['language']
.
Если вы замените $_REQUEST
на $_GET
в своем коде, этобудет работать так, как вы ожидаете:
<?php
if (isset($_GET['language'])) {
$language = $_GET['language'];
setcookie('language', $language, time()+3600);
// setcookie() doesn't update $_COOKIE
$_COOKIE['language'] = $language;
}
?>
<title>Cookie language</title>
<?php echo $_COOKIE['language']; ?>
<ul>
<li><a href="delete.php?language=en">en</a></li>
<li><a href="delete.php?language=de">de</a></li>
<li><a href="delete.php?language=es">es</a></li>
</ul>