WedX - журнал о программировании и компьютерных науках

Настройка файла cookie PHP, но не распознавание

Потерпите меня. С годами я начал понимать, что я ужасно умею объясняться.

У меня есть сайт со страницей, полной ссылок на скачивание Spotify. При первом посещении людям необходимо заполнить контактную форму, чтобы получить свою электронную почту, прежде чем они смогут скачать. После этого они могут загружать столько плейлистов, сколько захотят, навсегда.

  1. Когда они нажимают на ссылку в первый раз, всплывающее окно открывает форму.
  2. После его заполнения форма перенаправляет их на новый URL-адрес, который устанавливает файл cookie (../playlists-for-events/?download=true). Он также устанавливает переменную, чтобы страницу не нужно было перезагружать для загрузки.
  3. Теперь, когда файл cookie установлен, списки воспроизведения можно загружать при любом посещении страницы (../списки воспроизведения для событий).

Файл 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';
} ?>

И PHP, который в основном говорит: «Если файл cookie не установлен, откройте всплывающее окно, иначе начните загрузку».

<?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 } ?>

Помощь?


  • Так что точно в вашем PHP не работает? Просто сказать, что это не работает, не очень конкретно или полезно. 14.03.2018
  • Файл cookie устанавливается, но продолжает перенаправлять на всплывающее окно, а не на загрузку. 14.03.2018

Ответы:


1

Я проверил ваш код, и он работает нормально, но файл 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.";
}
14.03.2018
  • Но разве установка переменной на этой странице не означает, что мне не нужно перезагружать страницу? $_COOKIE['spotify-download'] = 'allow'; 14.03.2018
  • Ах, да, вы правы. Вам нужно установить переменную cookie, если вам нужен немедленный доступ к ней. Я обновил свой пример. 16.03.2018
  • Кажется, он работает в Firefox, но не в Chrome? Файл cookie установлен в обоих местах, но я получаю сообщение об отказе в доступе при перезагрузке страницы в Chrome. 21.03.2018
  • Обновление Очевидно, это проблема с кэшированием хоста stackoverflow.com/questions/15302050/ 21.03.2018
  • Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]