2017-02-14 15 views
1

Я работаю над новым продуктом/веб-сайтом, где домашняя страница (а не подстраницы) должна быть закрыта для посетителей до запуска веб-сайта. Запуск-дата должна быть считаны из URL, как это:Сделать Cookie expire согласно URL-переменной с помощью PHP

website.com/some-subpage?launch=0421 

В этом примере домашняя страница должна быть доступна для посетителей с 21-е (21) апреля (04).

Для этого я хочу сделать это, если кто-то посещает «какую-субстраницу» (или любую другую субстраницу, не имеет значения), печенье должно быть установлено так:

  • Cookie-Name: Launch
  • Cookie-Value: 0421 истечения
  • Cookie: при запуске, так что в этом случае 21th апреля

Вот то, что я до сих пор:

<?php 
if ($_GET['launch'] != "null") { 
date_default_timezone_set('Europe/Berlin'); 
$launchdate = $_GET['launch']; 

$launchdatenew->format('*********'); // Here I probably need to convert the "0421" to a readable time, but I dont know how 
// or probably using this version? 
$launchdatenew = date_format(date_create_from_format('m d', $launchdate), '*********'); // Here I probably need to convert the "0421" to a readable time, but I dont know how 

setcookie("Launch", $launchdate, $launchdatenew, "/"); // The Cookie-Name should be "Launch", the value "0421", and it should expire when the launch starts 

} ?> 

Не могли бы вы помочь мне в этом? Я не знаю, как преобразовать «0421» в новый формат, который может быть установлен как дата истечения срока действия файла cookie. К сожалению, мои PHP-навыки почти нулевые.

спасибо! Bye, Имре

+0

Вы получаете ошибки? Что не работает? Очевидная вещь, которая выпрыгивает здесь, - это ваши надежные данные о земельных данных пользователя '$ _GET ['launch'];' и затем хранить это на земле пользователя тоже. – ficuscr

+0

Нет, я еще не тестировал его, так как я уверен, что он не будет работать (я не знаю, как преобразовать «0421» в новый формат, который может быть установлен как дата истечения срока действия cookie. проблема, что пользователи могли бы манипулировать им - они не будут. – Imre

+0

Они будут. Никогда не доверяйте им. – ficuscr

ответ

1

Я покажу вам то, как установить expire на этой основе куки от даты в $launch.

Предполагая, что всегда будет в формате «ММДД», то с некоторыми простыми строками ...

$launchDateStr = '0421'; 

$launchTime = mktime(0, 0, 0, substr($launchDateStr, 0, 2), substr($launchDateStr, 2)); 

$ttl = $launchTime - time(); //just an example... find seconds between now and launch 

setcookie("launch", $launchDateStr, $launchTime, "/"); 

предостережений ... это игнорирует год. Вы не должны доверять пользовательским данным. Все это может быть подделано.

+0

Спасибо, ficuscr, это помогает мне дальше! Как рассчитать секунды между теперь и $ launchTime? Тот факт, что это игнорирует год, не является проблемой Спасибо за подсказку, не доверяющую пользовательским данным - но как только они нажмут на ссылку с «запуском» -вариваемым, cookie будет установлен - и существующие файлы cookie не будут перезаписаны (я сделаю это с IF), поэтому изменение переменная запуска и посещение этой новой ссылки не будут делать ничего. Кстати, не следует ли «$ ttl» быть датой истечения срока? – Imre

+0

* «Как рассчитать секунды между теперь и $ launchTime?» * См. пример TTL. * " Должна ли дата «$ ttl» истекать? »* Нет. Он хочет отметку unix для этого времени, а не оставшиеся секунды. – ficuscr

+0

И зачем нам нужна «$ ttl»? После его расчета, он никогда не использовался, не так ли? – Imre