PHP cookie 设置但无法识别

PHP cookie setting but not recognizing

多多包涵。这些年来,我开始明白我很不善于解释自己。

我有一个网站,页面上全是 Spotify 下载 link。在第一次访问时,人们需要填写联系表格以获取他们的电子邮件,然后才能下载。之后,他们可以永远下载任意数量的播放列表。

  1. 当他们第一次点击 link 时,弹出窗口 window 打开表单。
  2. 填写完成后,表单会将他们重定向到设置 cookie 的新 URL (../playlists-for-events/?download=true)。它还设置了一个变量,以便无需重新加载页面即可下载。
  3. 现在设置了 cookie,可以在访问页面 (../playlists-for-events) 时下载播放列表。

Cookie 设置正常,但我写的 PHP 不起作用。

饼干

<?php $cookie_name = 'spotify-download';
$cookie_value = 'allow';
$date_of_expiry = time() + (10 * 365 * 24 * 60 * 60);
if(isset($_GET['download']) && $_GET['download'] == 'true'){ 
    setcookie($cookie_name, $cookie_value, $date_of_expiry, '/',null,false,true);
    $_COOKIE['spotify-download'] = 'allow';
} ?>

和基本上说"if the cookie isn't set, open the popup, else, start the download"

的PHP
<?php if(!isset($_COOKIE['spotify-download'])) { ?>
    <script type="text/javascript">function zforms_open_window(...)></script><a></a>
<?php } else { ?>
    <a href="<?php echo $link; ?>" target="_blank"></a>
<?php } ?>

帮忙?

我已经测试了你的代码,它工作正常,但在设置之前无法读取 cookie。即用户重定向到 /?download=true 以设置 cookie,然后它需要重新加载页面或转到现在可以读取 cookie 的其他地方。

<?php
$cookie_name = 'spotify-download';
$cookie_value = 'allow';
$date_of_expiry = time() + (10 * 365 * 24 * 60 * 60);

if( isset( $_GET['download'] ) && $_GET['download'] === 'true' ){
    setcookie($cookie_name, $cookie_value, $date_of_expiry);
    $_COOKIE[$cookie_name] = $cookie_value;
}

if( isset( $_COOKIE[$cookie_name] ) && $_COOKIE[$cookie_name] === $cookie_value) {
    echo "You have access!";
} else {
    echo "Access denied.";
}